Abstract
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.
Chapter PDF
Similar content being viewed by others
Keywords
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.
Bibliography
Balzer, R. M. (September 1972), "Automatic Programming," Institute Technical Memo, University of Southern California/Information Sciences Institute.
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.
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.
Boyer, R. S. and J S. Moore (1973), "Proving Theorems about LISP Functions," Adv. Papers 3d. Intl. Conf. on Artificial Intelligence.
Buchanan, J. R. and D. C. Luckham (March 1974), "On Automating the Construction of Programs," Memo, Stanford Artificial Intelligence Project, Stanford, California.
Bundy, A. (August 1973), "Doing Arithmetic with Diagrams," Adv. Papers 3d. Intl. Conf. on Artificial Intelligence, 130–138, Stanford University, Stanford, California.
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.
Green, C. C. (May 1969), "Application of Theorem Proving to Problem Solving," Proc. Intl. Joint Conf. on Artificial Intelligence, 219–239.
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.
Hardy, S. (December 1973), "Automatic Induction of LISP Functions," Essex University.
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.
Hoare, C. A. R., (October 1969), "An Axiomatic Basis for Computer Programming," C. ACM 12, 10, 576–580, 583.
Kowalski, R. (March 1974), "Logic for Problem Solving," Memo No. 75, Department of Computational Logic, University of Edinburgh, Edinburgh.
Luckham, D. and J. R. Buchanan (March 1974), "Automatic Generation of Programs Containing Conditional Statements," Memo, Stanford Artificial Intelligence Project, Stanford, California.
Manna, Z. and R. Waldinger (March 1971), "Toward Automatic Program Synthesis," Comm. ACM, Vol. 14, No. 3, pp. 151–165.
McCarthy, J. (1962), "Towards a Mathematical Science of Computation," Proc. IFIP Congress 62, North Holland, Amsterdam, 21–28.
Reboh, R. and E. Sacerdoti (August 1973), "A Preliminary QLISP Manual," Tech. Note 81, Artificial Intelligence Center, Stanford Research Institute, Menlo Park, California.
Robinson, J. A., (January 1965), "A Machine-Oriented Logic Based on the Resolution Principle," Jour. ACM, Vol. 12, No. 1, 23–41.
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.
Simon, H. A., (October 1963), "Experiments with a Heuristic Comuter," Jour. ACM, Vol. 10, No. 4, 493–506.
Sussman, G. J. (August 1973), "A Computational Model of Skill Acquisition," Ph.D. Thesis, Artificial Intelligence Laboratory, M.I.T., Cambridge, Mass.
Teitelman, W., (1974), INTERLISP Reference Manual, Xerox, Palo Alto, California.
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.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1975 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Manna, Z., Waldinger, R. (1975). Knowledge and reasoning in program synthesis. In: Hackl, C.E. (eds) Programming Methodology. IBM 1974. Lecture Notes in Computer Science, vol 23. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-07131-8_29
Download citation
DOI: https://doi.org/10.1007/3-540-07131-8_29
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-07131-0
Online ISBN: 978-3-540-37401-5
eBook Packages: Springer Book Archive