Abstract
The deductive approach is a formal program-construction method in which the derivation of a program from a given specification is regarded as a theoremproving ask. To construct a program whose output satisfies the conditions of the specification, we prove a theorem stating the existence of such an output. The proof is restricted to be sufficiently constructive so that a program computing the desired output can be extracted directly from the proof. The program we obtain is applicative and may consist of several mutually recursive procedures. The proof constitutes a demonstration of the correctness of this program.
To exhibit the full power of the deductive approach, we apply it to a nontrivial example — the synthesis of a unification algorithm. Unification is the process of finding a common instance of two expressions. Algorithms to perform unification have been central to many theorem-proving systems and some programming-language processors. The task of deriving a unification algorithm automatically is beyond the power of existing program-synthesis systems. In this paper, we use the deductive approach to derive an algorithm from a simple, high-level specification of the unification task. We will identify some of the capabilities required of a theorem proving system to perform this derivation automatically.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Bledsoe, W. W. [ Aug. 1977 ], “Non-resolution theorem proving,” Artificial Intelligence Journal, Vol. 9, No. 1, pp. 1–35.
Boyer, R. S, and J S. Moore [ Jan. 1975 ], “Proving theorems about LISP functions,” JACM, Vol. 22, No. 1, pp. 129–144.
Clark, K. and J. Darlington [ Feb. 1980 ], “Algorithm classification through synthesis,” Computer Journal, Vol. 23, No. 1, pp. 61–65.
Colmerauer, A., H. Kanoui and M. van Caneghem [ 1979 ], “Etude et realisation d’un systeme Prolog,” Internal Report, Groupe d’Intelligence Artificielle, U.E.R. de Luminy, Universite d’ Aix-Marseille II.
Green, C. C. [May 1969], “Application of theorem proving to problem solving,” Proceedings of the International Joint Conference on Artificial Intelligence, Washington DC, pp. 219–239.
Herbrand, J. [1930], “Researches in the theory of demonstration,” in From Frege to Godel: a source book in mathematical logic, 1879–1931 ( J. Van Heijenoort, ed.), Harvard University Press, Cambridge, MA, 1967, pp. 525–581.
Hewitt, C. [ Apr. 1971 ], “Description and theoretical analysis (using schemata) of PLANNER: A language for proving theorems and manipulating models in a robot,” Ph.D. thesis, MIT, Cambridge, MA.
Huet, G. P. [ June 1975 ], “A unification algorithm for typed X-calculus,” Theoretical Computer Science, Vol. 1, No. 1, pp. 27–57.
Huet, G. P. and J.-M. Hullot [ Oct. 1980 ], “Proofs by induction in equational theories with constructors,” Proceedings of Symposium on Foundations of Computer Science, Syracuse, NY, pp. 96–107.
Livesay, M,, J. Siekraami, P. Szabo and E. Unvericht [ Feb. 1979 ], “Unification problems for combinations of associativity, commutativity, distrlbutivity and idempotence axioms” Proceedings of the Fourth Workshop on Automated Deduction, Austin, Texas, pp. 175–184.
Manna, Z. and R. Waldinger [Summer 1975 ], “Knowledge and reasoning in program synthesis,” Artificial Intelligence Journal, Vol. 6, No. 2, pp. 175–208.
Manna, Z. and R. Waldinger [ Jan. 1980 ], “A deductive approach to program synthesis,” ACM Transactions on Programming Languages and Systems, Vol. 2, No. 1, pp. 92–121.
Manna, Z. and R. Waldinger [ 1982 ], Deductive Basis for Computer Programming, forthcoming.
Martelli, A. and U. Montanari [ July 1976 ], “Unification in linear time and space: a structured presentation,” Internal Report, IEI, Pisa.
Paterson, M. S. and M. N. Wegman [ April 1978 ], “Linear unification,” Journal of Computer and System Sciences, Vol. 16, No. 2, pp. 158–167.
Prawitz, D. [ 1960 ], “An improved proof procedure,” Theoria, Vol. 26, pp. 102–139.
Robinson, J. A. [ Jan. 1965 ], “A machine-oriented logic based on the resolution principle”, JACM, Vol. 12, No. 1, pp. 23–41.
Stickel, M. E. [ Sept. 1975 ], “A complete unification algorithm for associativecommutative functions,” Proceedings of the Fourth International Joint Conference on Artificial Intelligence, Tbilisi, Georgia, USSR, pp. 71–76.
Von Henke, F. W. and D. C. Luckham [ April 1974 ], “A methodology for verifying programs,” Proceedings of the International Conference on Reliable Software, Los Angeles, CA, pp. 156–164.
Waldinger, R. J. and R. C. T. Lee [ May 1969 ], “PROW: a step toward automatic program writing,” Proceedings of the International Joint Conference on Artificial Intelligence, Washington, DC, pp. 241–252.
Waldinger, R. J. and K. N. Levitt [ 1974 ], “Reasoning about programs,” Artificial Intelligence, Vol. 5, pp. 235–316.
Warren, D., L. M. Pereira and F. Pereira [ Aug 1977 ], “PROLOG - the language and its implementation compared with LISP,” Proceedings of Symposium on Artificial Intelligence and Programming Languages, SIGPLAN Notices (ACM), Yol. 12, No. 8, pp. 109 – 115
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1983 D. Reidel Publishing Company
About this paper
Cite this paper
Manna, Z., Waldinger, R. (1983). Deductive Synthesis of the Unification Algorithm. In: Biermann, A.W., Guiho, G. (eds) Computer Program Synthesis Methodologies. NATO Advanced Study Institutes Series, vol 95. Springer, Dordrecht. https://doi.org/10.1007/978-94-009-7019-9_8
Download citation
DOI: https://doi.org/10.1007/978-94-009-7019-9_8
Publisher Name: Springer, Dordrecht
Print ISBN: 978-94-009-7021-2
Online ISBN: 978-94-009-7019-9
eBook Packages: Springer Book Archive