Communications of the ACM · 1971 · 297 citations · 15 references
ComputingComputer ScienceFormal MethodsProgramming LanguagesTheory Of ComputationAbstract Syntax TreesFunctional ProgrammingMathematical InductionRecursion TheorySoftware ConstructionTheorem ProvingAutomated Program SynthesisInduction On TreesInductive Theorem ProvingMathematical Induction ProofsPrinciple Of Mathematical InductionProgram SynthesisRecursionRecursive Functions
The paper outlines a theorem‑proving approach to automatic program synthesis, illustrating it with automatic construction of recursive and iterative programs over natural numbers, lists, and trees. The method constructs programs by proving a theorem induced from specifications and extracting the program from the proof, using mathematical induction to handle loops or recursion, and examining how different induction rules affect the resulting program form. Applying the technique transforms recursively defined functions into iterative programs, often yielding major efficiency gains.
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.
15
Towards a Mathematical Science of Computation.
John McCarthy · 1962 · 454 citations
Proving Properties of Programs by Structural Induction
R. M. Burstall · The Computer Journal · 1969 · 327 citations
James C. King · IFIP Congress · 1970 · 209 citations
Introduction to Mathematical Logic.
Trevor Evans, Elliott Mendelson · American Mathematical Monthly · 1966 · 187 citations