Write, Execute, Assess: Program Synthesis with a REPL
This work addresses the problem of efficient and accurate program synthesis for developers and AI researchers, presenting an incremental improvement by combining existing methods with a REPL for better semantic navigation.
The authors tackled the challenge of program synthesis by integrating a REPL to execute partially written programs, addressing the issue where small syntax changes cause large semantic shifts, and they applied this approach to text editing and graphics program synthesis.
We present a neural program synthesis approach integrating components which write, execute, and assess code to navigate the search space of possible programs. We equip the search process with an interpreter or a read-eval-print-loop (REPL), which immediately executes partially written programs, exposing their semantics. The REPL addresses a basic challenge of program synthesis: tiny changes in syntax can lead to huge changes in semantics. We train a pair of models, a policy that proposes the new piece of code to write, and a value function that assesses the prospects of the code written so-far. At test time we can combine these models with a Sequential Monte Carlo algorithm. We apply our approach to two domains: synthesizing text editing programs and inferring 2D and 3D graphics programs.