  Recent years have seen the proposal of a number of neural architectures for
the problem of Program Induction. Given a set of input-output examples, these
architectures are able to learn mappings that generalize to new test inputs.
While achieving impressive results, these approaches have a number of important
limitations: (a) they are computationally expensive and hard to train, (b) a
model has to be trained for each task (program) separately, and (c) it is hard
to interpret or verify the correctness of the learnt mapping (as it is defined
by a neural network). In this paper, we propose a novel technique,
Neuro-Symbolic Program Synthesis, to overcome the above-mentioned problems.
Once trained, our approach can automatically construct computer programs in a
domain-specific language that are consistent with a set of input-output
examples provided at test time. Our method is based on two novel neural
modules. The first module, called the cross correlation I/O network, given a
set of input-output examples, produces a continuous representation of the set
of I/O examples. The second module, the Recursive-Reverse-Recursive Neural
Network (R3NN), given the continuous representation of the examples,
synthesizes a program by incrementally expanding partial programs. We
demonstrate the effectiveness of our approach by applying it to the rich and
complex domain of regular expression based string transformations. Experiments
show that the R3NN model is not only able to construct programs from new
input-output examples, but it is also able to construct new programs for tasks
that it had never observed before during training.
