Artificial Intelligence Review

, Volume 29, Issue 1, pp 45–62 | Cite as

An introduction to inductive programming

  • Pierre Flener
  • Ute Schmid


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.


Inductive programming Machine learning 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Angluin D (1980) Queries and concept learning. Mach Learn 2: 319–342Google Scholar
  2. 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–43Google Scholar
  3. Biermann AW (1972) On the inference of turing machines from sample computations. Artif Intell 3(3): 181–198zbMATHCrossRefMathSciNetGoogle Scholar
  4. Biermann AW (1978) The inference of regular LISP programs from examples. IEEE Trans Syst Man Cybern 8(8): 585–600zbMATHCrossRefMathSciNetGoogle Scholar
  5. Biermann AW (1992) Automatic programming. In: Shapiro SC (eds) Encyclopedia of artificial intelligence, 2nd edn. Wiley, New York, pp 18–35Google Scholar
  6. Biermann AW, Guiho G, Kodratoff Y (eds) (1984) Automatic program construction techniques. Macmillan, New YorkzbMATHGoogle Scholar
  7. 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–217Google Scholar
  8. Cypher A (ed) (1993b) Watch what I do: programming by demonstration. The MIT Press, CambridgeGoogle Scholar
  9. Field AJ, Harrison PG (1988) Functional progamming. Addison-Wesley, ReadingGoogle Scholar
  10. Flener P (1995) Logic program synthesis from incomplete information. Kluwer, MassachusettsGoogle Scholar
  11. 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–198Google Scholar
  12. 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–346Google Scholar
  13. Flener P, Partridge D (2001) Inductive programming. Autom Softw Eng 8(2): 131–137CrossRefGoogle Scholar
  14. Flener P, Yılmaz S (1999) Inductive synthesis of recursive logic programs: achievements and prospects. J Log Program 41(2–3): 141–195zbMATHCrossRefGoogle Scholar
  15. 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–127zbMATHCrossRefMathSciNetGoogle Scholar
  16. Gold EM (1967) Language identification in the limit. Inf Control 10: 447–474zbMATHCrossRefGoogle Scholar
  17. Hofmann M (2008) Automated construction of XSL-templates: an inductive programming approach. VDM, SaarbrückenGoogle Scholar
  18. 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–86CrossRefGoogle Scholar
  19. 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)Google Scholar
  20. Kitzelmann E, Schmid U (2006) Inductive synthesis of functional programs—an explanation based generalization approach. J Mach Learn Res 7: 429–454MathSciNetGoogle Scholar
  21. Lieberman H (ed) (2001) Your wish is my command: programming by example. Morgan Kaufmann, San FranciscoGoogle Scholar
  22. Lowry ML, McCarthy RD (eds) (1991) Automatic software design. The MIT Press, New YorkGoogle Scholar
  23. Manna Z, Waldinger R (1992) Fundamentals of deductive program synthesis. IEEE Trans Softw Eng 18(8): 674–704CrossRefGoogle Scholar
  24. Mitchell TM (1997) Machine learning. McGraw-Hill, New YorkzbMATHGoogle Scholar
  25. Muggleton SH (1995) Inverse entailment and Progol. New Gener Comput, Special Issue Inductive Log Program 13(3–4): 245–286Google Scholar
  26. 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–381Google Scholar
  27. 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–638Google Scholar
  28. Olsson JR (1995) Inductive functional programming using incremental program transformation. Artif Intell 74(1): 55–83CrossRefGoogle Scholar
  29. 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–512Google Scholar
  30. Quinlan JR (1996) Learning first-order definitions of functions. J Artif Intell Res 5: 139–161zbMATHGoogle Scholar
  31. 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–312Google Scholar
  32. 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–82Google Scholar
  33. Rich C, Waters RC (1993) Approaches to automatic programming. In: Yovits MC (eds) Advances in computers, vol 37. Academic Press, New YorkGoogle Scholar
  34. Schmid U (1997) Inductive synthesis of functional programs—learning domain-specific control rules and abstract schemes, vol LNAI 2654. Springer–Verlag, New YorkGoogle Scholar
  35. 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 ComputingGoogle Scholar
  36. 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–225Google Scholar
  37. 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–378Google Scholar
  38. 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–182Google Scholar
  39. Shapiro EY (1983) Algorithmic program debugging. The MIT Press, New YorkGoogle Scholar
  40. Shavlik JW (1990) Acquiring recursive and iterative concepts with explanation-based learning. Mach Learn 5: 39–70Google Scholar
  41. 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–324Google Scholar
  42. Smith DR (1985) Top-down synthesis of divide-and-conquer algorithms. Artif Intell 27(1): 43–96zbMATHCrossRefGoogle Scholar
  43. Stahl I (1995) The appropriateness of predicate invention as bias shift operation in ILP. Mach Learn 20(1–2): 95–117zbMATHMathSciNetGoogle Scholar
  44. Stoy J (1977) Denotational semantics: the Scott–Strachey approach to programming language theory. The MIT Press, New YorkGoogle Scholar
  45. Summers PD (1977) A methodology for LISP program construction from examples. J ACM 24(1): 161–175zbMATHCrossRefMathSciNetGoogle Scholar
  46. 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–414Google Scholar
  47. Zeugmann T, Zilles S (2008) Learning recursive functions: a survey. Theor Comput Sci 397(1–3): 4–56zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer Science+Business Media B.V. 2009

Authors and Affiliations

  1. 1.Department of Information TechnologyUppsala UniversityUppsalaSweden
  2. 2.Faculty Information Systems and Applied Computer ScienceUniversity of BambergBambergGermany

Personalised recommendations