BUSTLE: Bottom-Up Program Synthesis Through Learning-Guided Exploration
Augustus Odena, Kensen Shi, David Bieber, Rishabh Singh, Charles Sutton, Hanjun Dai
TL;DR
The paper addresses the challenge of search efficiency in program synthesis by integrating a learning-guided, bottom-up search that uses execution results of partial programs as semantic features.A lightweight classifier, trained with property-signature features derived from inputs, outputs, and intermediate values, reweights sub-expressions during enumeration to favor those likely to appear in a final solution.The approach is evaluated on two string-transformation benchmarks, showing that Bustle, especially when combined with domain heuristics, outperforms baselines and end-to-end neural approaches in both solved-task counts and wall-clock time.Key contributions include the property-signature framework, batched inference for speed, and a synthetic data generation protocol for training the classifier, with demonstrated generalization to human-written benchmarks.
Abstract
Program synthesis is challenging largely because of the difficulty of search in a large space of programs. Human programmers routinely tackle the task of writing complex programs by writing sub-programs and then analyzing their intermediate results to compose them in appropriate ways. Motivated by this intuition, we present a new synthesis approach that leverages learning to guide a bottom-up search over programs. In particular, we train a model to prioritize compositions of intermediate values during search conditioned on a given set of input-output examples. This is a powerful combination because of several emergent properties. First, in bottom-up search, intermediate programs can be executed, providing semantic information to the neural network. Second, given the concrete values from those executions, we can exploit rich features based on recent work on property signatures. Finally, bottom-up search allows the system substantial flexibility in what order to generate the solution, allowing the synthesizer to build up a program from multiple smaller sub-programs. Overall, our empirical evaluation finds that the combination of learning and bottom-up search is remarkably effective, even with simple supervised learning approaches. We demonstrate the effectiveness of our technique on two datasets, one from the SyGuS competition and one of our own creation.
