Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation 2015
DOI: 10.1145/2737924.2738007
|View full text |Cite
|
Sign up to set email alerts
|

Type-and-example-directed program synthesis

Abstract: This paper presents an algorithm for synthesizing recursive functions that process algebraic datatypes. It is founded on proof-theoretic techniques that exploit both type information and input-output examples to prune the search space. The algorithm uses refinement trees, a data structure that succinctly represents constraints on the shape of generated code. We evaluate the algorithm by using a prototype implementation to synthesize more than 40 benchmarks and several non-trivial larger examples. Our results d… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

1
84
0

Year Published

2016
2016
2019
2019

Publication Types

Select...
5
2
1

Relationship

0
8

Authors

Journals

citations
Cited by 135 publications
(85 citation statements)
references
References 25 publications
1
84
0
Order By: Relevance
“…The first class involves search techniques that explicitly try to build a syntactic representation of each program in the search spaceabstract syntax trees (ASTs) are common as a representation. These techniques achieve efficiency by ruling out large sets of possible programs without exploring them one-by-one, usually by discovering that particular sub-structures can never be part of a correct solution [3,28,52,57,75]. The second class involves symbolic search techniques, where the entire program space is represented symbolically, either using a special purpose representation [32,58], or, in the case of constraint-based synthesis, by reducing it to a set of constraints whose solution can be mapped to a concrete program, which can be solved using a SAT or SMT solver [33,72,74], or in some cases a numerical optimization procedure [17].…”
Section: Program Synthesismentioning
confidence: 99%
See 1 more Smart Citation
“…The first class involves search techniques that explicitly try to build a syntactic representation of each program in the search spaceabstract syntax trees (ASTs) are common as a representation. These techniques achieve efficiency by ruling out large sets of possible programs without exploring them one-by-one, usually by discovering that particular sub-structures can never be part of a correct solution [3,28,52,57,75]. The second class involves symbolic search techniques, where the entire program space is represented symbolically, either using a special purpose representation [32,58], or, in the case of constraint-based synthesis, by reducing it to a set of constraints whose solution can be mapped to a concrete program, which can be solved using a SAT or SMT solver [33,72,74], or in some cases a numerical optimization procedure [17].…”
Section: Program Synthesismentioning
confidence: 99%
“…Many of these techniques, especially those designed to support rich specifications instead of simply input-output examples, have been enabled by the ability to automatically reason about the correctness of candidate programs, and in some cases, the ability to use static analysis to rule out large sets of candidate programs all at once [52,57].…”
Section: Program Synthesismentioning
confidence: 99%
“…There has been a lot of recent interest in the synthesis community for learning programs from examples. Programming By Examples (PBE) systems have been developed for many domains including string transformations [13,14,28], data structure manipulations [29,30], interactive parser synthesis [17], higher-order functional programs over recursive data types [21,10], and program refactorings [23]. The 2016 competition included a new separate track for Programming by Examples.…”
Section: Programming By Example Trackmentioning
confidence: 99%
“…Our synthesis approach solves these challenges through a number of algorithmic innovations. Similar to multiple recent approaches to synthesis [4,9,22], our technique performs type-directed enumerative search through a space of partial programs. However, one of key technical innovations underlying our approach is to use SMT-based deduction to reject partial programs.…”
Section: Introductionmentioning
confidence: 99%