370 research outputs found
Syntax-guided synthesis
The classical formulation of the program-synthesis problem is to find a program that meets a correctness specification given as a logical formula. Recent work on program synthesis and program optimization illustrates many potential benefits of allowing the user to supplement the logical specification with a syntactic template that constrains the space of allowed implementations. Our goal is to identify the core computational problem common to these proposals in a logical framework. The input to the syntax-guided synthesis problem (SyGuS) consists of a background theory, a semantic correctness specification for the desired program given by a logical formula, and a syntactic set of candidate implementations given by a grammar. The computational problem then is to find an implementation from the set of candidate expressions so that it satisfies the specification in the given theory. We describe three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, report on prototype implementations, and present experimental results on an initial set of benchmarks.National Science Foundation (U.S.) (Expeditions in Computing Project ExCAPE Award CCF 1138996
SyGuS-Comp 2016: Results and Analysis
Syntax-Guided Synthesis (SyGuS) is the computational problem of finding an
implementation f that meets both a semantic constraint given by a logical
formula in a background theory T, and a syntactic constraint given by
a grammar G, which specifies the allowed set of candidate implementations. Such
a synthesis problem can be formally defined in SyGuS-IF, a language that is
built on top of SMT-LIB.
The Syntax-Guided Synthesis Competition (SyGuS-Comp) is an effort to
facilitate, bring together and accelerate research and development of efficient
solvers for SyGuS by providing a platform for evaluating different synthesis
techniques on a comprehensive set of benchmarks. In this year's competition we
added a new track devoted to programming by examples. This track consisted of
two categories, one using the theory of bit-vectors and one using the theory of
strings. This paper presents and analyses the results of SyGuS-Comp'16.Comment: In Proceedings SYNT 2016, arXiv:1611.07178. arXiv admin note: text
overlap with arXiv:1602.0117
Grammar Filtering For Syntax-Guided Synthesis
Programming-by-example (PBE) is a synthesis paradigm that allows users to
generate functions by simply providing input-output examples. While a promising
interaction paradigm, synthesis is still too slow for realtime interaction and
more widespread adoption. Existing approaches to PBE synthesis have used
automated reasoning tools, such as SMT solvers, as well as works applying
machine learning techniques. At its core, the automated reasoning approach
relies on highly domain specific knowledge of programming languages. On the
other hand, the machine learning approaches utilize the fact that when working
with program code, it is possible to generate arbitrarily large training
datasets. In this work, we propose a system for using machine learning in
tandem with automated reasoning techniques to solve Syntax Guided Synthesis
(SyGuS) style PBE problems. By preprocessing SyGuS PBE problems with a neural
network, we can use a data driven approach to reduce the size of the search
space, then allow automated reasoning-based solvers to more quickly find a
solution analytically. Our system is able to run atop existing SyGuS PBE
synthesis tools, decreasing the runtime of the winner of the 2019 SyGuS
Competition for the PBE Strings track by 47.65% to outperform all of the
competing tools
Gradient Descent over Metagrammars for Syntax-Guided Synthesis
The performance of a syntax-guided synthesis algorithm is highly dependent on
the provision of a good syntactic template, or grammar. Provision of such a
template is often left to the user to do manually, though in the absence of
such a grammar, state-of-the-art solvers will provide their own default
grammar, which is dependent on the signature of the target program to be
sythesized. In this work, we speculate this default grammar could be improved
upon substantially. We build sets of rules, or metagrammars, for constructing
grammars, and perform a gradient descent over these metagrammars aiming to find
a metagrammar which solves more benchmarks and on average faster. We show the
resulting metagrammar enables CVC4 to solve 26% more benchmarks than the
default grammar within a 300s time-out, and that metagrammars learnt from tens
of benchmarks generalize to performance on 100s of benchmarks.Comment: 5 pages, SYNT 202
Reinforcement Learning and Data-Generation for Syntax-Guided Synthesis
Program synthesis is the task of automatically generating code based on a specification. In Syntax-Guided Synthesis (SyGuS) this specification is a combination of a syntactic template and a logical formula, and the result is guaranteed to satisfy both. We present a reinforcement-learning guided algorithm for SyGuS which uses Monte-Carlo Tree Search (MCTS) to search the space of candidate solutions. Our algorithm learns policy and value functions which, combined with the upper confidence bound for trees, allow it to balance exploration and exploitation. A common challenge in applying machine learning approaches to syntax-guided synthesis is the scarcity of training data. To address this, we present a method for automatically generating training data for SyGuS based on anti-unification of existing first-order satisfiability problems, which we use to train our MCTS policy. We implement and evaluate this setup and demonstrate that learned policy and value improve the synthesis performance over a baseline by over 26 percentage points in the training and testing sets. Our tool outperforms state-of-the-art tool cvc5 on the training set and performs comparably in terms of the total number of problems solved on the testing set (solving 23% of the benchmarks on which cvc5 fails). We make our data set publicly available, to enable further application of machine learning methods to the SyGuS problem
A Divide-and-Conquer Approach to Syntax-Guided Synthesis
Program synthesis aims to generate programs automatically from user-provided specifications. One critical research thrust is called Syntax-Guideds Synthesis. In addition to semantic specifications, the user should also provide a syntactic template of the desired program, which helps the synthesizer reduce the search space. The traditional symbolic approaches, such as CounterExample-Guided Inductive Synthesis (CEGIS) framework, does not scale to large search spaces. The goal of this project is to explore a compositional, divide-n-conquer approach that heuristically divides the synthesis task into subtasks and solves them separately. The idea is to decompose the function to be synthesized by creating a set of auxiliary functions. In this way, the whole synthesis task can be reduced to synthesizing the auxiliary functions. The auxiliary functions are of bounded size and hence can be encoded into a logic constraint in linear-integer arithmetic and solved by modern Satisfiability-Modulo-Theories (SMT) solvers. In each iteration of the synthesis algorithm, an auxiliary function is synthesized and added into the syntax for synthesizing other auxiliary functions. The algorithms repeats until a syntax-correct implementation equivalent to the reference implementation is found. Preliminary experimental results show that this approach is promising
- …