🤖 AI Summary
Traditional program synthesis approaches based on syntactic enumeration suffer from generating a vast number of semantically equivalent programs, leading to an excessively large search space and poor efficiency. This work proposes a semantics-driven synthesis method that, for the first time, integrates canonical representations of simply typed λ-calculus with type-directed, top-down search to directly enumerate only semantically distinct candidate programs, thereby eliminating redundancy at its source. Evaluated on standard synthesis benchmarks, the approach achieves a geometric mean speedup of 8.93× over unrestricted syntactic enumeration, demonstrating a substantial improvement in synthesis efficiency.
📝 Abstract
Inductive program synthesis algorithms search a space of programs to find one that meets some specification. Enumerating according to the syntax of a programming language leads to a large search space, and hence slow synthesis, due in large part to semantic duplication. A synthesiser may have to evaluate -- and reject -- multiple semantically identical but syntactically different programs, wasting resources.
To avoid this duplication, we present NSynC, a synthesis-by-semantics approach. By enumerating the semantics of the target language directly, we guarantee that each candidate program is semantically unique and that each evaluation of a candidate is meaningful. Specifically, we search the space of normal forms for the simply-typed lambda calculus with sums using a top-down, type-directed synthesis algorithm. Our preliminary results show a geomean speedup of 8.93x on a synthetic benchmark suite over the unrestricted algorithm.