Constructing Induction Rules for Deductive Synthesis Proofs

Alan Bundy, Lucas Dixon, Jeremy Gow, Jacques Fleuriot
2006 Electronical Notes in Theoretical Computer Science  
We describe novel computational techniques for constructing induction rules for deductive synthesis proofs. Deductive synthesis holds out the promise of automated construction of correct computer programs from specifications of their desired behaviour. Synthesis of programs with iteration or recursion requires inductive proof, but standard techniques for the construction of appropriate induction rules are restricted to recycling the recursive structure of the specifications. What is needed is
more » ... duction rule construction techniques that can introduce novel recursive structures. We show that a combination of rippling and the use of meta-variables as a least-commitment device can provide such novelty. Constructive Theorem Proving Proof Program Extraction Program -Functional program prog(i) meeting specification ∀ i. Spec(i, prog(i)) Spec(i, o) is a logical specification of the relationship between the inputs i to the required program and its output o. The conjecture to be proved is that whatever the input there is a always an output that meets this specification. Constructive proof is used to ensure that a suitable output, prog(i) is constructed as a side effect of the proof. This output provides the definition of the required program. By construction, this program is known to meet its specification. Some steps of the proof provide program operations. For instance, case splits provide conditional branches and induction steps provide recursive definitions.
doi:10.1016/j.entcs.2005.08.003 fatcat:wgcdnm2yxvdl3bxrt2wptuuezi