Results 11  20
of
28
Enumerating WellTyped Terms Generically
, 2009
"... We use generic programming techniques to generate welltyped lambda terms. We encode welltyped terms by generalized algebraic datatypes (GADTs) and existential types. The Spine approach (??) to generic programming supports GADTs, but it does not support the definition of generic producers for exist ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
We use generic programming techniques to generate welltyped lambda terms. We encode welltyped terms by generalized algebraic datatypes (GADTs) and existential types. The Spine approach (??) to generic programming supports GADTs, but it does not support the definition of generic producers for existentials. We describe how to extend the Spine approach to support existentials and we use the improved Spine to define a generic enumeration function. We show that the enumeration function can be used to generate the terms of simply typed lambda calculus.
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 eff ..."
Abstract

Cited by 2 (1 self)
 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
Ideas for Connecting Inductive Program Synthesis and Bidirectionalization
"... We share a vision of connecting the topics of bidirectional transformation and inductive program synthesis, by proposing to use the latter in approaching problematic aspects of the former. This research perspective does not present accomplished results, rather opening discussion and describing exper ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
We share a vision of connecting the topics of bidirectional transformation and inductive program synthesis, by proposing to use the latter in approaching problematic aspects of the former. This research perspective does not present accomplished results, rather opening discussion and describing experiments designed to explore the potential of inductive program synthesis for bidirectionalization (the act of automatically producing a backwards from a forwards transformation), in particular to address the issue of integrating programmer intentions and expectations. Categories and Subject Descriptors I.2.2 [Artificial Intelligence]: Automatic Programming—Program synthesis; D.1.2 [Programming
SYSTEMATIC SYNTHESIS OF λTERMS
"... Abstract. In this paper we show how to generate terms in the λcalculus that match a given number of function argument result pairs. It appears that the number of λterms is too large to find terms reasonably fast based on the grammar of λcalculus alone. By adding knowledge such as the desired numb ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
Abstract. In this paper we show how to generate terms in the λcalculus that match a given number of function argument result pairs. It appears that the number of λterms is too large to find terms reasonably fast based on the grammar of λcalculus alone. By adding knowledge such as the desired number of arguments it is possible to synthesize λterms effectively for some interesting examples. This yields surprising terms that are unlikely to be found by a human. An interesting subproblem is the determination of suitability of candidate terms based on equivalence of terms. We used an approximation of equivalence by a finite number of reduction steps. This implies that the test for equivalence can also yield the value undefined. Fortunately the test system used is able to handle undefined test results. For Henk Barendregt on his sixtieth birthday 1.
Generating generic functions
 In WGP ’06: Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
, 2006
"... www.cs.uu.nl ..."
(Show Context)
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

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
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 goaldirected heuristic (simulating backward reasoning performed by humans). Our tool can successfully synthesize constructions for various geometry problems picked up from highschool 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.
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
(Show Context)
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 higherorder 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.
Languages, Theory
"... 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
(Show Context)
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, textmanipulating routines, mutual exclusion algorithms, etc. Categories and Subject Descriptors D.1.2 [Programming Techniques]:
Incremental Inductive Programming
"... Inductive Programming (IP) refers to the automated generation of computer programs from incomplete specifications, such as inputoutput 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
(Show Context)
Inductive Programming (IP) refers to the automated generation of computer programs from incomplete specifications, such as inputoutput 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, bruteforce search based IP system implemented for the purpose, we perform a set of experiments comparing the performance of IIP versus standard nonincremental IP. IIP
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, enduser programming, cognitive modeling, and selfprogramming 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, generateandtest 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