Bottom-up Synthesis of Recursive Functional Programs using Angelic Execution
Anders Miltner, Adrian Trejo Nu\~nez, Ana Brendel, Swarat, Chaudhuri, Isil Dillig

TL;DR
This paper introduces a bottom-up method for synthesizing recursive functional programs using angelic semantics, enabling effective synthesis from logical specifications and outperforming prior approaches.
Contribution
It presents the first purely bottom-up recursive program synthesis technique utilizing angelic semantics and version space learning.
Findings
Successfully synthesized 94% of benchmarks
Outperformed prior synthesis methods
Demonstrated effectiveness of angelic semantics in synthesis
Abstract
We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fashion. The main challenge is that effective bottom-up methods need to execute sub-expressions of the code being synthesized, but it is impossible to execute a recursive subexpression of a program that has not been fully constructed yet. In this paper, we address this challenge using the concept of angelic semantics. Specifically, our method finds a program that satisfies the specification under angelic semantics (we refer to this as angelic synthesis), analyzes the assumptions made during its angelic execution, uses this analysis to strengthen the specification, and finally reattempts…
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
TopicsLogic, programming, and type systems · Formal Methods in Verification · Software Testing and Debugging Techniques
