Skip to main content

Automatic Synthesis of Recursive Programs: The Proof-Planning Paradigm


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.


  1. 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.

  2. Basin, B. and Walsh, T. 1996. A calculus for and termination of rippling. Journal of Automated Reasoning, 16(1–2): 147-180.

    Google Scholar 

  3. 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.

  4. Bouhoula, A. and Rusinowitch, M. 1995. Implicit induction in conditional theories. Journal of Automated Reasoning, 14(2):189-235.

    Google Scholar 

  5. Boyer, R.S. and Moore, J.S. A Computational Logic. ACM monograph series, Academic Press.

  6. 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.

  7. 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.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. Coen, M. 1992. Interactive Program Derivation. Ph.D. thesis, University of Cambridge, Cambridge, England.

    Google Scholar 

  10. Constable, R.L., Allen, S.F., Bromley, H.M. et al. 1986. Implementing Mathematics with the Nuprl Proof Development System. Prentice Hall.

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. 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.

  14. Eriksson, L.-H. 1984. Synthesis of a unification algorithm in a logic programming calculus. Journal of Logic Programming, 1:3-18.

    Google Scholar 

  15. Gallagher, J.K. 1993. The Use of Proof Plans in Tactic Synthesis. Ph.D. thesis, University of Edinburgh.

  16. Green, C. 1969. Application of theorem proving to problem solving. In IJCAI-69, pp. 219-239.

  17. Gries, D. 1981. The Science of Programming. New York: Springer-Verlag.

    Google Scholar 

  18. 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.

  19. 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.

  20. IJCAI-69, Washington, D.C., USA, 1969.

  21. 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.

    Google Scholar 

  22. 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.

  23. 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.

  24. 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.

    Google Scholar 

  25. Manna, Z. and Waldinger, R.J. 1981. Deductive synthesis of the unification algorithm. Science of Computer Programming, 1:5-48.

    Google Scholar 

  26. Nardi, D. 1989. Formal synthesis of a unification algorithm by the deductive-tableau method. Journal of Logic Programming, 7:1-43.

    Google Scholar 

  27. Nordström, B. 1988. Terminating general recursion. BIT, 28:605-619.

    Google Scholar 

  28. Nordström, K., Petersson B., and Smith, J. 1990. Programming in Martin-Löf Type Theory. Oxford University Press.

  29. Paulin-Mohring, C. 1989. Extracting F ω 's programs from proofs in the calculus of constructions. ACM Proc. POPL.

  30. Paulson, L.C. 1984. Verifying the unification algorithm in LCF. Report 50, Computer Laboratory, University of Cambridge.

  31. Paulson, L.C. 1986. Constructing recursion operators in intuitionistic type theory. Journal of Symbolic Computation, 2:325-355.

    Google Scholar 

  32. Rouyer, J. 1994. Développement d'Algorithmes dans le Calcul des Constructions. Ph.D. thesis, Institut National Polytechnique de Lorraine, Nancy, France.

    Google Scholar 

  33. 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.

  34. 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.

    Google Scholar 

  35. 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.

  36. Tyugu, E. 1991. Declarative programming in a type theory. In B. Moller, editor, Constructing Programs from Specifications, North-Holland, pp. 451-472.

  37. Tyugu, E. 1994. Using classes as specifications for automatic construction of programs in the NUT system. Automated Software Engineering, 1:315-334.

    Google Scholar 

  38. Waldinger, R.J. and Lee, R.C. 1969. PROW: A step toward automatic program writing. In IJCAI-69, pp. 241-252.

  39. 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.

    Google Scholar 

  40. 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.

  41. 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.

Download references

Author information



Rights and permissions

Reprints and Permissions

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).

Download citation

  • program synthesis
  • proof-planning
  • middle-out reasoning