Selecting Representative Examples for Program Synthesis
arXiv:1711.03243
Abstract
Program synthesis is a class of regression problems where one seeks a solution, in the form of a source-code program, mapping the inputs to their corresponding outputs exactly. Due to its precise and combinatorial nature, program synthesis is commonly formulated as a constraint satisfaction problem, where input-output examples are encoded as constraints and solved with a constraint solver. A key challenge of this formulation is scalability: while constraint solvers work well with a few well-chosen examples, a large set of examples can incur significant overhead in both time and memory. We describe a method to discover a subset of examples that is both small and representative: the subset is constructed iteratively, using a neural network to predict the probability of unchosen examples conditioned on the chosen examples in the subset, and greedily adding the least probable example. We empirically evaluate the representativeness of the subsets constructed by our method, and demonstrate such subsets can significantly improve synthesis time and stability.
Cited by in corpus (9)
- On the Replicability and Reproducibility of Deep Learning in Software Engineering
- Learning Compositional Rules via Neural Program Synthesis
- Write, Execute, Assess: Program Synthesis with a REPL
- Toward Code Generation: A Survey and Lessons from Semantic Parsing
- Program Synthesis with Pragmatic Communication
- Learning Neurosymbolic Generative Models via Program Synthesis
- Synthesizing Queries via Interactive Sketching
- Unsupervised Learning of Neurosymbolic Encoders
- Formal Fields: A Framework to Automate Code Generation Across Domains