Abstract
The work deals with automatic deductive synthesis of functional programs. Formal specification of a program is taken as a mathematical existence theorem and while proving it, we derive a program and simultaneously prove that this program corresponds to given specification. Several problems have to be resolved for automatic synthesis: the choice of synthesis rules that allows us to derive the basic constructions of a functional program, order of rule application and choice of a particular induction rule. The method proposed here is based on the deductive tableau method. The basic method gives rules for functional program construction. To determine the proof strategy we use some external heuristics, including rippling. And for the induction hypothesis formation the combination of rippling and the deductive tableau method became very useful. The proposed techniques are implemented in the system ALISA (Automatic Lisp Synthesizer) and used for automatic synthesis of several functions in the Lisp language.
Similar content being viewed by others
References
Armando, A., Smaill, A.,Green, I.: Automatic synthesis of recursive programs: the proof-planning paradigm. Autom. Softw. Eng. 6(4), 329–356 (1999)
Ayari, A., Basin, D.: A higher-order interpretation of deductive tableau. J. Symb. Comput. 31(5), 487–520 (2001)
Basin, D., Walsh, T.: Difference unification. In: Bajcsy, R. (ed.) Proceedings of the 13th IJCAI, pp. 116–122. Morgan Kaufmann (1993)
Basin, D., Walsh, T.: A calculus for and termination of rippling. J. Autom. Reason. 16, 147–180 (1996)
Biermann, A., Krishnaswamy, R.: Constructing programs from example computations. IEEE Trans. Softw. Eng. 2(3), 141–153 (1976)
Bundy, A., van Harmelen, F., Horn, C., Smaill, A.: The Oyster-Clam system. In: Stickel, M.E. (ed.) Proceedings of the 10th International Conference on Automated Deduction. Lecture Notes in Artificial Intelligence, vol. 449, pp. 647–648 (1990)
Bundy, A., Stevens A., van Harmelen, F., Ireland, A., Smaill, A.: Rippling: a heuristic for guiding inductive proofs. Artif. Intell. 62 (1993)
Bundy, A.: The Automation of Proof by Mathematical Induction. Handbook of Automated Reasoning, vol. 1. Elsevier Science Publishers B.V. (2001)
Bundy, A., Basin, D., Hutter, D., Ireland, A.: Rippling: Meta-level Guidance for Mathematical Reasoning. Cambridge University Press (2005)
Bundy, A., Dixon, L., Gow, J., Fleuriot, J.: Constructing induction rules for deductive synthesis proofs. Electronic Notes in Theor. Comp. Sci. 153(1), 3–21 (2006)
Burback, R., Manna, Z., Waldinger, R., et al.: Using the Deductive Tableau System. MacIntosh Educational Software Collection, Chariot Software Group (1990)
Chang, C.-L., Lee, R.: Symbolic Logic and Mechanical Theorem Proving. Academic, New York (1973)
Constable, R.L., Allen, S.F., Brompley, H.M., et al.: Implementing Mathematics in Nuprl Proof Development System. Prentice Hall (1986)
Howard, W.A.: The formulae-as-types notion of construction. In: Seldin, J.P., Hindley, J.R. (eds.) To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism, pp. 479–490. Academic (1980)
Kitzelmann, E., Schmid, U.: Inductive synthesis of functional programs: an explanation based generalization approach. J. Mach. Learn. Res. 7, 429–454 (2006)
Korukhova, Y.: Planning proof in the deductive tableau using rippling. In: Proceedings of the 5th International Conference RASC, pp. 384–389. Nottingham Trent University, UK (2004)
Korukhova, Y.: Automatic deductive synthesis of list programs in the system ALISA. Proceedings of 10th European Conference JELIA. Lecture Notes in Artificial Intelligence, pp. 242–252. Springer, Berlin (2006)
Kraan, I., Basin, D., Bundy, A.: Middle-out reasoning for synthesis and induction. J. Symb. Comput. 16(1–2), 113–145 (1996)
Lee, R.C.T., Chang, C.L., Waldinger, R.J.: An improved program synthesizing algorithm and its correctness. Comm. ACM 17(4), 211–217 (1974)
Manna, Z., Waldinger, R.: A deductive approach to program synthesis. ACM Trans. Program. Lang. Syst. 2(1), 90–121 (1980)
Manna, Z., Waldinger, R.: Fundamentals of deductive program synthesis. IEEE Trans. Softw. Eng. 18(8), 674–704 (1992)
Paulson, L.C.: Isabelle: a generic theorem prover. Lecture Notes in Computer Science, vol. 828, pp. xvii–321 (1994)
Pientka, B., Kreitz, C.: Automating inductive specification proofs. Fundam. Inform. 39(1–2), 189–208. IOS Press (1999)
Simon, H.A.: Experiments with a heuristic compiler. J. ACM 10(4), 493–506 (1963)
Traugott, J.: Deductive synthesis of sorting programs. J. Symb. Comput. 7, 533–572 (1989)
Tyugu, E.H.: Konceptual’noe Programmirovanie (Conceptual Programming). Moscow, Nauka (1984) (in Russian)
Author information
Authors and Affiliations
Corresponding author
Additional information
The work has been partially supported by RFBR grant 05-01-00948a.
Rights and permissions
About this article
Cite this article
Korukhova, Y. An approach to automatic deductive synthesis of functional programs. Ann Math Artif Intell 50, 255–271 (2007). https://doi.org/10.1007/s10472-007-9079-9
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10472-007-9079-9