Results 1  10
of
19
Synthesis of loopfree programs
 In PLDI
, 2011
"... We consider the problem of synthesizing loopfree programs that implement a desired functionality using components from a given library. Specifications of the desired functionality and the library components are provided as logical relations between their respective input and output variables. The l ..."
Abstract

Cited by 59 (16 self)
 Add to MetaCart
(Show Context)
We consider the problem of synthesizing loopfree programs that implement a desired functionality using components from a given library. Specifications of the desired functionality and the library components are provided as logical relations between their respective input and output variables. The library components can be used at most once, and hence the library is required to contain a reasonable overapproximation of the multiset of the components required. We solve the above componentbased synthesis problem using a constraintbased approach that involves first generating a synthesis constraint, and then solving the constraint. The synthesis constraint is a firstorder ∃ ∀ logic formula whose size is quadratic in the number of components. We present a novel algorithm for solving such constraints. Our algorithm is based on counterexample guided iterative synthesis paradigm and uses offtheshelf SMT solvers. We present experimental results that show that our tool Brahma can efficiently synthesize highly nontrivial 1020 line loopfree bitvector programs. These programs represent a state space of approximately 20 10 programs, and are beyond the reach of the other tools based on sketching and superoptimization.
Spreadsheet data manipulation using examples.
 Communications of the ACM,
, 2012
"... Abstract Millions of computer end users need to perform tasks over large spreadsheet data, yet lack the programming knowledge to do such tasks automatically. We present a programming by example methodology that allows end users to automate such repetitive tasks. Our methodology involves designing a ..."
Abstract

Cited by 41 (21 self)
 Add to MetaCart
(Show Context)
Abstract Millions of computer end users need to perform tasks over large spreadsheet data, yet lack the programming knowledge to do such tasks automatically. We present a programming by example methodology that allows end users to automate such repetitive tasks. Our methodology involves designing a domainspecific language and developing a synthesis algorithm that can learn programs in that language from userprovided examples. We present instantiations of this methodology for particular domains of tasks: (a) syntactic transformations of strings using restricted forms of regular expressions, conditionals, and loops, (b) semantic transformations of strings involving lookup in relational tables, and (c) layout transformations on spreadsheet tables. We have implemented this technology as an addin for the Microsoft Excel Spreadsheet system and have evaluated it successfully over several benchmarks picked from various Excel help forums.
Spreadsheet Table Transformations from Examples
, 2011
"... Every day, millions of computer endusers need to perform tasks over large, tabular data, yet lack the programming knowledge to do such tasks automatically. In this work, we present an automatic technique that takes from a user an example of how the user needs to transform a table of data, and provi ..."
Abstract

Cited by 32 (17 self)
 Add to MetaCart
(Show Context)
Every day, millions of computer endusers need to perform tasks over large, tabular data, yet lack the programming knowledge to do such tasks automatically. In this work, we present an automatic technique that takes from a user an example of how the user needs to transform a table of data, and provides to the user a program that implements the transformation described by the example. In particular, we present a language of programs TableProg that can describe transformations that real users require. We then present an algorithm ProgFromEx that takes an example input and output table, and infers a program in TableProg that implements the transformation described by the example. When the program is applied to the example input, it reproduces the example output. When the program is applied to another, potentially larger, table with a “similar” layout as the example input table, then the program produces
Synthesizing Geometry Constructions
"... In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new progr ..."
Abstract

Cited by 31 (17 self)
 Add to MetaCart
In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new program synthesis technique based on three key insights: (i) reduction of symbolic reasoning to concrete reasoning (based on a deep theoretical result that reduces verification to random testing), (ii) extending the instruction set of the programming language with higher level primitives (representing basic constructions found in textbook chapters, inspired by how humans use their experience and knowledge gained from chapters to perform complicated constructions), and (iii) pruning the forward exhaustive search using a goaldirected heuristic (simulating backward reasoning performed by humans). Our tool can successfully synthesize constructions for various geometry problems picked up from highschool textbooks and examination papers in a reasonable amount of time. This opens up an amazing set of possibilities in the context of making classroom teaching interactive.
Synthesis from examples: Interaction models and algorithms
 14th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing
, 2012
"... Abstract—Examples are often a natural way to specify various computational artifacts such as programs, queries, and sequences. Synthesizing such artifacts from example based specifications has various applications in the domains of enduser programming and intelligent tutoring systems. Synthesis from ..."
Abstract

Cited by 21 (12 self)
 Add to MetaCart
(Show Context)
Abstract—Examples are often a natural way to specify various computational artifacts such as programs, queries, and sequences. Synthesizing such artifacts from example based specifications has various applications in the domains of enduser programming and intelligent tutoring systems. Synthesis from examples involves addressing two key technical challenges: (i) design of a user interaction model to deal with the inherent ambiguity in the example based specification. (ii) design of an efficient search algorithm these algorithms have been based on paradigms from various communities including use of SAT/SMT solvers (formal methods community), version space algebras (machine learning community), and A*style goaldirected heuristics (AI community). This paper describes some effective user interaction models and algorithmic methodologies for synthesis from examples while discussing synthesizers for a variety of artifacts ranging from tricky bitvector algorithms, spreadsheet macros for automating repetitive data manipulation tasks, ruler/compass based geometry constructions, algebraic identities, and predictive intellisense for repetitive drawings and mathematical terms.
Synthesizing Switching Logic for Safety and DwellTime Requirements
"... Cyberphysical systems (CPS) can be usefully modeled as hybrid automata combining the physical dynamics within modes with discrete switching behavior between modes. CPS designs must satisfy safety and performance requirements. While the dynamics within each mode is usually defined by the physical pl ..."
Abstract

Cited by 14 (8 self)
 Add to MetaCart
