Neural Program Synthesis with a Differentiable Program Fixer
Abstract
We present a new program synthesis approach that combines an encoder-decoder
based synthesis architecture with a differentiable program fixer. Our approach is
inspired from the fact that human developers seldom get their program correct in
the first attempt, and perform iterative testing-based program fixing to get to the
desired program functionality. Similarly, our approach first learns a distribution
over programs conditioned on an encoding of a set of input-output examples, and
then iteratively performs fix operations using the program fixer module. The fixer
module takes as input the original examples and the current program outputs on
example inputs, and generates a new distribution over the programs with the goal
of reducing the discrepancies between the current program outputs and the desired
example outputs. We train our architecture end-to-end on the RobustFill domain,
and show that the addition of fixer module leads to a significant improvement of
7% on synthesis compared to using beam search.
based synthesis architecture with a differentiable program fixer. Our approach is
inspired from the fact that human developers seldom get their program correct in
the first attempt, and perform iterative testing-based program fixing to get to the
desired program functionality. Similarly, our approach first learns a distribution
over programs conditioned on an encoding of a set of input-output examples, and
then iteratively performs fix operations using the program fixer module. The fixer
module takes as input the original examples and the current program outputs on
example inputs, and generates a new distribution over the programs with the goal
of reducing the discrepancies between the current program outputs and the desired
example outputs. We train our architecture end-to-end on the RobustFill domain,
and show that the addition of fixer module leads to a significant improvement of
7% on synthesis compared to using beam search.