Program synthesis using conflict-driven learning

@article{Feng2018ProgramSU,
  title={Program synthesis using conflict-driven learning},
  author={Yu Feng and Ruben Martins and Osbert Bastani and Isil Dillig},
  journal={Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation},
  year={2018}
}
  • Yu Feng, Ruben Martins, Isil Dillig
  • Published 21 November 2017
  • Computer Science
  • Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
We propose a new conflict-driven program synthesis technique that is capable of learning from past mistakes. Given a spurious program that violates the desired specification, our synthesis algorithm identifies the root cause of the conflict and learns new lemmas that can prevent similar mistakes in the future. Specifically, we introduce the notion of equivalence modulo conflict and show how this idea can be used to learn useful lemmas that allow the synthesizer to prune large parts of the… 

Figures and Tables from this paper

Constraint-Driven Learning of Logic Programs
Two fundamental challenges in program synthesis, i.e. learning programs from specifications, are (1) program correctness and (2) search efficiency. We claim logical constraints can address both: (1)
Using human-in-the-loop synthesis to author functional reactive programs
TLDR
An efficient encoding of functional reactive programming (FRP) semantics based on functional programming over lists lifted in Rosette is written and it is demonstrated that this technique is state-of-the-art.
Maximal multi-layer specification synthesis
TLDR
A hybrid model that combines the power of an LSTM-based sequence-to-sequence model with the apriori algorithm for mining association rules through unsupervised learning is proposed, which reduces the problem of solving a multi-layer specification synthesis to a Max-SMT problem.
General Program Synthesis Using Guided Corpus Generation and Automatic Refactoring
TLDR
This work proposes a hybrid search-based approach which combines a genetic algorithm to autonomously generate a training corpus of programs centred around a set of highly abstracted hints describing interesting features, and a neural network which trains on this data and automatically refactors it towards a form which makes a more ideal use of the neural network’s representational capacity.
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.
Program Synthesis with Constraint Solving for the OutSystems Language
TLDR
This work tackles the problem of synthesizing OutSystems expressions in a setting where the specifications are given in the form of input-output examples, focusing on expressions that manipulate the integer and text datatypes.
DeeperCoder: Code Generation Using Machine Learning
TLDR
A program generation system based on input and output specification based on a programming-by-example technique used in program synthesis that can generate computer programs that satisfies user requirements based on inputs and outputs is presented.
Scaling Functional Synthesis and Repair
TLDR
A novel fault localization technique detects erroneous snippets with concrete execution and eliminates false positives by analyzing dependencies between execution traces, and a modified version of the synthesis algorithm generates fixes for it by introducing modifications to the original erroneous code.
Gauss: program synthesis by reasoning over graphs
TLDR
Gauss is presented, a synthesis algorithm for table transformations that accepts partial input-output examples, along with user intent graphs, and is able to reduce the search space by 56×, 73× and 664× on average, resulting in 7×, 26× and 7× speedups in synthesis times on average.
Program Synthesis from Noisy Tabular Data
TLDR
This document targets program synthesis, the task of automatically generating programs from a set of constraints, and divides its contributions into a hybrid algorithm for program enumeration that uses both SMT and graph-based search, and a generalized synthesis algorithm to solve the problem of synthesizing programs from noisy examples.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 49 REFERENCES
Program synthesis using abstraction refinement
TLDR
A refinement-based synthesis algorithm that uses abstract finite tree automata (AFTA), which uses a coarse initial program abstraction to construct an initial AFTA, which is iteratively refined by constructing a proof of incorrectness of any spurious program.
Type-and-example-directed program synthesis
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
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 language
Oracle-guided component-based program synthesis
TLDR
A novel approach to automatic synthesis of loop-free programs based on a combination of oracle-guided learning from examples, and constraint-based synthesis from components using satisfiability modulo theories (SMT) solvers is presented.
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.
Look for the Proof to Find the Program: Decorated-Component-Based Program Synthesis
We introduce a technique for component-based program synthesis that relies on searching for a target program and its proof of correctness simultaneously using a purely constraint-based approach,
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.
Synthesis of loop-free programs
TLDR
Results are presented that show that the tool Brahma can efficiently synthesize highly nontrivial 10-20 line loop-free bitvector programs, and are beyond the reach of the other tools based on sketching and superoptimization.
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.
DeepCoder: Learning to Write Programs
TLDR
The approach is to train a neural network to predict properties of the program that generated the outputs from the inputs to augment search techniques from the programming languages community, including enumerative search and an SMT-based solver.
...
1
2
3
4
5
...