A software engineering paradigm for program synthesis
The past study of program synthesis has mainly concentrated on attempting to synthesise programs by duplicating human methods for constructing programs, such as top-down design. Here we do not attempt this process but instead use a simple method that is based on sound software engineering practice. Knuth-Bendix completion is used in the synthesis process but without the need for the exhaustive completion of program axioms against each other. A software engineering framework is used to reduce the pairs of completed program axioms to the optimum for synthesising the required program. Examples of program synthesis are given and contrasted with an ad hoc method of synthesis.