Automating Pruning in Top-Down Enumeration for Program Synthesis Problems with Monotonic Semantics
Keith J. C. Johnson, Rahul Krishnan, Thomas Reps, Loris D'Antoni

TL;DR
This paper introduces an automated abstraction-based pruning method for program synthesis that leverages monotonic semantics to improve search efficiency without domain-specific design, demonstrated through a new tool, Moito.
Contribution
It provides conditions for automating abstraction-based pruning in general-purpose synthesis, removing the need for manually-designed abstract domains.
Findings
Moito automates interval-based pruning for various synthesis problems.
The approach can solve problems previously requiring domain-specific tools.
Monotonic semantics enable effective and precise pruning in synthesis tasks.
Abstract
In top-down enumeration for program synthesis, abstraction-based pruning uses an abstract domain to approximate the set of possible values that a partial program, when completed, can output on a given input. If the set does not contain the desired output, the partial program and all its possible completions can be pruned. In its general form, abstraction-based pruning requires manually designed, domain-specific abstract domains and semantics, and thus has only been used in domain-specific synthesizers. This paper provides sufficient conditions under which a form of abstraction-based pruning can be automated for arbitrary synthesis problems in the general-purpose Semantics-Guided Synthesis (SemGuS) framework without requiring manually-defined abstract domains. We show that if the semantics of the language for which we are synthesizing programs exhibits some monotonicity properties, one…
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 · Model-Driven Software Engineering Techniques
