Synthesis of Programs in Computational Logic

  • David Basin
  • Yves Deville
  • Pierre Flener
  • Andreas Hamfelt
  • Jørgen Fischer Nilsson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3049)


Since the early days of programming and automated reasoning, researchers have developed methods for systematically constructing programs from their specifications. Especially the last decade has seen a flurry of activities including the advent of specialized conferences, such as LOPSTR, covering the synthesis of programs in computational logic. In this paper we analyze and compare three state-of-the-art methods for synthesizing recursive programs in computational logic. The three approaches are constructive/deductive synthesis, schema-guided synthesis, and inductive synthesis. Our comparison is carried out in a systematic way where, for each approach, we describe the key ideas and synthesize a common running example. In doing so, we explore the synergies between the approaches, which we believe are necessary in order to achieve progress over the next decade in this field.


Logic Program Logic Programming Inductive Logic Programming Program Schema Computational Logic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Anderson, P., Basin, D.: Program development schemata as derived rules. Journal of Symbolic Computation 30(1), 5–36 (2000)zbMATHCrossRefMathSciNetGoogle Scholar
  2. 2.
    Ayari, A., Basin, D.: Generic system support for deductive program development. In: Margaria, T., Steffen, B. (eds.) TACAS 1996. LNCS, vol. 1055, pp. 313–328. Springer, Heidelberg (1996)Google Scholar
  3. 3.
    Ayari, A., Basin, D.: A higher-order interpretation of deductive tableau. Journal of Symbolic Computation (2002) (to appear)Google Scholar
  4. 4.
    Balzer, R.: A 15 year perspective on automatic programming. IEEE Transactions. on Software Engineering 11(11), 1257–1268 (1985)CrossRefGoogle Scholar
  5. 5.
    Barendregt, H.P.: The Lambda Calculus: Its Syntax and Semantics, 2nd revised edn. Studies in Logic, vol. 103. North-Holland, Amsterdam (1984)zbMATHGoogle Scholar
  6. 6.
    Basin, D.: IsaWhelk: Whelk interpreted in Isabelle. In: Van Hentenryck, P. (ed.) Proc. of ICLP 1994, p. 741. The MIT Press, Cambridge (1994)Google Scholar
  7. 7.
    Basin, D.: Logic frameworks for logic programs. In: Fribourg, L., Turini, F. (eds.) LOPSTR 1994 and META 1994. LNCS, vol. 883, pp. 1–16. Springer, Heidelberg (1994)Google Scholar
  8. 8.
    Basin, D.: Logical-framework-based program development. ACM Computing Surveys 30(3es), 1–4 (1998)CrossRefGoogle Scholar
  9. 9.
    Basin, D., Friedrich, S.: Modeling a hardware synthesis methodology in Isabelle. Formal Methods in Systems Design 15(2), 99–122 (1999)CrossRefGoogle Scholar
  10. 10.
    Basin, D., Krieg-Brückner, B.: Formalization of the development process. In: Astesiano, E., Kreowski, H.-J., Krieg-Brückner, B. (eds.) Algebraic Foundations of System Specification, pp. 521–562. Springer, Heidelberg (1998)Google Scholar
  11. 11.
    Basin, D., Matthews, S.: Adding metatheoretic facilities to first-order theories. Journal of Logic and Computation 6(6), 835–849 (1996)zbMATHCrossRefMathSciNetGoogle Scholar
  12. 12.
    Basin, D., Walsh, T.: Annotated rewriting in inductive theorem proving. Journal of Automated Reasoning 16(1–2), 147–180 (1996)zbMATHCrossRefMathSciNetGoogle Scholar
  13. 13.
    Biermann, A.W.: Automatic programming. In: Shapiro, S.C. (ed.) Encyclopedia of Artificial Intelligence, 2nd extended edn., pp. 59–83. John Wiley, Chichester (1992)Google Scholar
  14. 14.
    Biermann, A.W., Guiho, G., Kodratoff, Y. (eds.): Automatic Program Construction Techniques. Macmillan, Basingstoke (1984)zbMATHGoogle Scholar
  15. 15.
    Blaine, L., Gilham, L., Liu, J., Smith, D.R., Westfold, S.: PlanWare: Domainspecific synthesis of high-performance schedulers. In: Proc. of ASE 1998, pp. 270–279. IEEE Computer Society Press, Los Alamitos (1998)Google Scholar
  16. 16.
    Bundy, A., Smaill, A., Wiggins, G.A.: The synthesis of logic programs from inductive proofs. In: Lloyd, J.W. (ed.) Computational Logic. Esprit Basic Research Series, pp. 135–149. Springer, Heidelberg (1990)Google Scholar
  17. 17.
    Bundy, A., Stevens, A., van Harmelen, F., Ireland, A., Smaill, A.: Rippling: A heuristic for guiding inductive proofs. Artificial Intelligence 62(2), 185–253 (1993)zbMATHCrossRefMathSciNetGoogle Scholar
  18. 18.
    Buntine, W.: Generalized subsumption and its application to induction and redundancy. Artificial Intelligence 36(2), 375–399 (1988)CrossRefMathSciNetGoogle Scholar
  19. 19.
    Chang, C.-L., Lee, R.C.-T.: Symbolic Logic and Mechanical Theorem Proving. Academic Press, London (1973)zbMATHGoogle Scholar
  20. 20.
    Chasseur, E., Deville, Y.: Logic program schemas, constraints and semiunification. In: Fuchs, N.E. (ed.) LOPSTR 1997. LNCS, vol. 1463, pp. 69–89. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  21. 21.
    Christiansen, H.: Implicit program synthesis by a reversible metainterpreter. In: Fuchs, N.E. (ed.) LOPSTR 1997. LNCS, vol. 1463, pp. 90–110. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  22. 22.
    Clarke, E.M., Wing, J.M.: Formal methods: State of the art and future directions. ACM Computing Surveys 28(4), 626–643 (1996)CrossRefGoogle Scholar
  23. 23.
    Coen, M.D.: Interactive program derivation. Technical Report 272, Cambridge University Computer Laboratory, UK (1992)Google Scholar
  24. 24.
    Coquand, T., Huet, G.: The calculus of constructions. In: Information and Computation, pp. 95–120 (1988)Google Scholar
  25. 25.
    Deville, Y.: Logic Programming: Systematic Program Development. International Series in Logic Programming. Addison-Wesley, Reading (1990)Google Scholar
  26. 26.
    Deville, Y., Lau, K.-K.: Logic program synthesis. Journal of Logic Programming 19-20, 321–350 (1994)CrossRefMathSciNetGoogle Scholar
  27. 27.
    Felty, A., Miller, D.: Specifying theorem provers in a higher-order logic programming language. In: Lusk, E.‘., Overbeek, R. (eds.) CADE 1988. LNCS, vol. 310, pp. 61–80. Springer, Heidelberg (1988)CrossRefGoogle Scholar
  28. 28.
    Flener, P.: Logic Program Synthesis from Incomplete Information. Kluwer Academic Publishers, Dordrecht (1995)Google Scholar
  29. 29.
    Flener, P.: Achievements and prospects of program synthesis. In: Kakas, A.C., Sadri, F. (eds.) Computational Logic: Logic Programming and Beyond. LNCS (LNAI), vol. 2407, pp. 310–346. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  30. 30.
    Flener, P., Deville, Y.: Logic program synthesis from incomplete specifications. Journal of Symbolic Computation 15(5-6), 775–805 (1993)zbMATHCrossRefMathSciNetGoogle Scholar
  31. 31.
    Flener, P., Lau, K.-K., Ornaghi, M.: Correct-schema-guided synthesis of steadfast programs. In: Proc. of ASE 1997, pp. 153–160. IEEE Computer Society Press, Los Alamitos (1997)Google Scholar
  32. 32.
    Flener, P., Lau, K.-K., Ornaghi, M.: On correct program schemas. In: Fuchs, N.E. (ed.) LOPSTR 1997. LNCS, vol. 1463, pp. 124–143. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  33. 33.
    Flener, P., Lau, K.-K., Ornaghi, M., Richardson, J.D.C.: An abstract formalisation of correct schemas for program synthesis. Journal of Symbolic Computation 30(1), 93–127 (2000)zbMATHCrossRefMathSciNetGoogle Scholar
  34. 34.
    Flener, P., Partridge, D.: Inductive programming. Automated Software Engineering 8(2), 131–137 (2001)CrossRefGoogle Scholar
  35. 35.
    Flener, P., Richardson, J.D.C.: A unified view of programming schemas and proof methods. In: Bossi, A. (ed.) Proc. of LOPSTR 1999, pp. 75–82. Tech. rept. CS-99-16, Univ. of Venice, Italy (1999); Also see Technical Report 2003-008 at the Department of Information Technology, Uppsala University, Sweden (2003)Google Scholar
  36. 36.
    Flener, P., Yılmaz, S.: Inductive synthesis of recursive logic programs: Achievements and prospects. Journal of Logic Programming 41(2-3), 141–195 (1999)zbMATHCrossRefMathSciNetGoogle Scholar
  37. 37.
    Flener, P., Zidoum, H., Hnich, B.: Schema-guided synthesis of CLP programs. In: Proc. of ASE 1998, pp. 168–176. IEEE Computer Society Press, Los Alamitos (1998)Google Scholar
  38. 38.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)Google Scholar
  39. 39.
    Gegg-Harrison, T.S.: Extensible logic program schemata. In: Gallagher, J.P. (ed.) LOPSTR 1996. LNCS, vol. 1207, pp. 256–274. Springer, Heidelberg (1997)Google Scholar
  40. 40.
    Goldberg, A.T.: Knowledge-based programming: A survey of program design and construction techniques. IEEE Transactions on Software Engineering 12(7), 752–768 (1986)Google Scholar
  41. 41.
    Gordon, M.J., Milner, R., Wadsworth, C.P.: Edinburgh LCF: A Mechanized Logic of Computation. In: Gordon, M., Wadsworth, C.P., Milner, R. (eds.) Edinburgh LCF. LNCS, vol. 78, Springer, Heidelberg (1979)Google Scholar
  42. 42.
    Green, C.: Application of theorem proving to problem solving. In: Proc. of IJCAI 1969, pp. 219–239. Morgan Kaufmann, San Francisco (1969)Google Scholar
  43. 43.
    Hamfelt, A., Fischer Nilsson, J.: Inductive metalogic programming. In: Jelitsch, R., Lange, O., Haupt, D., Juling, W., Händler, W. (eds.) CONPAR 1986. LNCS, vol. 237, pp. 85–96. Springer, Heidelberg (1986)Google Scholar
  44. 44.
    Hamfelt, A., Fischer Nilsson, J.: Declarative logic programming with primitive recursive relations on lists. In: Maher, M.J. (ed.) Proc. of JICSLP 1996, pp. 230–243. The MIT Press, Cambridge (1996)Google Scholar
  45. 45.
    Hamfelt, A., Fischer Nilsson, J.: Towards a logic programming methodology based on higher-order predicates. New Generation Computing 15(4), 421–448 (1997)CrossRefGoogle Scholar
  46. 46.
    Hamfelt, A., Fischer Nilsson, J., Oldager, N.: Logic program synthesis as problem reduction using combining forms. Automated Software Engineering 8(2), 167–193 (2001)zbMATHCrossRefGoogle Scholar
  47. 47.
    Hill, P., Lloyd, J.W.: The Gödel Programming Language. MIT Press, Cambridge (1994)zbMATHGoogle Scholar
  48. 48.
    Hindley, J.R., Seldin, J.P.: Introduction to Combinators and the λ-Calculus. Cambridge University Press, Cambridge (1986)Google Scholar
  49. 49.
    Howe, D.J.: On computational open-endedness in Martin-Löf’s type theory. In: Proc. of LICS 1991, pp. 162–172. IEEE Computer Society Press, Los Alamitos (1991)Google Scholar
  50. 50.
    Kraan, I., Basin, D., Bundy, A.: Logic program synthesis via proof planning. In: Lau, K.-K., Clement, T. (eds.) Proc. of LOPSTR 1992, Workshops in Computing Series, pp. 1–14. Springer, Heidelberg (1993)Google Scholar
  51. 51.
    Kraan, I., Basin, D., Bundy, A.: Middle-out reasoning for synthesis and induction. Journal of Automated Reasoning 16(1-2), 113–145 (1996)zbMATHCrossRefMathSciNetGoogle Scholar
  52. 52.
    Lau, K.-K., Ornaghi, M.: On specification frameworks and deductive synthesis of logic programs. In: Fribourg, L., Turini, F. (eds.) LOPSTR 1994 and META 1994. LNCS, vol. 883, pp. 104–121. Springer, Heidelberg (1994)Google Scholar
  53. 53.
    Lau, K.-K., Ornaghi, M.: S.-˚A. Tärnlund. Steadfast logic programs. Journal of. Logic Programming 38(3), 259–294 (1999)zbMATHCrossRefMathSciNetGoogle Scholar
  54. 54.
    Lisett, C.L., Rumelhart, D.E.: Facial recognition using a neural network. In: Proc. of the 11th International Florida AI Research Symposium FLAIRS 1998, pp. 328–332 (1998)Google Scholar
  55. 55.
    Maher, M.J.: Equivalences of logic programs. In: Minker, J. (ed.) Foundations of Deductive Databases and Logic Programming, Morgan Kaufmann, San Francisco (1987)Google Scholar
  56. 56.
    Martin-Löf, P.: Constructive mathematics and computer programming. In: Proc. of the Sixth International Congress for Logic, Methodology, and Philosophy of Science, pp. 153–175. North-Holland, Amsterdam (1982)CrossRefGoogle Scholar
  57. 57.
    Minton, S.: Automatically configuring constraint satisfaction programs: A case study. Constraints 1(1-2), 7–43 (1996)CrossRefMathSciNetGoogle Scholar
  58. 58.
    Muggleton, S.: Inverse entailment and Progol. New Generation Computing 13(3-4), 245–286 (1995)CrossRefGoogle Scholar
  59. 59.
    Paulson, L.C.: Isabelle. LNCS, vol. 828. Springer, Heidelberg (1994)zbMATHCrossRefGoogle Scholar
  60. 60.
    Pettorossi, A., Proietti, M.: Transformation of logic programs. In: Gabbay, D.M., Hogger, C.J., Robinson, J.A. (eds.) Handbook of Logic in Artificial Intelligence and Logic Programming, Clarendon Press (1998)Google Scholar
  61. 61.
    Pfenning, F.: Logic programming in the LF logical framework. In: Logical Frameworks, pp. 149–181. Cambridge University Press, Cambridge (1991)CrossRefGoogle Scholar
  62. 62.
    Plotkin, G.D.: A note on inductive generalization. In: Meltzer, B., Michie, D. (eds.) Machine Intelligence, vol. 5, pp. 153–163. Edinburgh University Press (1970)Google Scholar
  63. 63.
    Reynolds, J.C.: Transformational systems and the algebraic structure of atomic formulas. In: Meltzer, B., Michie, D. (eds.) Machine Intelligence, vol. 5, pp. 135–151. Edinburgh University Press (1970)Google Scholar
  64. 64.
    Smith, D.R.: The structure of divide and conquer algorithms. Technical Report 52-83-002, Naval Postgraduate School, Monterey, California, USA (1983)Google Scholar
  65. 65.
    Smith, D.R.: Top-down synthesis of divide-and-conquer algorithms. Artificial Intelligence 27(1), 43–96 (1985)zbMATHCrossRefMathSciNetGoogle Scholar
  66. 66.
    Smith, D.R.: KIDS: A semiautomatic program development system. IEEE Transactions. on Software Engineering 16(9), 1024–1043 (1990)CrossRefGoogle Scholar
  67. 67.
    Smith, D.R.: Toward a classification approach to design. In: Nivat, M., Wirsing, M. (eds.) AMAST 1996. LNCS, vol. 1101, pp. 62–84. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  68. 68.
    Somogyi, Z., Henderson, F., Conway, T.: The execution algorithm of Mercury: An efficient purely declarative logic programming language. Journal of Logic Programming 29(1-3), 17–64 (1996)zbMATHCrossRefGoogle Scholar
  69. 69.
    van Lamsweerde, A.: Formal specification: A roadmap. In: Finkelstein, A. (ed.) The Future of Software Engineering, pp. 147–159. ACM Press, New York (2000)Google Scholar
  70. 70.
    Vasconcelos, W.W., Fuchs, N.E.: An opportunistic approach for logic program analysis and optimisation using enhanced schema-based transformations. In: Proietti, M. (ed.) LOPSTR 1995. LNCS, vol. 1048, pp. 174–188. Springer, Heidelberg (1996)Google Scholar
  71. 71.
    Wiggins, G.A.: Synthesis and transformation of logic programs in the Whelk proof development system. In: Apt, K.R. (ed.) Proc. of JICSLP 1992, pp. 351–365. The MIT Press, Cambridge (1992)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • David Basin
    • 1
  • Yves Deville
    • 2
  • Pierre Flener
    • 3
  • Andreas Hamfelt
    • 4
  • Jørgen Fischer Nilsson
    • 5
  1. 1.Department of Computer ScienceETH ZurichZürichSwitzerland
  2. 2.Department of Computing Science and EngineeringUniversité catholique de LouvainLouvain-la-NeuveBelgium
  3. 3.Computing Science Division, Department of Information TechnologyUppsala UniversityUppsalaSweden
  4. 4.Computer Science Division, Department of Information ScienceUppsala UniversityUppsalaSweden
  5. 5.Informatics and Mathematical ModellingTechnical University of DenmarkLyngbyDenmark

Personalised recommendations