We describe a proof method that characterises a family of proofs corresponding to the synthesis of recursive functional programs. This method provides a significant degree of automation in the construction of recursive programs from specifications, together with correctness proofs. This method makes use of meta-variables to allow successive refinement of the identity of unknowns, and so allows the program and the proof to be developed hand in hand. We illustrate it with parts of a substantial example—the synthesis of a unification algorithm.
This is a preview of subscription content, access via your institution.
Buy single article
Instant access to the full article PDF.
Tax calculation will be finalised during checkout.
Basin, D. 1994. Logic frameworks for logic programs. In 4th International Workshop on Logic Program Synthesis and Transformation, (LOPSTR'94), number 883 in LNCS, Springer-Verlag.
Basin, B. and Walsh, T. 1996. A calculus for and termination of rippling. Journal of Automated Reasoning, 16(1–2): 147-180.
Biundo, S. 1988. Automated synthesis of recursive algorithms as a theorem proving tool. In Y. Kodratoff, editor, Eighth European Conference on Artificial Intelligence, pp. 553-558, Pitman.
Bouhoula, A. and Rusinowitch, M. 1995. Implicit induction in conditional theories. Journal of Automated Reasoning, 14(2):189-235.
Boyer, R.S. and Moore, J.S. A Computational Logic. ACM monograph series, Academic Press.
Bundy, A., Smaill, A., and Hesketh, J. 1990. Turning eureka steps into calculations in automatic program synthesis. In S.L.H. Clarke, editor, Proceedings of UK IT 90, pp. 221-226, IEE. Also available from Edinburgh as DAI Research Paper 448.
Bundy, A., van Harmelen, F., Hesketh J., and Smaill, A. 1991. Experiments with proof plans for induction. Journal of Automated Reasoning, 7:303-324. Earlier version available from Edinburgh as DAI Research Paper No 413.
Bundy, A., Stevens, A., van Harmelen, F., Ireland, A., and Smaill, A. 1993. Rippling: A heuristic for guiding inductive proofs. Artificial Intelligence, 62:185-253. Also available from Edinburgh as DAI Research Paper No. 567.
Coen, M. 1992. Interactive Program Derivation. Ph.D. thesis, University of Cambridge, Cambridge, England.
Constable, R.L., Allen, S.F., Bromley, H.M. et al. 1986. Implementing Mathematics with the Nuprl Proof Development System. Prentice Hall.
Constable, R.L. and Howe, D.J. 1990. Implementing metamathematics as an approach to automatic theorem proving. In R.B. Banerji, editor, Formal Techniques in Artificial Intelligence: A Sourcebook, Amsterdam, North Holland, pp. 45-76.
Dershowitz, N. and Jouannaud, J.-P. 1990. Rewriting systems. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science, volume B: Formal Methods and Semantics. pp. 200-213, Elsevier: Amsterdam.
Dowek, G., Felty, A., Herbelin, H., Huet, G., Paulin, C., and Werner, B. 1991. The Coq proof assistant user's guide, version 5.6. Technical Report 134, INRIA.
Eriksson, L.-H. 1984. Synthesis of a unification algorithm in a logic programming calculus. Journal of Logic Programming, 1:3-18.
Gallagher, J.K. 1993. The Use of Proof Plans in Tactic Synthesis. Ph.D. thesis, University of Edinburgh.
Green, C. 1969. Application of theorem proving to problem solving. In IJCAI-69, pp. 219-239.
Gries, D. 1981. The Science of Programming. New York: Springer-Verlag.
Hanson, Å. and Tärnlund, S.-A. 1979. A natural programming calculus. In Proc. 6th IJCAI, International Joint Conference on Artificial Intelligence, Tokyo, pp. 348-355.
Howard, W.A. 1980. The formulae-as-types notion of construction. In J.P. Seldin and J.R. Hindley, editors, To H.B. Curry; Essays on Combinatory Logic, Lambda Calculus and Formalism, Academic Press, pp. 479-490.
IJCAI-69, Washington, D.C., USA, 1969.
Ireland, A. and Bundy, A. 1996. Productive use of failure in inductive proof. Journal of Automated Reasoning, 16(1–2):79-111. Also available as DAI Research Paper No 716, Dept. of Artificial Intelligence, Edinburgh.
Kraan, I., Basin, D., and Bundy, A. 1993. Logic program synthesis via proof planning. In K.K. Lau and T. Clement, editors, Logic Program Synthesis and Transformation. Springer-Verlag, pp. 1-14. Also available as Max-Planck-Institut für Informatik Report MPI-I-92-244 and Edinburgh DAI Research Report 603.
Lowe, H. 1994. Proof planning: A methodology for developing AI systems involving design. Artificial Intelligence for Engineering Design, Analysis and Manufacturing, 8(4). Special Issue on Research Methodology.
Manna, Z. and Waldinger, R.J. 1980. A deductive approach to program synthesis. Journal of Transactions on Programming Languages and Systems, 2(1):90-121.
Manna, Z. and Waldinger, R.J. 1981. Deductive synthesis of the unification algorithm. Science of Computer Programming, 1:5-48.
Nardi, D. 1989. Formal synthesis of a unification algorithm by the deductive-tableau method. Journal of Logic Programming, 7:1-43.
Nordström, B. 1988. Terminating general recursion. BIT, 28:605-619.
Nordström, K., Petersson B., and Smith, J. 1990. Programming in Martin-Löf Type Theory. Oxford University Press.
Paulin-Mohring, C. 1989. Extracting F ω 's programs from proofs in the calculus of constructions. ACM Proc. POPL.
Paulson, L.C. 1984. Verifying the unification algorithm in LCF. Report 50, Computer Laboratory, University of Cambridge.
Paulson, L.C. 1986. Constructing recursion operators in intuitionistic type theory. Journal of Symbolic Computation, 2:325-355.
Rouyer, J. 1994. Développement d'Algorithmes dans le Calcul des Constructions. Ph.D. thesis, Institut National Polytechnique de Lorraine, Nancy, France.
Saaman, E.H. and Malcolm, G.R. 1987. Well-founded recursion in type theory. Technical Report CS 8710, Department of Mathematics and Computing Science, University of Groningen.
Slind, K. 1996. Function definition in higher-order logic. In Joakim von Wright, Jim Grundy, and John Harrison, editors, Theorem Proving in Higher Order Logics: 9th International Conference, TPHOLs'96, Vol. 1275 of Lecture Notes in Computer Science, pp. 381-399, Turku, Finland, Springer-Verlag.
Stickel, M., Waldinger, R., Lowry, M., Pressburger, T. and Underwood, I. 1994. Deductive composition of astronomical software from subroutine libraries. In Alan Bundy, editor, 12th International Conference on Automated Deduction, Lecture Notes in Artificial Intelligence, Nancy, France, Vol. 814, Springer-Verlag, pp. 341-355.
Tyugu, E. 1991. Declarative programming in a type theory. In B. Moller, editor, Constructing Programs from Specifications, North-Holland, pp. 451-472.
Tyugu, E. 1994. Using classes as specifications for automatic construction of programs in the NUT system. Automated Software Engineering, 1:315-334.
Waldinger, R.J. and Lee, R.C. 1969. PROW: A step toward automatic program writing. In IJCAI-69, pp. 241-252.
Wiggins, G.A. 1992. Synthesis and transformation of logic programs in the Whelk proof development system. In K.R. Apt, editor, Proceedings of JICSLP-92, Cambridge, MA: MIT Press, pp. 351-358.
Yoshida, T., Bundy, A., Green, I., Walsh, T., and Basin, D. 1994. Coloured rippling: An extension of a theorem proving heuristic. In A.G. Cohn, editor, Proceedings of ECAI-94, John Wiley, pp. 85-89.
Zhang, H. 1992. Implementing contextual rewriting. In Michaël Rusinowitch and Jean-Luc Rémy, editors, Conditional Term Rewriting Systems. Third International Workshop, LNCS 656, Pont-á-Mousson, France, July 8–10, Springer-Verlag, pp. 363-377.
About this article
Cite this article
Armando, A., Smaill, A. & Green, I. Automatic Synthesis of Recursive Programs: The Proof-Planning Paradigm. Automated Software Engineering 6, 329–356 (1999). https://doi.org/10.1023/A:1008763422061
- program synthesis
- middle-out reasoning