Data Generation for Neural Programming by Example
  Programming by example is the problem of synthesizing a program from a small
set of input / output pairs. Recent works applying machine learning methods to
this task show promise, but are typically reliant on generating synthetic
examples for training. A particular challenge lies in generating meaningful
sets of inputs and outputs, which well-characterize a given program and
accurately demonstrate its behavior. Where examples used for testing are
generated by the same method as training data then the performance of a model
may be partly reliant on this similarity. In this paper we introduce a novel
approach using an SMT solver to synthesize inputs which cover a diverse set of
behaviors for a given program. We carry out a case study comparing this method
to existing synthetic data generation procedures in the literature, and find
that data generated using our approach improves both the discriminatory power
of example sets and the ability of trained machine learning models to
generalize to unfamiliar data.
