Automatic synthesis of recursive programs as proof procedures
The book is a reprint of the author's PhD thesis. It is devoted to a particular problem in the area of proving mathematical theorems by means of a computer. There are, however, also applications in other areas, for example the automated synthesis of algorithms and computer programs, or the automated generated of recursive plans from inductive action specifications. The particular problem the book is concerned with the following: Given is the recursive definition of some mathematical objects (data structures), for example natural numbers, lists or trees, together with definitions of functions and predicates operating on these data structures and some properties of these functions and predicates. All this is formulated in first order predicate logic (actually a many sorted version of predicate logic.) Now we want to prove a theorem of the kind \(\forall x_ 1,\dots,x_ n \exists y \Phi(x_ 1,\dots,x_ n,y)\) from these specifications. In a program synthesis application, the \(x_ i\) would be the input variables and \(y\) would be the output variable. The ``mathematical way to prove this theorem would be to guess a function \(f(x_ 1,\dots,x_ n)\) and prove the theorem \(\forall x_ 1,\dots,x_ n \Phi(x_ 1,\dots,x_ n,f(x_ 1,\dots,x_ n))\) with mathematical induction. Semi automated procedures as for example Boyer and Moores' inductive theorem prover support only the verification part, i.e. the user has to come up with a definition for \(f\). More elaborate methods like Manna and Waldinger's program synthesis method give concrete recipes for finding candidates for \(f\). They are, however, not yet in a state where the recipe can be applied fully automatically. The author describes a method for solving this problem fully automatically. The procedure systematically manipulates the definition of the data structures and the theorem \(\Phi\) by means of heuristically controlled applications of transformation rules until a definition of \(f\) is obtained. This is then, also automatically, verified by an inductive theorem prover. Since the problem is known to be incomplete, i.e. there can be no algorithm that is guaranteed to come up with a solution when there is one, the proposed method must be partial. Nevertheless, it has been implemented and it performs well on nontrivial examples. Listed examples are the completeness proof for a propositional theorem prover, the synthesis of the reverse function for lists, the synthesis of a sorting function and the synthesis of a function for computing integer quotient and remainder.
- Using computer algebra techniques for the specification, verification and synthesis of recursive programs
- Automatic synthesis of typed -programs on term algebras
- Automated synthesis of recursive programs from a logical specification
- Automatizing termination proofs of recursively defined functions
- Mechanical synthesis of sorting algorithms for binary trees by logic and combinatorial techniques
- Middle-out reasoning for synthesis and induction
- An approach to automatic deductive synthesis of functional programs
- Algorithm synthesis by lazy thinking: examples and implementation in Theorema
- Zeno: an automated prover for properties of recursive data structures
- Specification methods and partial construction of theory by computer
- scientific article; zbMATH DE number 3880144 (Why is no real title available?)
- scientific article; zbMATH DE number 4164172 (Why is no real title available?)
- Automatic Deductive Synthesis of Lisp Programs in the System ALISA
- Automatic generation of generalization lemmas for proving properties of tail-recursive definitions
- scientific article; zbMATH DE number 3916263 (Why is no real title available?)
- scientific article; zbMATH DE number 408777 (Why is no real title available?)
- scientific article; zbMATH DE number 465521 (Why is no real title available?)
- scientific article; zbMATH DE number 572175 (Why is no real title available?)
- Conjecture synthesis for inductive theories
- scientific article; zbMATH DE number 2040721 (Why is no real title available?)
- scientific article; zbMATH DE number 3995084 (Why is no real title available?)
- scientific article; zbMATH DE number 3997144 (Why is no real title available?)
- Synthesis of list algorithms by mechanical proving
- On automating the extraction of programs from proofs using product types
- Automatic Synthesis of Merging and Inserting Algorithms on Binary Trees Using Multisets in Theorema
- Synthesis of induction orderings for existence proofs
- Two examples of computational creativity: ILP multiple predicate synthesis and the `assets' in theorem proving
- Automated synthesis of induction axioms for programs with second-order recursion
- Advances in Computing Science – ASIAN 2003. Progamming Languages and Distributed Computation Programming Languages and Distributed Computation
- Proving the correctness of recursion-based automatic program transformations
This page was built for publication: Automatic synthesis of recursive programs as proof procedures
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q4023948)