  Today's programmers, especially data science practitioners, make heavy use of
data-processing libraries (APIs) such as PyTorch, Tensorflow, NumPy, Pandas,
and the like. Program synthesizers can provide significant coding assistance to
this community of users; however program synthesis also can be slow due to
enormous search spaces. In this work, we examine ways in which machine learning
can be used to accelerate enumerative program synthesis. We present a
deep-learning-based model to predict the sequence of API functions that would
be needed to go from a given input to a desired output, both being numeric
vectors. Our work is based on two insights. First, it is possible to learn,
based on a large number of input-output examples, to predict the likely API
function needed in a given situation. Second, and crucially, it is also
possible to learn to compose API functions into a sequence, given an input and
the desired final output, without explicitly knowing the intermediate values.
We show that we can speed up an enumerative program synthesizer by using
predictions from our model variants. These speedups significantly outperform
previous ways (e.g. DeepCoder) in which researchers have used ML models in
enumerative synthesis.
