Representing Partial Programs with Blended Abstract Semantics

12/23/2020
by   Maxwell Nye, et al.
3

Synthesizing programs from examples requires searching over a vast, combinatorial space of possible programs. In this search process, a key challenge is representing the behavior of a partially written program before it can be executed, to judge if it is on the right track and predict where to search next. We introduce a general technique for representing partially written programs in a program synthesis engine. We take inspiration from the technique of abstract interpretation, in which an approximate execution model is used to determine if an unfinished program will eventually satisfy a goal specification. Here we learn an approximate execution model implemented as a modular neural network. By constructing compositional program representations that implicitly encode the interpretation semantics of the underlying programming language, we can represent partial programs using a flexible combination of concrete execution state and learned neural representations, using the learned approximate semantics when concrete semantics are not known (in unfinished parts of the program). We show that these hybrid neuro-symbolic representations enable execution-guided synthesizers to use more powerful language constructs, such as loops and higher-order functions, and can be used to synthesize programs more accurately for a given search budget than pure neural approaches in several domains.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
06/29/2021

Latent Execution for Neural Program Synthesis Beyond Domain-Specific Languages

Program synthesis from input-output examples has been a long-standing ch...
research
08/22/2020

Semantics-Guided Synthesis

This paper develops a new framework for program synthesis, called semant...
research
06/03/2023

LambdaBeam: Neural Program Search with Higher-Order Functions and Lambdas

Search is an important technique in program synthesis that allows for ad...
research
08/26/2017

The Unfolding Semantics of Functional Programs

The idea of using unfolding as a way of computing a program semantics ha...
research
06/09/2019

Write, Execute, Assess: Program Synthesis with a REPL

We present a neural program synthesis approach integrating components wh...
research
02/25/2023

Absynthe: Abstract Interpretation-Guided Synthesis

Synthesis tools have seen significant success in recent times. However, ...
research
03/10/2020

An abstract semantics of speculative execution for reasoning about security vulnerabilities

Reasoning about correctness and security of software is increasingly dif...

Please sign up or login with your details

Forgot password? Click here to reset