Knowledge and reasoning in program synthesis

  • Zohar Manna
  • Richard Waldinger
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 23)


Program synthesis is the construction of a computer program from given specifications. An automatic program synthesis system must combine reasoning and programming ability with a good deal of knowledge about the subject matter of the program. This ability and knowledge must be represented both procedurally (by programs) and structurally (by choice of representation).

We describe some of the reasoning and programming capabilities of a projected synthesis system. Special attention is paid to the introduction of conditional tests, loops, and intructions with side effects in the program being constructed. The ability to satisfy several interacting goals simultaneously proves to be important in many contexts. The modification of an already existing program to solve a somewhat different problem has been found to be a powerful approach.

We illustrate these concepts with hand simulations of the synthesis of a number of pattern-matching programs. Some of these techniques have already been implemented, others are in the course of implementation, while others seem equivalent to well-known unsolved problems in artificial intelligence.


Unification Algorithm Recursive Call Goal Structure Conditional Expression Program Synthesis 
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.


  1. 1.
    Balzer, R. M. (September 1972), "Automatic Programming," Institute Technical Memo, University of Southern California/Information Sciences Institute.Google Scholar
  2. 2.
    Biermann, A. W., R. Baum, R. Kirisknaswamy and F. E. Petry (October 1973), "Automatic Program Synthesis Reports," Computer and Information Sciences Technical Report TR-73-6, Ohio State University.Google Scholar
  3. 3.
    Bobrow, D. G. and B. Wegbreit (August 1973), "A Model for Control Structures for Artificial Intelligence Programming Languages," Adv. Papers 3d. Intl. Conf. on Artificial Intelligence, 246–253, Stanford University, Stanford, California.Google Scholar
  4. 4.
    Boyer, R. S. and J S. Moore (1973), "Proving Theorems about LISP Functions," Adv. Papers 3d. Intl. Conf. on Artificial Intelligence.Google Scholar
  5. 5.
    Buchanan, J. R. and D. C. Luckham (March 1974), "On Automating the Construction of Programs," Memo, Stanford Artificial Intelligence Project, Stanford, California.Google Scholar
  6. 6.
    Bundy, A. (August 1973), "Doing Arithmetic with Diagrams," Adv. Papers 3d. Intl. Conf. on Artificial Intelligence, 130–138, Stanford University, Stanford, California.Google Scholar
  7. 7.
    Floyd, R. W., (1967), "Assigning Meanings to Programs," Proc. of a Symposium in Applied Mathematics, Vol. 19, (J. T. Schwartz, ed.), Am. Math. Soc., 19–32.Google Scholar
  8. 8.
    Green, C. C. (May 1969), "Application of Theorem Proving to Problem Solving," Proc. Intl. Joint Conf. on Artificial Intelligence, 219–239.Google Scholar
  9. 9.
    Green, C. C., R. Waldinger, R. Elschlager, D. Lenat, B. McCune, and D. Shaw, (1974), "Progress Report on Program-Understanding Programs," Memo, Stanford Artificial Intelligence Project, Stanford, California.Google Scholar
  10. 10.
    Hardy, S. (December 1973), "Automatic Induction of LISP Functions," Essex University.Google Scholar
  11. 11.
    Hewitt, C. (1972), "Description and Theoretical Analysis (Using Schemata) of PLANNER: A Language for Proving Theorems and Manipulating Models in a Robot," AI Memo No. 251, MIT, Project MAC, April 1972.Google Scholar
  12. 12.
    Hoare, C. A. R., (October 1969), "An Axiomatic Basis for Computer Programming," C. ACM 12, 10, 576–580, 583.Google Scholar
  13. 13.
    Kowalski, R. (March 1974), "Logic for Problem Solving," Memo No. 75, Department of Computational Logic, University of Edinburgh, Edinburgh.Google Scholar
  14. 14.
    Luckham, D. and J. R. Buchanan (March 1974), "Automatic Generation of Programs Containing Conditional Statements," Memo, Stanford Artificial Intelligence Project, Stanford, California.Google Scholar
  15. 15.
    Manna, Z. and R. Waldinger (March 1971), "Toward Automatic Program Synthesis," Comm. ACM, Vol. 14, No. 3, pp. 151–165.Google Scholar
  16. 16.
    McCarthy, J. (1962), "Towards a Mathematical Science of Computation," Proc. IFIP Congress 62, North Holland, Amsterdam, 21–28.Google Scholar
  17. 17.
    Reboh, R. and E. Sacerdoti (August 1973), "A Preliminary QLISP Manual," Tech. Note 81, Artificial Intelligence Center, Stanford Research Institute, Menlo Park, California.Google Scholar
  18. 18.
    Robinson, J. A., (January 1965), "A Machine-Oriented Logic Based on the Resolution Principle," Jour. ACM, Vol. 12, No. 1, 23–41.Google Scholar
  19. 19.
    Rulifson, J. F., J. A. Derksen, and R. J. Waldinger (November 1972), "QA4: A Procedural Calculus for Intuitive Reasoning," Tech. Note 73, Artificial Intelligence Group, Stanford Research Institute, Menlo Park, California.Google Scholar
  20. 20.
    Simon, H. A., (October 1963), "Experiments with a Heuristic Comuter," Jour. ACM, Vol. 10, No. 4, 493–506.Google Scholar
  21. 21.
    Sussman, G. J. (August 1973), "A Computational Model of Skill Acquisition," Ph.D. Thesis, Artificial Intelligence Laboratory, M.I.T., Cambridge, Mass.Google Scholar
  22. 22.
    Teitelman, W., (1974), INTERLISP Reference Manual, Xerox, Palo Alto, California.Google Scholar
  23. 23.
    Waldinger, R. J., and R. C. T. Lee (May 1969), "PROW: A Step Toward Automatic Program Writing," Proc. Intl. Joint Conf. on Artificial Intelligence, 241–252.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1975

Authors and Affiliations

  • Zohar Manna
    • 1
  • Richard Waldinger
    • 2
  1. 1.Applied Mathematics DepartmentWeizmann Institute of ScienceRehovotIsrael
  2. 2.Artificial Intelligence CenterStanford Research InstituteMenlo ParkU. S. A.

Personalised recommendations