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… 

Figures and Tables from this paper

Sketching concurrent data structures
TLDR
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
  • Armando Solar-Lezama
  • Computer Science
    International Journal on Software Tools for Technology Transfer
  • 2012
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
  • C. David, D. Kroening
  • Computer Science
    Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences
  • 2017
TLDR
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
TLDR
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
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
The term "hacker" in the title is meant in the originalsense of an aficionado of computers—someone 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
TLDR
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
TLDR
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.
...
...