Learning Abstractions for Program Synthesis
Xinyu Wang, Greg Anderson, Isil Dillig, K. L. McMillan

TL;DR
This paper introduces ATLAS, a method that learns abstractions for program synthesis using tree interpolation and constraint solving, enabling faster and more effective synthesis with minimal training data.
Contribution
It presents a novel data-driven approach to automatically learn abstractions and transformers for domain-specific synthesis, reducing reliance on expert knowledge.
Findings
ATLAS learns useful abstractions from few training problems.
Learned abstractions significantly improve synthesis performance.
The approach outperforms manually-crafted abstractions in experiments.
Abstract
Many example-guided program synthesis techniques use abstractions to prune the search space. While abstraction-based synthesis has proven to be very powerful, a domain expert needs to provide a suitable abstract domain, together with the abstract transformers of each DSL construct. However, coming up with useful abstractions can be non-trivial, as it requires both domain expertise and knowledge about the synthesizer. In this paper, we propose a new technique for learning abstractions that are useful for instantiating a general synthesis framework in a new domain. Given a DSL and a small set of training problems, our method uses tree interpolation to infer reusable predicate templates that speed up synthesis in a given domain. Our method also learns suitable abstract transformers by solving a certain kind of second-order constraint solving problem in a data-driven way. We have…
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 · Logic, programming, and type systems
