Synthesis of Recursive ADT Transformations from Reusable Templates

@inproceedings{Inala2017SynthesisOR,
  title={Synthesis of Recursive ADT Transformations from Reusable Templates},
  author={J. Inala and N. Polikarpova and Xiaokang Qiu and Benjamin S. Lerner and Armando Solar-Lezama},
  booktitle={TACAS},
  year={2017}
}
Recent work has proposed a promising approach to improving scalability of program synthesis by allowing the user to supply a syntactic template that constrains the space of potential programs. Unfortunately, creating templates often requires nontrivial effort from the user, which impedes the usability of the synthesizer. We present a solution to this problem in the context of recursive transformations on algebraic data-types. Our approach relies on polymorphic synthesis constructs: a small but… Expand
Program synthesis with algebraic library specifications
TLDR
JLibSketch is introduced, a Java program synthesis tool that allows library behavior to be described with algebraic specifications, which are rewrite rules for sequences of method calls, e.g., encryption followed by decryption (with the same key) is the identity. Expand
EdSketch: execution-driven sketching for Java
Sketching is a synthesis approach that allows users to provide high-level insights into a synthesis problem and let synthesis tools complete low-level details. Users write sketches—partial programsExpand
Resource-guided program synthesis
TLDR
The experiments show that ReSyn synthesizes programs that are asymptotically more efficient than those generated by a resource-agnostic synthesizer, and is faster than a naive combination of synthesis and resource analysis. Expand
Type-Directed Program Synthesis and Constraint Generation for Library Portability
TLDR
This paper develops a scheme that assists developers in matching their code to new libraries, without requiring the source code for these libraries, and can recover equivalent code from programs that use existing libraries and automatically port them to new interfaces. Expand
A pr 2 01 9 Resource-Guided Program Synthesis Extended Version Tristan Knoth
This article presents resource-guided synthesis, a technique for synthesizing recursive programs that satisfy both a functional specification and a symbolic resource bound.The technique isExpand
Type-Directed Program Synthesis and Constraint Generation for Accelerator Library Portability
TLDR
This paper develops a scheme that assists developers in matching their code to new libraries, without requiring the source code for these libraries, and can recover equivalent code from programs that use existing libraries and automatically port them to new interfaces. Expand
Counterexample-Guided Partial Bounding for Recursive Function Synthesis
TLDR
It is illustrated that it is possible to selectively bound a subset of the (recursively typed) parameters, each by a suitable bound, in the synthesis of recursive functions over recursive input data types. Expand
Bridging Arrays and ADTs in Recursive Proofs
TLDR
The relational invariants are recursively-defined, and thus are valid for data structures of unbounded size and can be seen as an algorithm for solving Constrained Horn Clauses of a specific sort. Expand
Accelerating Syntax-Guided Invariant Synthesis
TLDR
An evaluation of the new algorithm for syntax-guided synthesis of inductive invariants shows that it exhibits a more predictable behavior than its predecessor, and it is competitive to the state-of-the-art invariant synthesizers based on Property Directed Reachability. Expand
Learning inductive invariants by sampling from frequency distributions
TLDR
A framework that follows the Syntax-Guided Synthesis paradigm to iteratively sample candidate invariants from a formal grammar and check them with an SMT solver, and is able to check several candidates at the same time to filter them effectively using the well known Houdini algorithm. Expand
...
1
2
...

References

SHOWING 1-10 OF 33 REFERENCES
Program synthesis from polymorphic refinement types
TLDR
The tool was able to synthesize more complex programs than those reported in prior work, as well as most of the benchmarks tackled by existing synthesizers, often starting from a more concise and intuitive user input. Expand
Complete functional synthesis
TLDR
This work proposes to generalize decision procedures into predictable and complete synthesis procedures, which are guaranteed to find code that satisfies the specification if such code exists and under which synthesis will statically decide whether the solution is guaranteed to exist, and whether it is unique. Expand
Program synthesis by sketching
TLDR
Sketching is introduced, a new style of synthesis that offers a fresh approach to the synergy problem and shows that sketching is a viable approach to making synthesis practical in a general programming context. Expand
Synthesizing data structure transformations from input-output examples
We present a method for example-guided synthesis of functional programs over recursive data structures. Given a set of input-output examples, our method synthesizes a program in a functional languageExpand
Type Assisted Synthesis of Recursive Transformers on Algebraic Data Types
TLDR
It is shown how synthesis can help implement interesting functions involving pattern matching and algebraic data types by synthesizing desugaring functions for lambda calculus that force the synthesizer to discover Church encodings for pairs and boolean operations. Expand
Recursive Program Synthesis
TLDR
This paper presents Escher, a generic and efficient algorithm that interacts with the user via input-output examples, and synthesizes recursive programs implementing intended behaviour, and outperforms a state-of-the-art SAT-based synthesis tool from the literature. Expand
Syntax-guided synthesis
TLDR
This work describes three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, reports on prototype implementations, and presents experimental results on an initial set of benchmarks. Expand
An overview of the Leon verification system: verification by translation to recursive functions
TLDR
A generational unrolling strategy for recursive templates that yields smaller satisfiable formulas and ensures completeness for counterexamples is described and it is shown that Leon successfully finds bugs or proves completeness of pattern matching as well as validity of function postconditions. Expand
Test-driven synthesis
TLDR
A program synthesizer which can be parameterized by an arbitrary DSL that may contain conditionals and loops and therefore is able to synthesize programs in any domain and is compared to state-of-the-art DSL-specific synthesizers as well to the general purpose synthesizer Sketch. Expand
Path-based inductive synthesis for program inversion
TLDR
The problem of semi-automated inversion of imperative programs, which has the potential to make it much easier and less error prone to write programs that naturally pair as inverses, is investigated and a novel synthesis technique called Path-based inductive synthesis (PINS) is proposed. Expand
...
1
2
3
4
...