Achievements and Prospects of Program Synthesis

  • Pierre Flener
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2407)


Program synthesis research aims at developing a program that develops correct programs from specifications, with as much or as little interaction as the specifier wants. I overview the main achievements in deploying logic for program synthesis. I also outline the prospects of such research, arguing that, while the technology scales up from toy programs to real-life software and to commercially viable tools, computational logic will continue to be a driving force behind this progress.


Logic Program Constraint Satisfaction Problem Domain Theory Proof Obligation Program Transformation 
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.
    J.-R. Abrial. The B-Book: Assigning Programs to Meanings. Cambridge University Press, 1996.Google Scholar
  2. 2.
    R. Balzer. A 15 year perspective on automatic programming. IEEE TSE 11(11):1257–1268, 1985.Google Scholar
  3. 3.
    A. Barr and E.A. Feigenbaum. The Handbook of Artificial Intelligence, Chapter X: Automatic Programming, pp. 297–379. Morgan Kaufmann, 1982.Google Scholar
  4. 4.
    D.R. Barstow. A perspective on automatic programming. AI Magazine, Spring 1984:5–27. Also in [74], pp. 537–559.Google Scholar
  5. 5.
    J.L. Bates and R.L. Constable. Proofs as programs. ACM TOPLAS 7(1):113–136, 1985.zbMATHCrossRefGoogle Scholar
  6. 6.
    F.L. Bauer, B. Möller, H. Partsch, and P. Pepper. Formal program construction by transformations: Computer-aided, intuition-guided programming. IEEE TSE 15(2):165–180, 1989. Details in LNCS 183/292, Springer-Verlag, 1985/87.Google Scholar
  7. 7.
    M.J. Beeson. Foundations of Constructive Mathematics. Modern Surveys in Mathematics, Volume 6. Springer-Verlag, 1985.Google Scholar
  8. 8.
    W. Bibel. Syntax-directed, semantics-supported program synthesis. AI 14(3):243–261, 1980.MathSciNetGoogle Scholar
  9. 9.
    W. Bibel. Concurrent software production. In R.D. McCartney (eds). Automating Software Design. The MIT Press, 1991 [61], pp. 243–261. Toward predicative programming. In [61], pp. 405–424.Google Scholar
  10. 10.
    W. Bibel and K.M. Hörnig. lops: A system based on a strategic approach to program synthesis. In G. Guiho, and Y. Kodratoff (eds). Automatic Program Construction Techniques. Macmillan, 1984 [15], pp. 69–89.Google Scholar
  11. 11.
    W. Bibel et al. A multi-level approach to program synthesis. In N.E. Fuchs (ed), Proc. of LOPSTR’97, pp. 1–28. LNCS 1463. Springer-Verlag, 1998.Google Scholar
  12. 12.
    A.W. Biermann. Automatic programming: A tutorial on formal methodologies. J. of Symbolic Computation 1(2):119–142, 1985.zbMATHCrossRefGoogle Scholar
  13. 13.
    A.W. Biermann. Automatic programming. In S.C. Shapiro (ed), Encyclopedia of Artificial Intelligence, pp. 59–83. John Wiley, 1992.Google Scholar
  14. 14.
    A.W. Biermann and G. Guiho (eds). Computer Program Synthesis Methodologies. Volume ASI–C95. D. Reidel, 1983.Google Scholar
  15. 15.
    A.W. Biermann, G. Guiho, and Y. Kodratoff (eds). Automatic Program Construction Techniques. Macmillan, 1984.Google Scholar
  16. 16.
    A.W. Biermann and W. Bibel (guest eds), Special Issue on Automatic Programming. J. of Symbolic Computation 15(5–6), 1993.Google Scholar
  17. 17.
    C.B. Jones. Systematic Software Development using vdm. Prentice-Hall, 1990.Google Scholar
  18. 18.
    L. Blaine, L. Gilham, J. Liu, D.R. Smith, and S. Westfold. PlanWare: Domain-specific synthesis of high-performance schedulers. In Proc. of ASE’98, pp. 270–279. IEEE Computer Society Press, 1998.Google Scholar
  19. 19.
    A. Bundy. A broader interpretation of logic in logic programming. In R.A. Kowalski and K.A. Bowen (eds), Proc. of ICLP’88, pp. 1624–1648. The MIT Press, 1988.Google Scholar
  20. 20.
    A. Bundy, A. Smaill, and G. Wiggins. The synthesis of logic programs from inductive proofs. In J.W. Lloyd (ed), Proc. of the ESPRIT Symp. on Computational Logic, pp. 135–149. Springer-Verlag, 1990.Google Scholar
  21. 21.
    A. Bundy, F. van Harmelen, C. Horn, A. Smaill. The oyster/clam system. In M.E. Stickel (ed), Proc. CADE’90, pp. 647–648. LNCS 449. Springer-Verlag, 1990.Google Scholar
  22. 22.
    R.M. Burstall and J. Darlington. A transformation system for developing recursive programs. J. of the ACM 24(1):44–67, 1977.zbMATHCrossRefMathSciNetGoogle Scholar
  23. 23.
    K.L. Clark and S. Sickel. Predicate logic: A calculus for deriving programs. In Proc. of IJCAI’77, pp. 410–411.Google Scholar
  24. 24.
    R.L. Constable, S.F. Allen, H.M. Bromley, et al. Implementing Mathematics with the NuPrl Proof Development System. Prentice-Hall, 1986.Google Scholar
  25. 25.
    J. Darlington. An experimental program transformation and synthesis system. AI 16(1):1–46, 1981. Also in [74], pp. 99–121.Google Scholar
  26. 26.
    N. Dershowitz. The Evolution of Programs. Birkhäuser, 1983.Google Scholar
  27. 27.
    Y. Deville and K.-K. Lau. Logic program synthesis. J. of Logic Programming 19–20:321–350, 1994.CrossRefMathSciNetGoogle Scholar
  28. 28.
    T. Ellman, J. Keane, A. Banerjee, and G. Armhold. A transformation system for interactive reformulation of design optimization strategies. Research in Engineering Design 10(1):30–61, 1998.CrossRefGoogle Scholar
  29. 29.
    L.-H. Eriksson. Synthesis of a unification algorithm in a logic programming calculus. J. of Logic Programming 1(1):3–33, 1984.CrossRefMathSciNetzbMATHGoogle Scholar
  30. 30.
    M.S. Feather. A survey and classification of some program transformation approaches and techniques. In L.G.L.T. Meertens (ed), Program Specification and Transformation, pp. 165–195. Elsevier, 1987.Google Scholar
  31. 31.
    S.F. Fickas. Automating the transformational development of software. IEEE TSE 11(11):1268–1277, 1985.Google Scholar
  32. 32.
    B. Fischer, J. Schumann, and G. Snelting. Deduction-based software component retrieval. In W. Bibel and P.H. Schmidt (eds), Automated Deduction: A Basis for Applications, vol. III, chap. 11. Kluwer, 1998.Google Scholar
  33. 33.
    B. Fischer and J. Whittle. An integration of deductive retrieval into deductive synthesis. In Proc. of ASE’99, pp. 52–61. IEEE Computer Society, 1999.Google Scholar
  34. 34.
    P. Flener. Logic Program Synthesis from Incomplete Information. Kluwer Academic Publishers, 1995.Google Scholar
  35. 35.
    P. Flener, K.-K. Lau, and M. Ornaghi. Correct-schema-guided synthesis of steadfast programs. In Proc. of ASE’97, pp. 153–160. IEEE Computer Society, 1997.Google Scholar
  36. 36.
    P. Flener, K.-K. Lau, M. Ornaghi, and J.D.C. Richardson. An abstract formalisation of correct schemas for program synthesis. J. of Symbolic Computation 30(1):93–127, July 2000.Google Scholar
  37. 37.
    P. Flener and S. Yīlmaz. Inductive synthesis of recursive logic programs: Achievements and prospects. J. of Logic Programming 41(2–3):141–195, November/December 1999.Google Scholar
  38. 38.
    P. Flener, H. Zidoum, and B. Hnich. Schema-guided synthesis of constraint logic programs. In Proc. of ASE’98, pp. 168–176. IEEE Computer Society, 1998.Google Scholar
  39. 39.
    E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.Google Scholar
  40. 40.
    J. Goguen and G. Malcolm. Algebraic Semantics of Imperative Programs. The MIT Press, 1997.Google Scholar
  41. 41.
    A.T. Goldberg. Knowledge-based programming: A survey of program design and construction techniques. IEEE TSE 12(7):752–768, 1986.Google Scholar
  42. 42.
    M.J. Gordon, A.J. Milner, and C.P. Wadsworth. Edinburgh lcf-A Mechanised Logic of Computation. LNCS 78. Springer-Verlag, 1979.Google Scholar
  43. 43.
    J.M. Gratch and S.A. Chien. Adaptive problem-solving for large scale scheduling problems: A case study. J. of Artificial Intelligence Research 4:365–396, 1996.Google Scholar
  44. 44.
    C. Green. Application of theorem proving to problem solving. Proc. of IJCAI’69, pp. 219–239. Also in B.L. Webber and N.J. Nilsson (eds), Readings in Artificial Intelligence, pp. 202–222. Morgan Kaufmann, 1981.Google Scholar
  45. 45.
    C. Green and D.R. Barstow. On program synthesis knowledge. AI 10(3):241–270, 1978. Also in [74], pp. 455–474.Google Scholar
  46. 46.
    C. Green and S. Westfold. Knowledge-based programming self applied. Machine Intelligence 10, 1982. Also in [74], pp. 259–284.Google Scholar
  47. 47.
    Å. Hansson. A Formal Development of Programs. Ph.D. Thesis, Univ. of Stockholm (Sweden), 1980.Google Scholar
  48. 48.
    J. Hesketh, A. Bundy, and A. Smaill. Using middle-out reasoning to control the synthesis of tail-recursive programs. In D. Kapur (ed), Proc. of CADE’92. LNCS 606. Springer-Verlag, 1992.Google Scholar
  49. 49.
    C.J. Hogger. Derivation of logic programs. J. of the ACM 28(2):372–392, 1981.zbMATHCrossRefMathSciNetGoogle Scholar
  50. 50.
    W.A. Howard. The formulae-as-types notion of construction. In J.P. Seldin and J.R. Hindley (eds), To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism, pp. 479–490. Academic Press, 1980.Google Scholar
  51. 51.
    G. Huet and G.D. Plotkin (eds). Logical Frameworks. Cambridge Univ. Press, 1991.Google Scholar
  52. 52.
    E. Kant. On the efficient synthesis of efficient programs. AI 20(3):253–305, 1983. Also in [74], pp. 157–183.Google Scholar
  53. 53.
    R. Kowalski. Logic for Problem Solving. North-Holland, 1979.Google Scholar
  54. 54.
    I. Kraan, D. Basin, and A. Bundy. Middle-out reasoning for synthesis and induction. J. of Automated Reasoning 16(1–2):113–145, 1996.zbMATHMathSciNetCrossRefGoogle Scholar
  55. 55.
    K.-K. Lau and S.D. Prestwich. Synthesis of a family of recursive sorting procedures. In V. Saraswat and K. Ueda (eds), Proc. ILPS’91, pp. 641–658. MIT Press, 1991.Google Scholar
  56. 56.
    K.-K. Lau and M. Ornaghi. On specification frameworks and deductive synthesis of logic programs. In L. Fribourg and F. Turini (eds), Proc. of LOPSTR’94 and META’94, pp. 104–121. LNCS 883. Springer-Verlag, 1994.Google Scholar
  57. 57.
    B. Le Charlier and P. Flener. Specifications are necessarily informal, or: Some more myths of formal methods. J. of Systems and Software 40(3):275–296, 1998.CrossRefGoogle Scholar
  58. 58.
    H. Liebermann (guest ed), Special Section on Programming by Example. Comm. of the ACM 43(3):72–114, 2000.Google Scholar
  59. 59.
    J.W. Lloyd. Foundations of Logic Programming. Springer-Verlag, 1987.Google Scholar
  60. 60.
    M.R. Lowry and R. Duran. Knowledge-based software engineering. In A. Barr, P.R. Cohen, and E.A. Feigenbaum (eds), The Handbook of Artificial Intelligence. Volume IV, pp. 241–322. Addison-Wesley, 1989.Google Scholar
  61. 61.
    M.R. Lowry and R.D. McCartney (eds). Automating Software Design. The MIT Press, 1991.Google Scholar
  62. 62.
    M.R. Lowry, J. Van Baalen. MetaAmphion: Synthesis of efficient domain-specific program synthesis systems. Automated Software Engineering 4:199–241, 1997.CrossRefGoogle Scholar
  63. 63.
    Z. Manna and R.J. Waldinger. Synthesis: Dreams → Programs. IEEE TSE 5(4):294–328, 1979.Google Scholar
  64. 64.
    Z. Manna and R.J. Waldinger. A deductive approach to program synthesis. ACM TOPLAS 2(1):90–121, 1980. Also in [15], pp. 33–68. Also in [74], pp. 3–34.zbMATHCrossRefGoogle Scholar
  65. 65.
    Z. Manna and R.J. Waldinger. Deductive synthesis of the unification algorithm. Science of Computer Programming 1:5–48, 1981. Also in [14], pp. 251–307.zbMATHCrossRefMathSciNetGoogle Scholar
  66. 66.
    Z. Manna and R.J. Waldinger. The origin of a binary-search paradigm. Science of Computer Programming 9:37–83, 1987.zbMATHCrossRefMathSciNetGoogle Scholar
  67. 67.
    Z. Manna and R.J. Waldinger. Fundamentals of deductive program synthesis. IEEE TSE 18(8):674–704, 1992.Google Scholar
  68. 68.
    P. Martin-Löf. Constructive mathematics and computer programming. In Proc. of the 1979 Int’l Congress for Logic, Methodology, and Philosophy of Science, pp. 153–175. North-Holland, 1982.Google Scholar
  69. 69.
    S. Minton. Automatically configuring constraint satisfaction programs: A case study. Constraints 1(1–2):7–43, 1996.CrossRefMathSciNetGoogle Scholar
  70. 70.
    J. Mostow (guest ed), Special Issue on AI and Software Engineering. IEEE TSE 11(11), 1985.Google Scholar
  71. 71.
    B. Nordström, K. Petersson, and J.M. Smith. Programming in Martin-Löf’s Type Theory: An Introduction. Clarendon Press, 1990.Google Scholar
  72. 72.
    H.A. Partsch. Specification and Transformation of Programs. Springer-Verlag, 1990.Google Scholar
  73. 73.
    H.A. Partsch and R. Steinbrüggen. Program transformation systems. Computing Surveys 15(3):199–236, 1983.CrossRefMathSciNetGoogle Scholar
  74. 74.
    C. Rich and R.C. Waters (eds). Readings in Artificial Intelligence and Software Engineering. Morgan Kaufmann, 1986.Google Scholar
  75. 75.
    C. Rich and R.C. Waters. Automatic programming: Myths and prospects. IEEE Computer 21(8):40–51, 1988.Google Scholar
  76. 76.
    C. Rich and R.C. Waters. The Programmer’s Apprentice: A research overview. IEEE Computer 21(11):10–25, 1988.Google Scholar
  77. 77.
    T. Sato and H. Tamaki. First-order compiler: A deterministic logic program synthesis algorithm. J. of Symbolic Computation 8(6):605–627, 1989.zbMATHMathSciNetCrossRefGoogle Scholar
  78. 78.
    D. Sannella and A. Tarlecki. Essential concepts of algebraic specification and program development. Formal Aspects of Computing 9:229–269, 1997.zbMATHCrossRefGoogle Scholar
  79. 79.
    D.R. Smith. The synthesis of lisp programs from examples: A survey. In G. Guiho, and Y. Kodratoff (eds). Automatic Program Construction Techniques. Macmillan, 1984 [15], pp. 307–324.Google Scholar
  80. 80.
    D.R. Smith. Top-down synthesis of divide-and-conquer algorithms. AI 27(1):43–96, 1985.zbMATHGoogle Scholar
  81. 81.
    D.R. Smith. kids: A semiautomatic program development system. IEEE TSE 16(9):1024–1043, 1990.Google Scholar
  82. 82.
    D.R. Smith. Towards the synthesis of constraint propagation algorithms. In Y. Deville (ed), Proc. of LOPSTR’93, pp. 1–9, Springer-Verlag, 1994.Google Scholar
  83. 83.
    D.R. Smith. Constructing specification morphisms. J. of Symbolic Computation 15(5–6): 571–606, 1993.zbMATHCrossRefGoogle Scholar
  84. 84.
    D.R. Smith. Toward a classification approach to design. Proc. of AMAST’96, pp. 62–84. LNCS 1101. Springer-Verlag, 1996.Google Scholar
  85. 85.
    J.M. Spivey. The z Notation: A reference manual. Prentice-Hall, 1992.Google Scholar
  86. 86.
    Y.V. Srinivas and R. Jüllig. SpecWare: Formal support for composing software. In B. Möller (ed), Proc. of MPC’95, pp. 399–422. LNCS 947. Springer-Verlag, 1995.Google Scholar
  87. 87.
    D.M. Steier and A.P. Anderson. Algorithm Synthesis: A Comparative Study. Springer-Verlag, 1989.Google Scholar
  88. 88.
    M. Stickel, R. Waldinger, M. Lowry, T. Pressburger, and I. Underwood. Deductive composition of astronomical software from subroutine libraries. In A. Bundy (ed), Proc. of CADE’94, pp. 341–355. LNCS 814. Springer-Verlag, 1994.Google Scholar
  89. 89.
    S.-Å. Tärnlund. An axiomatic data base theory. In H. Gallaire and J. Minker (eds), Logic and Databases, pp. 259–289. Plenum Press, 1978.Google Scholar
  90. 90.
    R.J. Waldinger and R.C.T. Lee. ProW: A step toward automatic program writing. Proc. of IJCAI’69, pp. 241–252.Google Scholar
  91. 91.
    G. Wiggins. Synthesis and transformation of logic programs in the whelk proof development system. In K. Apt (ed), Proc. of the JICSLP’92, pp. 351–365. The MIT Press, 1992.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Pierre Flener
    • 1
  1. 1.Information Technology, Department of Computing ScienceUppsala UniversityUppsalaSweden

Personalised recommendations