From specifications to programs: Induction in the service of synthesis
The deductive synthesis of programs from formal specifications can be aided by various forms of induction: Summative, or complete, induction is the deductive technique of reasoning by cases and plays an important role in creating conditionals. Recursive, or mathematical, induction is a deductive technique for reasoning about an infinite number of cases; it is used in the creation of loops, and is often necessary for establishing properties of data types. Eduction, or analogical reasoning, helps reduce the amount of work needed to generate a program, when similar programs already exist. Ampliative, or incomplete, induction is the process by which one generalizes from a finite number of instances; it can help the synthesizer guess what statement is needed and to verify the correctness of suggestions.