first writing sub-programs and then analysing their intermediate results to compose them in appropriate ways. We propose a new learning-guided system for synthesis, called [<span style="font-variant:small-caps;">Bustle</span>]{}, which follows this intuition in perhaps the simplest way possible. Given a specification of a program’s intended behavior (in this paper given by input-output examples), [<span style="font-variant:small-caps;">Bustle</span>]{} performs bottom-up enumerative search for a satisfying program, following [@TRANSIT]. Each program explored during the bottom-up search is an expression that can be executed on the inputs, so we apply a machine learning model to the resulting value to guide the search. The model is simply a classifier trained to predict whether the intermediate value produced by a partial program is part of an eventual solution. This combination of learning and bottom up search has several key advantages. First, because the input to the model is a value produced by executing a partial program, the model’s predictions can depend on semantic information about the program. Second, because the search is bottom-up, compared to previous work on execution-guided synthesis, the search procedure has flexibility about which order to generate the program in, and this flexibility can be exploited by machine learning.

One big challenge with this approach is 