BUSTLE: Bottom-up program-Synthesis Through Learning-guided Exploration

by   Augustus Odena, et al.

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 analysing 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 a new data set for synthesis of string transformation programs.


page 12

page 14

page 15


Neuro-Symbolic Program Synthesis

Recent years have seen the proposal of a number of neural architectures ...

Neural-Guided Deductive Search for Real-Time Program Synthesis from Examples

Synthesizing user-intended programs from a small number of input-output ...

Latent Programmer: Discrete Latent Codes for Program Synthesis

In many sequence learning tasks, such as program synthesis and document ...

Modular System Synthesis

This paper describes a way to improve the scalability of program synthes...

Predictive Synthesis of API-Centric Code

Today's programmers, especially data science practitioners, make heavy u...

A Divide-Align-Conquer Strategy for Program Synthesis

A major bottleneck in search-based program synthesis is the exponentiall...

Learning from Self-Sampled Correct and Partially-Correct Programs

Program synthesis aims to generate executable programs that are consiste...

Please sign up or login with your details

Forgot password? Click here to reset