Skip to main content
Log in

Automatic Synthesis of Recursive Programs: The Proof-Planning Paradigm

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

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, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  • 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 

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

    Google Scholar 

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

    Google Scholar 

  • 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 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

Download references

Author information

Authors and Affiliations

Authors

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). https://doi.org/10.1023/A:1008763422061

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1008763422061

Navigation