Inductive programming incorporates all approaches which are concerned with learning programs or algorithms from incomplete specifications. Possible inputs in an IP system are (1) a set of training inputs and corresponding outputs or an output evaluation function, describing the desired behavior of the intended program, (2) traces or action sequences which describe the process of calculating specific outputs, (3) constraints for the program to be induced concerning its time efficiency or its complexity, (4) various kinds of background knowledge such as standard data types, predefined functions to be used, program schemes or templates describing the data flow of the intended program, (5) heuristics for guiding the search for a solution or other biases. Output of an IP system is a program in some arbitrary programming language containing conditionals and loop- or recursive control structures.

Classical and current approaches to inductive programming are inductive synthesis of functional programs (extensions of Summers-like strategies), inductive logic programming, evolutionary computation, and grammar inference. Typical areas of application are in the domain of software engineering where structural learning, software assistants and software agents can help to relieve programmers from routine tasks, give programming support for endusers, or support of novice programmers and programming tutor systems.
Further areas of application are language learning, learning recursive control rules for AI-planning, learning recursive concepts in web-mining or for data-format transformations.

The AAIP workshop took place the first time in August 2005 at the ICML in Bonn (http://www.cogsys.wiai.uni-bamberg.de/aaip05/).
Invited speakers were Stephen Muggleton, Fritz Wysotzki, and Marcus Hutter. Presentations were focussed on different basic approaches to inductive programming. At the end of the workshop a one hour discussion session brought many fruitful results with respect to comparing the different approaches and application potential.
The approximately 25 participants encouraged the organizers to continue this workshop, since it is the only event where cross-fertilization from different areas (e.g., logic/functional/constraint programming, machine learning, grammar inference, evolutionary programming) is possible for the problem of learning programs from incomplete specifications.

Goals of the Workshop

In the workshop, we aim at bringing together researchers working on different approaches to inductive programming with the goal of discussing and evaluating the relative strengths and limitations of the different approaches (class of learnable programs, quality of learned programs, amount of background knowledge needed for synthesis, efficiency of synthesis, etc.). Furthermore, we are interested in presenting current applications and discussing possible further application domains.


The workshop will be interesting to anyone studying the inductive synthesis of general programs in any aspect.

Topics of interest include but are not limited to:

  • New approaches of synthesis of recursive programs with techniques from inductive logic programming, genetic programming, synthesis of functional programs, grammar inference.
  • Theoretical analyses of learnability of classes of recursive/loop programs.
  • Applications of inductive synthesis of general programs in the context of software engineering, such as programming support for endusers, novice programmers and routine programming.
  • Applications of inductive synthesis of general programs for policy learning, language learning, web-mining, data transformation.