Write, Execute, Assess: Program Synthesis with a REPL

06/09/2019
by   Kevin Ellis, et al.
0

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.

READ FULL TEXT

page 7

page 14

research
03/20/2022

CrossBeam: Learning to Search in Bottom-Up Program Synthesis

Many approaches to program synthesis perform a search within an enormous...
research
07/13/2021

Bottom-up Synthesis of Recursive Functional Programs using Angelic Execution

We present a novel bottom-up method for the synthesis of functional recu...
research
07/30/2017

Learning to Infer Graphics Programs from Hand-Drawn Images

We introduce a model that learns to convert simple hand drawings into gr...
research
12/23/2020

Representing Partial Programs with Blended Abstract Semantics

Synthesizing programs from examples requires searching over a vast, comb...
research
11/19/2015

Neural Programmer-Interpreters

We propose the neural programmer-interpreter (NPI): a recurrent and comp...
research
10/13/2019

Neural Program Synthesis By Self-Learning

Neural inductive program synthesis is a task generating instructions tha...
research
06/12/2019

SPoC: Search-based Pseudocode to Code

We consider the task of mapping pseudocode to long programs that are fun...

Please sign up or login with your details

Forgot password? Click here to reset