Results

**11 - 17**of**17**### Porting IgorII from MAUDE to HASKELL Introducing a System’s Design

"... This paper describes our efforts and solutions in porting our IP system IGOR 2 from the termrewriting language MAUDE to HASKELL. We describe how, for our purpose necessary features of the homoiconic language MAUDE can be simulated in HASKELL using a stateful monad transformer. With our new implement ..."

Abstract
- Add to MetaCart

This paper describes our efforts and solutions in porting our IP system IGOR 2 from the termrewriting language MAUDE to HASKELL. We describe how, for our purpose necessary features of the homoiconic language MAUDE can be simulated in HASKELL using a stateful monad transformer. With our new implementation we are now able to use higher-order context during our synthesis and extract information from type classes useable as background knowledge. Keeping our new implementation as close as possible to our old, we could keep all features of our system.

### Synthesis of Functions Using Generic Programming

"... Abstract. This paper describes a very flexible way to synthesize functions matching a given predicate. This can be used to find general recursive functions or λ-terms obeying an input–output behavior specified by a number of examples. Generating complex algorithms from just a small number of simple ..."

Abstract
- Add to MetaCart

Abstract. This paper describes a very flexible way to synthesize functions matching a given predicate. This can be used to find general recursive functions or λ-terms obeying an input–output behavior specified by a number of examples. Generating complex algorithms from just a small number of simple input-output pairs is the goal of inductive programming. This paper illustrates that our approach works well in some challenging examples. 1

### Incremental Inductive Programming

"... Inductive Programming (IP) refers to the automated generation of computer programs from incomplete specifications, such as input-output examples. We introduce a new technique called Incremental Inductive Programming (IIP), which combines IP with transfer learning, as a way to get IP to scale up to m ..."

Abstract
- Add to MetaCart

Inductive Programming (IP) refers to the automated generation of computer programs from incomplete specifications, such as input-output examples. We introduce a new technique called Incremental Inductive Programming (IIP), which combines IP with transfer learning, as a way to get IP to scale up to more complex problems. Using a simple, brute-force search based IP system implemented for the purpose, we perform a set of experiments comparing the performance of IIP versus standard non-incremental IP. IIP

### Algorithms, Theory

"... In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new progr ..."

Abstract
- Add to MetaCart

In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new program synthesis technique based on three key insights: (i) reduction of symbolic reasoning to concrete reasoning (based on a deep theoretical result that reduces verification to random testing), (ii) extending the instruction set of the programming language with higher level primitives (representing basic constructions found in textbook chapters, inspired by how humans use their experience and knowledge gained from chapters to perform complicated constructions), and (iii) pruning the forward exhaustive search using a goal-directed heuristic (simulating backward reasoning performed by humans). Our tool can successfully synthesize constructions for various geometry problems picked up from high-school textbooks and examination papers in a reasonable amount of time. This opens up an amazing set of possibilities in the context of making classroom teaching interactive.

### Proceedings of AAIP 2011 4th International Workshop on Approaches and Applications of Inductive Programming

"... Inductive programming is concerned with the automated construction of computer program code – typically including control structures like branching and recursion or loops – from incomplete specifications such as input/output examples. Inferred programs must be correct with respect to the provided ex ..."

Abstract
- Add to MetaCart

Inductive programming is concerned with the automated construction of computer program code – typically including control structures like branching and recursion or loops – from incomplete specifications such as input/output examples. Inferred programs must be correct with respect to the provided examples in a generalizing sense: they should neither be equivalent to them, nor inconsistent. Applications in the focus of inductive programming are, among others, automated software development, algorithm design, end-user programming, cognitive modeling, and self-programming intelligent agents. Inductive programming is studied in different communities such as artificial intelligence, evolutionary computation, and programming languages and systems and has been tackled by different approaches like syntactic recurrence detection in sets of input/output terms, inductive reasoning, generate-and-test search in program spaces, and SAT and SMT solving. The Workshop on Approaches and Applications of Inductive Programming (AAIP) series aims at bringing together researchers who are interested in inductive programming and to advance fruitful interaction between the different communities with respect to inductive programming approaches and algorithms, challenge problems, and potential applications. This year, AAIP took place in

### about Programs

"... Program Synthesis, which is the task of discovering programs that realize user intent, can be useful in several scenarios: enabling people with no programming background to develop utility programs, helping regular programmers automatically discover tricky/mundane details, program understanding, dis ..."

Abstract
- Add to MetaCart

Program Synthesis, which is the task of discovering programs that realize user intent, can be useful in several scenarios: enabling people with no programming background to develop utility programs, helping regular programmers automatically discover tricky/mundane details, program understanding, discovery of new algorithms, and even teaching. This paper describes three key dimensions in program synthesis: expression of user intent, space of programs over which to search, and the search technique. These concepts are illustrated by brief description of various program synthesis projects that target synthesis of a wide variety of programs such as standard undergraduate textbook algorithms (e.g., sorting, dynamic programming), program inverses (e.g., decoders, deserializers), bitvector manipulation routines, deobfuscated programs, graph algorithms, text-manipulating routines, mutual exclusion algorithms, etc.

### Proceedings of the Twenty-Third International Joint Conference on Artificial Intelligence Bootstrap Learning via Modular Concept Discovery

"... Suppose a learner is faced with a domain of problems about which it knows nearly nothing. It does not know the distribution of problems, the space of solutions is not smooth, and the reward signal is uninformative, providing perhaps a few bits of information but not enough to steer the learner effec ..."

Abstract
- Add to MetaCart

Suppose a learner is faced with a domain of problems about which it knows nearly nothing. It does not know the distribution of problems, the space of solutions is not smooth, and the reward signal is uninformative, providing perhaps a few bits of information but not enough to steer the learner effectively. How can such a learner ever get off the ground? A common intuition is that if the solutions to these problems share a common structure, and the learner can solve some simple problems by brute force, it should be able to extract useful components from these solutions and, by composing them, explore the solution space more efficiently. Here, we formalize this intuition, where the solution space is that of typed functional programs and the gained information is stored as a stochastic grammar over programs. We propose an iterative procedure for exploring such spaces: in the first step of each iteration, the learner explores a finite subset of the domain, guided by a stochastic grammar; in the second step, the learner compresses the successful solutions from the first step to estimate a new stochastic grammar. We test this procedure on symbolic regression and Boolean circuit learning and show that the learner discovers modular concepts for these domains. Whereas the learner is able to solve almost none of the posed problems in the procedure’s first iteration, it rapidly becomes able to solve a large number by gaining abstract knowledge of the structure of the solution space. 1