Program Synthesis using Abstraction Refinement

10/21/2017
by   Xinyu Wang, et al.
0

We present a new approach to example-guided program synthesis based on counterexample-guided abstraction refinement. Our method uses the abstract semantics of the underlying DSL to find a program P whose abstract behavior satisfies the examples. However, since program P may be spurious with respect to the concrete semantics, our approach iteratively refines the abstraction until we either find a program that satisfies the examples or prove that no such DSL program exists. Because many programs have the same input-output behavior in terms of their abstract semantics, this synthesis methodology significantly reduces the search space compared to existing techniques that use purely concrete semantics. While synthesis using abstraction refinement (SYNGAR) could be implemented in different settings, we propose a refinement-based synthesis algorithm that uses abstract finite tree automata (AFTA). Our technique uses a coarse initial program abstraction to construct an initial AFTA, which is iteratively refined by constructing a proof of incorrectness of any spurious program. In addition to ruling out the spurious program accepted by the previous AFTA, proofs of incorrectness are also useful for ruling out many other spurious programs. We implement these ideas in a framework called . We have used the BLAZE framework to build synthesizers for string and matrix transformations, and we compare BLAZE with existing techniques. Our results for the string domain show that BLAZE compares favorably with FlashFill, a domain-specific synthesizer that is now deployed in Microsoft PowerShell. In the context of matrix manipulations, we compare BLAZE against Prose, a state-of-the-art general-purpose VSA-based synthesizer, and show that BLAZE results in a 90x speed-up over Prose.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/27/2021

Inductive Program Synthesis over Noisy Datasets using Abstraction Refinement Based Optimization

We present a new synthesis algorithm to solve program synthesis over noi...
research
11/10/2020

Data Flow Refinement Type Inference

Refinement types enable lightweight verification of functional programs....
research
04/11/2018

Learning Abstractions for Program Synthesis

Many example-guided program synthesis techniques use abstractions to pru...
research
11/11/2019

Program Synthesis by Type-Guided Abstraction Refinement

We consider the problem of type-directed component based synthesis where...
research
06/13/2022

Metric Program Synthesis

We present a new domain-agnostic synthesis technique for generating prog...
research
06/22/2021

SynGuar: Guaranteeing Generalization in Programming by Example

Programming by Example (PBE) is a program synthesis paradigm in which th...
research
10/16/2019

Abstract Transducers

Several abstract machines that operate on symbolic input alphabets have ...

Please sign up or login with your details

Forgot password? Click here to reset