Abstract
The research field of inductive programming is concerned with the design of algorithms for learning computer programs with complex flow of control (typically recursive calls) from incomplete specifications such as examples. We introduce a basic algorithmic approach for inductive programming and illustrate it with three systems: dialogs learns logic programs by combining inductive and abductive reasoning; the classical thesys system and its extension igor1 learn functional programs based on a recurrence detection mechanism in traces; igor2 learns functional programs over algebraic data-types making use of constructor-term rewriting systems. Furthermore, we give a short history of inductive programming, discuss related approaches, and give hints about current applications and possible future directions of research.
Similar content being viewed by others
References
Angluin D (1980) Queries and concept learning. Mach Learn 2: 319–342
Backus J (1981) The algebra of functional programs: function-level reasoning, linear equations and extended definitions. In: Díaz J, Ramos I (eds) Formalization of programming concepts, vol 107. Springer, pp 1–43
Biermann AW (1972) On the inference of turing machines from sample computations. Artif Intell 3(3): 181–198
Biermann AW (1978) The inference of regular LISP programs from examples. IEEE Trans Syst Man Cybern 8(8): 585–600
Biermann AW (1992) Automatic programming. In: Shapiro SC (eds) Encyclopedia of artificial intelligence, 2nd edn. Wiley, New York, pp 18–35
Biermann AW, Guiho G, Kodratoff Y (eds) (1984) Automatic program construction techniques. Macmillan, New York
Cypher A (1993a) Programming repetitive tasks by demonstration. In: Cypher A (eds) Watch what I do: programming by demonstration. The MIT Press, Cambridge, pp 205–217
Cypher A (ed) (1993b) Watch what I do: programming by demonstration. The MIT Press, Cambridge
Field AJ, Harrison PG (1988) Functional progamming. Addison-Wesley, Reading
Flener P (1995) Logic program synthesis from incomplete information. Kluwer, Massachusetts
Flener P (1997) Inductive logic program synthesis with DIALOGS. In: Muggleton SH (ed) Revised selected papers of the 6th International Workshop on Inductive Logic Programming (ILP 1996), vol LNAI 1314. Springer–Verlag, pp 175–198
Flener P (2002) Achievements and prospects of program synthesis. In: Kakas A, Sadri F (eds) Computational logic: logic programming and beyond; essays in honour of Robert A. Kowalski, vol LNAI 2407. Springer–Verlag, pp 310–346
Flener P, Partridge D (2001) Inductive programming. Autom Softw Eng 8(2): 131–137
Flener P, Yılmaz S (1999) Inductive synthesis of recursive logic programs: achievements and prospects. J Log Program 41(2–3): 141–195
Flener P, Lau K-K, Ornaghi M, Richardson J (2000) An abstract formalisation of correct schemas for program synthesis. J Symb Comput 30(1): 93–127
Gold EM (1967) Language identification in the limit. Inf Control 10: 447–474
Hofmann M (2008) Automated construction of XSL-templates: an inductive programming approach. VDM, Saarbrücken
Hofmann M, Kitzelmann E, Schmid U (2008) Analysis and evaluation of inductive programming systems in a higher-order framework. In: Dengel A, Berns K, Breuel TM, Bomarius F, Roth-Berghofer TR (eds) KI 2008: advances in artificial intelligence. Springer, Berlin, pp 78–86
Kitzelmann E (2007) Data-driven induction of recursive functions from input/output-examples. In: Proceedings of the workshop on Approaches and Applications of Inductive Programming (AAIP 2007) at ECML 2007 (15–26)
Kitzelmann E, Schmid U (2006) Inductive synthesis of functional programs—an explanation based generalization approach. J Mach Learn Res 7: 429–454
Lieberman H (ed) (2001) Your wish is my command: programming by example. Morgan Kaufmann, San Francisco
Lowry ML, McCarthy RD (eds) (1991) Automatic software design. The MIT Press, New York
Manna Z, Waldinger R (1992) Fundamentals of deductive program synthesis. IEEE Trans Softw Eng 18(8): 674–704
Mitchell TM (1997) Machine learning. McGraw-Hill, New York
Muggleton SH (1995) Inverse entailment and Progol. New Gener Comput, Special Issue Inductive Log Program 13(3–4): 245–286
Muggleton SH, Feng C (1990) Efficient induction of logic programs. In: Proceedings of the Workshop on Algorithmic Learning Theory by the Japanese Society for AI, pp 368–381
Muggleton SH, Bryant CH, Srinivasan A (2000) Learning Chomsky-like grammars for biological sequence families. In: Proceedings of the 17th International Conference on Machine Learning (ICML 2000). Morgan Kaufmann, pp 631–638
Olsson JR (1995) Inductive functional programming using incremental program transformation. Artif Intell 74(1): 55–83
Olsson JR, Powers DMW (2003) Machine learning of human language through automatic programming. In: Proceedings of the International Conference on Cognitive Science. University of New South Wales, Australia, pp 507–512
Quinlan JR (1996) Learning first-order definitions of functions. J Artif Intell Res 5: 139–161
Quinlan JR, Cameron-Jones RM (1995) Induction of logic programs: FOIL and related systems. New Gener Comput, Special Issue Inductive Log Program 13(3–4): 287–312
Rao MRKK (2004) Inductive inference of term rewriting systems from positive data. In: Proceedings of the 15th International Conference on Algorithmic Learning Theory (ALT 2004), vol 3244. Springer–Verlag, pp 69–82
Rich C, Waters RC (1993) Approaches to automatic programming. In: Yovits MC (eds) Advances in computers, vol 37. Academic Press, New York
Schmid U (1997) Inductive synthesis of functional programs—learning domain-specific control rules and abstract schemes, vol LNAI 2654. Springer–Verlag, New York
Schmid U, Waltermann J (2004) Automatic synthesis of XSL-transformations from example documents. In: Proceedings of Artificial Intelligence and Applications (AIA 2004), pp 252–257. Acta Press, Series on Artificial Intelligence and Soft Computing
Schmid U, Wysotzki F (1998) Induction of recursive program schemes. In: Proceedings of the 10th European Conference on Machine Learning (ECML 1998), vol LNAI 1398. Springer–Verlag, pp 214–225
Schmid U, Wysotzki F (2000) Applying inductive program synthesis to macro learning. In: Proceedings of the 5th International Conference on Artificial Intelligence Planning and Scheduling (AIPS 2000). AAAI Press, pp 371–378
Schrödl S, Edelkamp S (1999) Inferring flow of control in program synthesis by example. In: Proceedings of the 23rd Annual German Conference on Artificial Intelligence (KI 1999), vol 1701. Springer–Verlag, pp 171–182
Shapiro EY (1983) Algorithmic program debugging. The MIT Press, New York
Shavlik JW (1990) Acquiring recursive and iterative concepts with explanation-based learning. Mach Learn 5: 39–70
Smith DR (1984) The synthesis of LISP programs from examples: a survey. In: Biermann AW, Guiho G, Kodratoff Y (eds) Automatic program construction techniques. Macmillan, New York, pp 307–324
Smith DR (1985) Top-down synthesis of divide-and-conquer algorithms. Artif Intell 27(1): 43–96
Stahl I (1995) The appropriateness of predicate invention as bias shift operation in ILP. Mach Learn 20(1–2): 95–117
Stoy J (1977) Denotational semantics: the Scott–Strachey approach to programming language theory. The MIT Press, New York
Summers PD (1977) A methodology for LISP program construction from examples. J ACM 24(1): 161–175
Wysotzki F (1983) Representation and induction of infinite concepts and recursive action sequences. In: Proceedings of the 8th International Joint Conference on Artificial Intelligence (IJCAI 1983). Morgan Kaufmann, pp 409–414
Zeugmann T, Zilles S (2008) Learning recursive functions: a survey. Theor Comput Sci 397(1–3): 4–56
Author information
Authors and Affiliations
Corresponding author
Additional information
A short, non-technical version of this paper appears in C. Sammut, editor, Encyclopedia of Machine Learning, Springer–Verlag, forthcoming.
The paper was written while the first author was on sabbatical in 2006/2007 at Sabancı University in İstanbul, Turkey.
Rights and permissions
About this article
Cite this article
Flener, P., Schmid, U. An introduction to inductive programming. Artif Intell Rev 29, 45–62 (2008). https://doi.org/10.1007/s10462-009-9108-7
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10462-009-9108-7