  Program synthesis is the task of automatically generating a program
consistent with a given specification. A natural way to specify programs is to
provide examples of desired input-output behavior, and many current program
synthesis approaches have achieved impressive results after training on
randomly generated input-output examples. However, recent work has discovered
that some of these approaches generalize poorly to data distributions different
from that of the randomly generated examples. We show that this problem applies
to other state-of-the-art approaches as well and that current methods to
counteract this problem are insufficient. We then propose a new, adversarial
approach to control the bias of synthetic data distributions and show that it
outperforms current approaches.
