Reconciling enumerative and deductive program synthesis

K Huang, X Qiu, P Shen, Y Wang - Proceedings of the 41st ACM …, 2020 - dl.acm.org
K Huang, X Qiu, P Shen, Y Wang
Proceedings of the 41st ACM SIGPLAN Conference on Programming Language …, 2020dl.acm.org
Syntax-guided synthesis (SyGuS) aims to find a program satisfying semantic specification as
well as user-provided structural hypotheses. There are two main synthesis approaches:
enumerative synthesis, which repeatedly enumerates possible candidate programs and
checks their correctness, and deductive synthesis, which leverages a symbolic procedure to
construct implementations from specifications. Neither approach is strictly better than the
other: automated deductive synthesis is usually very efficient but only works for special …
Syntax-guided synthesis (SyGuS) aims to find a program satisfying semantic specification as well as user-provided structural hypotheses. There are two main synthesis approaches: enumerative synthesis, which repeatedly enumerates possible candidate programs and checks their correctness, and deductive synthesis, which leverages a symbolic procedure to construct implementations from specifications. Neither approach is strictly better than the other: automated deductive synthesis is usually very efficient but only works for special grammars or applications; enumerative synthesis is very generally applicable but limited in scalability.
In this paper, we propose a cooperative synthesis technique for SyGuS problems with the conditional linear integer arithmetic (CLIA) background theory, as a novel integration of the two approaches, combining the best of the two worlds. The technique exploits several novel divide-and-conquer strategies to split a large synthesis problem to smaller subproblems. The subproblems are solved separately and their solutions are combined to form a final solution. The technique integrates two synthesis engines: a pure deductive component that can efficiently solve some problems, and a height-based enumeration algorithm that can handle arbitrary grammar. We implemented the cooperative synthesis technique, and evaluated it on a wide range of benchmarks. Experiments showed that our technique can solve many challenging synthesis problems not possible before, and tends to be more scalable than state-of-the-art synthesis algorithms.
ACM Digital Library