Program Synthesis using Conflict-Driven Learning
Yu Feng, Ruben Martins, Osbert Bastani, and Isil Dillig

TL;DR
This paper introduces a conflict-driven learning approach for program synthesis that learns from mistakes to efficiently prune the search space, demonstrated by a new synthesizer outperforming existing tools in data wrangling and functional programming.
Contribution
The paper presents a novel conflict-driven synthesis method using lemmas and equivalence modulo conflict, implemented in the Neo synthesizer, improving search efficiency over prior tools.
Findings
Neo outperforms Morpheus and Deepcoder in experiments
Conflict-driven learning significantly reduces search space
Method applicable to data wrangling and functional programming
Abstract
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 search space. We have implemented a general-purpose CDCL-style program synthesizer called Neo and evaluate it in two different application domains, namely data wrangling in R and functional programming over lists. Our experiments demonstrate the substantial benefits of conflict-driven learning and show that Neo outperforms two state-of-the-art synthesis tools, Morpheus and Deepcoder, that target these…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Software Reliability and Analysis Research
