English

Write, Execute, Assess: Program Synthesis with a REPL

Programming Languages 2019-06-12 v1 Artificial Intelligence Machine Learning Software Engineering

Abstract

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.

Keywords

Cite

@article{arxiv.1906.04604,
  title  = {Write, Execute, Assess: Program Synthesis with a REPL},
  author = {Kevin Ellis and Maxwell Nye and Yewen Pu and Felix Sosa and Josh Tenenbaum and Armando Solar-Lezama},
  journal= {arXiv preprint arXiv:1906.04604},
  year   = {2019}
}

Comments

The first four authors contributed equally to this work