Program synthesis using conflict-driven learning

Y Feng, R Martins, O Bastani, I Dillig - ACM SIGPLAN Notices, 2018 - dl.acm.org
ACM SIGPLAN Notices, 2018dl.acm.org
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 …
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 respective domains.
ACM Digital Library
以上显示的是最相近的搜索结果。 查看全部搜索结果