(Show Context)
Cyberphysical systems (CPS) can be usefully modeled as hybrid automata combining the physical dynamics within modes with discrete switching behavior between modes. CPS designs must satisfy safety and performance requirements. While the dynamics within each mode is usually defined by the physical plant, the tricky design problem often involves getting the switching logic right. In this paper, we present a new approach to assist designers by synthesizing the switching logic, given a partial system model, using a combination of fixpoint computation, numerical simulation, and machine learning. Our technique begins with an overapproximation of the guards on transitions between modes. In successive iterations, the overapproximations are refined by eliminating points that will cause the system to reach unsafe states, and such refinement is performed using numerical simulation and machine learning. In addition to safety requirements, we synthesize models to satisfy dwelltime constraints, which impose upper and/or lower bounds on the amount of time spent within a mode. We demonstrate using case studies that our technique quickly generates intuitive system models and that dwelltime constraints can help to tune the performance of a design. Categories and Subject Descriptors C.3 [SpecialPurpose and ApplicationBased Systems]: Realtime and embedded systems; I.2.2 [Artificial Intelligence]:
Verification and synthesis using real quantifier elimination
, 2011
"... We present the application of real quantifier elimination to formal verification and synthesis of continuous and switched dynamical systems. Through a series of case studies, we show how firstorder formulas over the reals arise when formally analyzing models of complex control systems. Existing off ..."
Abstract

Cited by 13 (3 self)
 Add to MetaCart
(Show Context)
We present the application of real quantifier elimination to formal verification and synthesis of continuous and switched dynamical systems. Through a series of case studies, we show how firstorder formulas over the reals arise when formally analyzing models of complex control systems. Existing offtheshelf quantifier elimination procedures are not successful in eliminating quantifiers from many of our benchmarks. We therefore automatically combine three established software components: virtual subtitution based quantifier elimination in Reduce/Redlog, cylindrical algebraic decomposition implemented in Qepcad, and the simplifier Slfq implemented on top of Qepcad. We use this combination to successfully analyze various models of systems including adaptive cruise control in automobiles, adaptive flight control system, and the classical inverted pendulum problem studied in control theory.
Switching Logic Synthesis for Reachability
, 2010
"... We consider the problem of driving a system from some initial configuration to a desired configuration while avoiding some unsafe configurations. The system to be controlled is a dynamical system that can operate in different modes. The goal is to synthesize the logic for switching between the modes ..."
Abstract

Cited by 13 (6 self)
 Add to MetaCart
(Show Context)
We consider the problem of driving a system from some initial configuration to a desired configuration while avoiding some unsafe configurations. The system to be controlled is a dynamical system that can operate in different modes. The goal is to synthesize the logic for switching between the modes so that the desired reachability property holds. In this paper, we first present a sound and complete inference rule for proving reachability properties of single mode continuous dynamical systems. Next, we present an inference rule for proving controlled reachability in multimodal continuous dynamical systems. From a constructive proof of controlled reachability, we show how to synthesize the desired switching logic. We show that our synthesis procedure is sound and produces only nonzeno hybrid systems. In practice, we perform a constructive proof of controlled reachability by solving an ExistsForall formula in the theory of reals. We present an approach for solving such formulas that combines symbolic and numeric solvers. We demonstrate our approach on some examples. All results extend naturally to the case when, instead of reachability, interest is in until properties.
Synthesis from Examples
"... Examples are often a natural way to specify computational structures such as programs, queries, and sequences. Synthesizing such structures from example based specification has applications in automating enduser programming and in building intelligent tutoring systems. Synthesis from examples invol ..."
Abstract

Cited by 10 (6 self)
 Add to MetaCart
(Show Context)
Examples are often a natural way to specify computational structures such as programs, queries, and sequences. Synthesizing such structures from example based specification has applications in automating enduser programming and in building intelligent tutoring systems. Synthesis from examples involves addressing two key technical challenges: (i) design of an efficient search algorithm – these algorithms have been based on various paradigms including versionspace algebras, SAT/SMT solvers, numerical methods, and even exhaustive search, (ii) design of a user interaction model to deal with the inherent ambiguity in the example based specification. This paper illustrates various algorithmic techniques and user interaction models by describing inductive synthesizers for varied applications including synthesis of tricky bitvector algorithms, spreadsheet macros for automating repetitive data manipulation tasks, ruler/compass based geometry constructions, new algebra problems, sequences for mathematical intellisense, and grading of programming problems. 1.
Automated synthesis of symbolic instruction encodings from i/o samples
 Proc. of Symposium on Programming Language Design and Implementation (PLDI
, 2012
"... Symbolic execution is a key component of precise binary program analysis tools. We discuss how to automatically bootstrap the construction of a symbolic execution engine for a processor instruction set such as x86, x64 or ARM. We show how to automatically synthesize symbolic representations of indi ..."
Abstract

Cited by 10 (2 self)
 Add to MetaCart
(Show Context)
Symbolic execution is a key component of precise binary program analysis tools. We discuss how to automatically bootstrap the construction of a symbolic execution engine for a processor instruction set such as x86, x64 or ARM. We show how to automatically synthesize symbolic representations of individual processor instructions from input/output examples and express them as bitvector constraints. We present and compare various synthesis algorithms and instruction sampling strategies. We introduce a new synthesis algorithm based on smart sampling which we show is one to two orders of magnitude faster than previous synthesis algorithms in our context. With this new algorithm, we can automatically synthesize bitvector circuits for over 500 x86 instructions (8/16/32bits, outputs, EFLAGS) using only 6 synthesis templates and in less than two hours using the Z3 SMT solver on a regular machine. During this work, we also discovered several inconsistencies across x86 processors, errors in the x86 Intel spec, and several bugs in previous manuallywritten x86 instruction handlers.