The synthesis of structure-changing programs

  • Authors:
  • Zohar Manna;Richard Waldinger

  • Affiliations:
  • -;-

  • Venue:
  • ICSE '78 Proceedings of the 3rd international conference on Software engineering
  • Year:
  • 1978

Quantified Score

Hi-index 0.00

Visualization

Abstract

Deductive techniques are presented for deriving programs systematically from given specifications. The specifications express the purpose of the desired program without giving any hint of the algorithm to be employed. The desired program is intended to achieve this purpose by means of such low-level primitives as assignment statements, the conditional statements, and recursion. The basic approach is to transform the specifications repeatedly according to certain rules, until a satisfactory program is produced. The rules are guided by a number of strategic controls. Many of the transformation rules represent knowledge about the program's subject domain (e.g., numbers, lists, sets); some represent the meaning of the constructs of the specification language and the target programming language; and a few rules represent basic programming principles. The weakest-precondition operator and the concept of protection are employed to construct programs that must achieve more than one condition simultaneously. Our previous work has centered on the synthesis of structure-maintaining programs, which produce an output without altering the value of any variable or changing the configuration of any data structure. Here, we extend our previous techniques to permit the construction of structure-changing programs, which can reset the values of variables, change the contents of an array, and alter the structure of a list or other data object.