Absynthe: Abstract Interpretation-Guided Synthesis

02/25/2023
by   Sankha Narayan Guria, et al.
0

Synthesis tools have seen significant success in recent times. However, past approaches often require a complete and accurate embedding of the source language in the logic of the underlying solver, an approach difficult for industrial-grade languages. Other approaches couple the semantics of the source language with purpose-built synthesizers, necessarily tying the synthesis engine to a particular language model. In this paper, we propose Absynthe, an alternative approach based on user-defined abstract semantics that aims to be both lightweight and language agnostic, yet effective in guiding the search for programs. A synthesis goal in Absynthe is specified as an abstract specification in a lightweight user-defined abstract domain and concrete test cases. The synthesis engine is parameterized by the abstract semantics and independent of the source language. Absynthe validates candidate programs against test cases using the actual concrete language implementation to ensure correctness. We formalize the synthesis rules for Absynthe and describe how the key ideas are scaled-up in our implementation in Ruby. We evaluated Absynthe on SyGuS strings benchmark and found it competitive with other enumerative search solvers. Moreover, Absynthe's ability to combine abstract domains allows the user to move along a cost spectrum, i.e., expressive domains prune more programs but require more time. Finally, to verify Absynthe can act as a general purpose synthesis tool, we use Absynthe to synthesize Pandas data frame manipulating programs in Python using simple abstractions like types and column labels of a data frame. Absynthe reaches parity with AutoPandas, a deep learning based tool for the same benchmark suite. In summary, our results demonstrate Absynthe is a promising step forward towards a general-purpose approach to synthesis that may broaden the applicability of synthesis to more …

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/25/2021

RbSyn: Type- and Effect-Guided Program Synthesis

In recent years, researchers have explored component-based synthesis, wh...
research
08/22/2020

Semantics-Guided Synthesis

This paper develops a new framework for program synthesis, called semant...
research
08/14/2022

Synthesis of Semantic Actions in Attribute Grammars

Attribute grammars allow the association of semantic actions to the prod...
research
12/23/2020

Representing Partial Programs with Blended Abstract Semantics

Synthesizing programs from examples requires searching over a vast, comb...
research
02/15/2021

Metatheory.jl: Fast and Elegant Algebraic Computation in Julia with Extensible Equality Saturation

We introduce Metatheory.jl: a lightweight and performant general purpose...
research
07/31/2019

Evaluation of the Implementation of an Abstract Interpretation Algorithm using Tabled CLP

CiaoPP is an analyzer and optimizer for logic programs, part of the Ciao...
research
08/07/2023

Abstract Domains for Database Manipulating Processes

Database manipulating systems (DMS) formalize operations on relational d...

Please sign up or login with your details

Forgot password? Click here to reset