Combinatorial sketching for finite programs
@inproceedings{SolarLezama2006CombinatorialSF, title={Combinatorial sketching for finite programs}, author={Armando Solar-Lezama and Liviu Tancau and Rastislav Bod{\'i}k and Sanjit A. Seshia and Vijay A. Saraswat}, booktitle={ASPLOS XII}, year={2006} }
Sketching is a software synthesis approach where the programmer develops a partial implementation - a sketch - and a separate specification of the desired functionality. The synthesizer then completes the sketch to behave like the specification. The correctness of the synthesized implementation is guaranteed by the compiler, which allows, among other benefits, rapid development of highly tuned implementations without the fear of introducing bugs.We develop SKETCH, a language for finite programs…
704 Citations
Sketching concurrent data structures
- Computer SciencePLDI '08
- 2008
PSketch is a program synthesizer that helps programmers implement concurrent data structures using a new counterexample-guided inductive synthesis algorithm (CEGIS) that generalizes the original sketch synthesis algorithm from Solar-Lezama et.al.
Program sketching
- Computer ScienceInternational Journal on Software Tools for Technology Transfer
- 2012
CEGIS combines a SAT-based inductive synthesizer with an automated validation procedure, a bounded model-checker, that checks whether the candidate implementation produced by inductive synthesis is indeed correct and to produce new counterexamples.
Solving Program Sketches with Large Integer Values
- Computer ScienceESOP
- 2020
This article uses a result from number theory, the Chinese Remainder Theorem, to rewrite program sketches to only track the remainders of certain variable values with respect to several prime numbers and proves that the transformation is sound and the encoding of the resulting programs are exponentially more succinct than existing Sketch encodings.
EdSketch: execution-driven sketching for Java
- Computer ScienceSPIN
- 2017
This paper introduces execution-driven sketching, a novel approach for synthesis of Java programs with respect to the given test suite using a backtracking search that is commonly employed in software model checkers.
Approximate Program Synthesis
- Computer Science
- 2015
This paper formalizes the approximate synthesis (AppSyn) problem as the task of finding an optimal program that is approximately correct, and shows how existing approximation techniques fit into this framework.
Program synthesis from polymorphic refinement types
- Computer SciencePLDI 2016
- 2015
The tool was able to synthesize more complex programs than those reported in prior work, as well as most of the benchmarks tackled by existing synthesizers, often starting from a more concise and intuitive user input.
Program Sketching via CTL* Model Checking
- Computer ScienceSPIN
- 2011
It is shown that the sketching problem can be reduced to a CTL* model checking problem provided there is a translation of the program to labeled transition systems.
Program synthesis: challenges and opportunities
- Computer SciencePhilosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences
- 2017
This article focuses on an approach that has raised the profile of program synthesis and ushered in a generation of new synthesis tools, namely counter-example-guided inductive synthesis (CEGIS), and provides a description of the CEGIS architecture.
Sketching stencils
- Computer SciencePLDI '07
- 2007
This paper develops a sketching synthesizer that works for stencil computations, a large class of programs that, unlike circuits, have unbounded inputs and outputs, as well as an unbounded number of computations.
Program sketching with live bidirectional evaluation
- Computer ScienceProc. ACM Program. Lang.
- 2020
We present a system called Smyth for program sketching in a typed functional language whereby the concrete evaluation of ordinary assertions gives rise to input-output examples, which are then used…
References
SHOWING 1-10 OF 18 REFERENCES
Programming by sketching for bit-streaming programs
- Computer SciencePLDI '05
- 2005
StreamBit is developed as a sketching methodology for the important class of bit-streaming programs (e.g., coding and cryptography), which allows a programmer to write clean and portable reference code, and then obtain a high-quality implementation by simply sketching the outlines of the desired implementation.
Toward automatic program synthesis
- Computer ScienceCACM
- 1971
An elementary outline of the theorem-proving approach to automatic program synthesis is given, without dwelling on technical details, and the relation between the version of the induction rule used and the form of the program constructed is explored.
Scalable error detection using boolean satisfiability
- Computer SciencePOPL '05
- 2005
A software error-detection tool that exploits recent advances in boolean satisfiability (SAT) solvers, and is path sensitive, precise down to the bit level, and models pointers and heap data.
An Extensible SAT-solver
- Computer ScienceSAT
- 2003
This article presents a small, complete, and efficient SAT-solver in the style of conflict-driven learning, as exemplified by Chaff, and includes among other things a mechanism for adding arbitrary boolean constraints.
Strategic directions in constraint programming
- MathematicsCSUR
- 1996
Constraints arise naturally in most areas of human endeavor and are the natural medium of expression for formalizing regularities that underlie the computational and (natural or designed) physical worlds and their mathematical abstractions.
Denali: a goal-directed superoptimizer
- Computer SciencePLDI '02
- 2002
A code generator that uses an automatic theorem prover to produce very high-quality (in fact, nearly mathematically optimal) machine code for modern architectures is constructed.
Programmable Reinforcement Learning Agents
- Computer ScienceNIPS
- 2000
Together, the methods presented in this work comprise a system for agent design that allows the programmer to specify what they know, hint at what they suspect using soft shaping, and leave unspecified that which they don't know; the system then optimally completes the program through experience and takes advantage of the hierarchical structure of the specified program to speed learning.
Hacker's Delight
- Computer Science
- 2002
The term "hacker" in the title is meant in the originalsense of an aficionado of computerssomeone who enjoys making computers do new things, or do old things in a new and clever way.
DAG-aware AIG rewriting: a fresh look at combinational logic synthesis
- Computer Science2006 43rd ACM/IEEE Design Automation Conference
- 2006
Experiments on large industrial benchmarks show that the proposed methodology scales to very large designs and is several orders of magnitude faster than SIS and MVSIS while offering comparable or better quality when measured by the quality of the network after mapping.
A Comparative Study of 2QBF Algorithms
- Computer ScienceSAT
- 2004
Experiments show solvers specially tuned for 2QBF can be more efficient than similar general QBF solvers and different branching strategies in search based algorithms together with a resolution based method are described and compared.