Synbit: Synthesizing Bidirectional Programs using Unidirectional Sketches

08/31/2021
by   Masaomi Yamaguchi, et al.
0

We propose a technique for synthesizing bidirectional programs from the corresponding unidirectional code plus a few input/output examples. The core ideas are: (1) constructing a sketch using the given unidirectional program as a specification, and (2) filling the sketch in a modular fashion by exploiting the properties of bidirectional programs. These ideas are enabled by our choice of programming language, HOBiT, which is specifically designed to maintain the unidirectional program structure in bidirectional programming, and keep the parts that control bidirectional behavior modular. To evaluate our approach, we implemented it in a tool called Synbit and used it to generate bidirectional programs for intricate microbenchmarks, as well as for a few larger, more realistic problems. We also compared Synbit to a state-of-the-art unidirectional synthesis tool on the task of synthesizing backward computations.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/01/2019

Program Sketching with Live Bidirectional Evaluation

We present Sketch-n-Myth, a technique for completing program sketches wh...
research
02/19/2019

Composing bidirectional programs monadically (with appendices)

Software frequently converts data from one representation to another and...
research
10/26/2018

Synthesizing Symmetric Lenses

Lenses are programs that can be run both "front to back" and "back to fr...
research
10/11/2021

Synthesizing Machine Learning Programs with PAC Guarantees via Statistical Sketching

We study the problem of synthesizing programs that include machine learn...
research
09/24/2019

Using human-in-the-loop synthesis to author functional reactive programs

Programs that respond to asynchronous events are challenging to write; t...
research
11/01/2019

Program Synthesis with Live Bidirectional Evaluation

We present an algorithm for completing program sketches (partial program...
research
10/09/2017

Synthesizing Bijective Lenses

Bidirectional transformations between different data representations occ...

Please sign up or login with your details

Forgot password? Click here to reset