About: Inductive functional programming is a research topic. Over the lifetime, 15 publications have been published within this topic receiving 313 citations.
TL;DR: A new method to induce functional programs from small sets of non-recursive equations representing a subset of their input-output behaviour is described, which is search based in order to avoid strong a-priori restrictions as imposed by the classical analytical approach.
Abstract: We describe a new method to induce functional programs from small sets of non-recursive equations representing a subset of their input-output behaviour. Classical attempts to construct functional Lisp programs from input/output-examples are analytical , i.e., a Lisp program belonging to a strongly restricted program class is algorithmically derived from examples. More recent approaches enumerate candidate programs and only test them against the examples until a program which correctly computes the examples is found. Theoretically, large program classes can be induced generate-and-test based, yet this approach suffers from combinatorial explosion. We propose a combination of search and analytical techniques. The method described in this paper is search based in order to avoid strong a-priori restrictions as imposed by the classical analytical approach. Yet candidate programs are computed based on analytical techniques from the examples instead of being generated independently from the examples. A prototypical implementation shows first that programs are inducible which are not in scope of classical purely analytical techniques and second that the induction times are shorter than in recent generate-and-test based methods.
TL;DR: The analytical inductive programming system IGOR II is an implemented prototype for constructing recursive functional programs from few non-recursive, possibly non-ground example equations describing a subset of the input/output (I/O) behaviour of a function.
Abstract: The analytical inductive programming system IGOR II is an implemented prototype for constructing recursive functional programs from few non-recursive, possibly non-ground example equations describing a subset of the input/output (I/O) behaviour of a function. Starting from an initial, overly general program hypothesis, stepwise several refinement operators are applied which compute successor hypotheses. Organised as an uniformed-cost search, the hypothesis with the lowest costs is developed and replaced by its successors until the best does not contain any unbound variables.
TL;DR: The proposed algorithm can efficiently tell the number of possible functions of given size that are consistent with the given type, and thus can be a tool to evaluate other methods like genetic programming by providing the information of the baseline performance.
Abstract: A successful case of applying brute-force search to functional programming automation is presented and compared with a conventional genetic programming method. From the information of the type and the property that should be satisfied, this algorithm is able to find automatically the shortest Haskell program using the set of function components (or library) configured beforehand, and there is no need to design the library every time one requests a new functional program.
According to the presented experiments, programs consisted of several function applications can be found within some seconds even if we always use the library designed for general use. In addition, the proposed algorithm can efficiently tell the number of possible functions of given size that are consistent with the given type, and thus can be a tool to evaluate other methods like genetic programming by providing the information of the baseline performance.
TL;DR: This paper presents a library-based implementation of the systematic search algorithm which is supposed to be used with a well-known Haskell interpreter.
Abstract: In our previous work we showed that systematic search approach to inductive functional programming automation makes a remarkably efficient algorithm, but the applicability of the implemented program was limited by the very poor interpreter incorporated. In this paper, we present a library-based implementation of our systematic search algorithm which is supposed to be used with a well-known Haskell interpreter.
TL;DR: It is described how, given some assumptions, inductive programming with incremental learning can be shown to have a polynomial, rather than exponential, time complexity with respect to the size of the program to be generated.
Abstract: Inductive programming systems characteristically exhibit an exponential explosion in search time as one increases the size of the programs to be generated. As a way of overcoming this, we introduce incremental learning, a process in which an inductive programming system automatically modifies its inductive bias towards some domain through solving a sequence of gradually more difficult problems in that domain. We demonstrate a simple form of incremental learning in which a system incorporates solution programs into its background knowledge as it progresses through a sequence of problems. Using a search-based inductive functional programming system modelled on the MagicHaskeller system of Katayama [4], we perform a set of experiments comparing the performance of inductive programming with and without incremental learning. Incremental learning is shown to produce a performance improvement of at least a factor of thirty on each of the four problem sequences tested. We describe how, given some assumptions, inductive programming with incremental learning can be shown to have a polynomial, rather than exponential, time complexity with respect to the size of the program to be generated. We discuss the difficulties involved in constructing suitable problem sequences for our incremental learning system, and consider what improvements can be made to overcome these difficulties.