Toward automatic program synthesis
- 1 March 1971
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in Communications of the ACM
- Vol. 14 (3) , 151-165
- https://doi.org/10.1145/362566.362568
Abstract
An elementary outline of the theorem-proving approach to automatic program synthesis is given, without dwelling on technical details. The method is illustrated by the automatic construction of both recursive and iterative programs operating on natural numbers, lists, and trees.In order to construct a program satisfying certain specifications, a theorem induced by those specifications is proved, and the desired program is extracted from the proof. The same technique is applied to transform recursively defined functions into iterative programs, frequently with a major gain in efficiency.It is emphasized that in order to construct a program with loops or with recursion, the principle of mathematical induction must be applied. The relation between the version of the induction rule used and the form of the program constructed is explored in some detail.Keywords
This publication has 11 references indexed in Scilit:
- Formalization of Properties of Functional ProgramsJournal of the ACM, 1970
- An interpretation oriented theorem prover over integersPublished by Association for Computing Machinery (ACM) ,1970
- Translating recursion equations into flow chartsPublished by Association for Computing Machinery (ACM) ,1970
- The correctness of programsJournal of Computer and System Sciences, 1969
- Application of Theorem Proving to Problem SolvingPublished by Defense Technical Information Center (DTIC) ,1969
- Proving Properties of Programs by Structural InductionThe Computer Journal, 1969
- Assigning meanings to programsPublished by American Mathematical Society (AMS) ,1967
- Experiments with a deductive question-answering programCommunications of the ACM, 1965
- A Machine-Oriented Logic Based on the Resolution PrincipleJournal of the ACM, 1965
- Experiments with a Heuristic CompilerJournal of the ACM, 1963