Skip to main content
Log in

An introduction to inductive programming

  • Published:
Artificial Intelligence Review Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Angluin D (1980) Queries and concept learning. Mach Learn 2: 319–342

    Google Scholar 

  • 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

    Article  MATH  MathSciNet  Google Scholar 

  • Biermann AW (1978) The inference of regular LISP programs from examples. IEEE Trans Syst Man Cybern 8(8): 585–600

    Article  MATH  MathSciNet  Google Scholar 

  • Biermann AW (1992) Automatic programming. In: Shapiro SC (eds) Encyclopedia of artificial intelligence, 2nd edn. Wiley, New York, pp 18–35

    Google Scholar 

  • Biermann AW, Guiho G, Kodratoff Y (eds) (1984) Automatic program construction techniques. Macmillan, New York

    MATH  Google Scholar 

  • 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

    Google Scholar 

  • Cypher A (ed) (1993b) Watch what I do: programming by demonstration. The MIT Press, Cambridge

    Google Scholar 

  • Field AJ, Harrison PG (1988) Functional progamming. Addison-Wesley, Reading

    Google Scholar 

  • Flener P (1995) Logic program synthesis from incomplete information. Kluwer, Massachusetts

    Google Scholar 

  • 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

    Article  Google Scholar 

  • Flener P, Yılmaz S (1999) Inductive synthesis of recursive logic programs: achievements and prospects. J Log Program 41(2–3): 141–195

    Article  MATH  Google Scholar 

  • 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

    Article  MATH  MathSciNet  Google Scholar 

  • Gold EM (1967) Language identification in the limit. Inf Control 10: 447–474

    Article  MATH  Google Scholar 

  • Hofmann M (2008) Automated construction of XSL-templates: an inductive programming approach. VDM, Saarbrücken

    Google Scholar 

  • 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

    Chapter  Google Scholar 

  • 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

    MathSciNet  Google Scholar 

  • Lieberman H (ed) (2001) Your wish is my command: programming by example. Morgan Kaufmann, San Francisco

    Google Scholar 

  • Lowry ML, McCarthy RD (eds) (1991) Automatic software design. The MIT Press, New York

    Google Scholar 

  • Manna Z, Waldinger R (1992) Fundamentals of deductive program synthesis. IEEE Trans Softw Eng 18(8): 674–704

    Article  Google Scholar 

  • Mitchell TM (1997) Machine learning. McGraw-Hill, New York

    MATH  Google Scholar 

  • Muggleton SH (1995) Inverse entailment and Progol. New Gener Comput, Special Issue Inductive Log Program 13(3–4): 245–286

    Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    MATH  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • Schmid U (1997) Inductive synthesis of functional programs—learning domain-specific control rules and abstract schemes, vol LNAI 2654. Springer–Verlag, New York

    Google Scholar 

  • 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

    Google Scholar 

  • Shavlik JW (1990) Acquiring recursive and iterative concepts with explanation-based learning. Mach Learn 5: 39–70

    Google Scholar 

  • 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

    Google Scholar 

  • Smith DR (1985) Top-down synthesis of divide-and-conquer algorithms. Artif Intell 27(1): 43–96

    Article  MATH  Google Scholar 

  • Stahl I (1995) The appropriateness of predicate invention as bias shift operation in ILP. Mach Learn 20(1–2): 95–117

    MATH  MathSciNet  Google Scholar 

  • Stoy J (1977) Denotational semantics: the Scott–Strachey approach to programming language theory. The MIT Press, New York

    Google Scholar 

  • Summers PD (1977) A methodology for LISP program construction from examples. J ACM 24(1): 161–175

    Article  MATH  MathSciNet  Google Scholar 

  • 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

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ute Schmid.

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

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10462-009-9108-7

Keywords

Navigation