2010
DOI: 10.1145/1707801.1706337
|View full text |Cite
|
Sign up to set email alerts
|

From program verification to program synthesis

Abstract: This paper describes a novel technique for the synthesis of imperative programs. Automated program synthesis has the potential to make programming and the design of systems easier by allowing programs to be specified at a higher-level than executable code. In our approach, which we call proof-theoretic synthesis, the user provides an input-output functional specification, a description of the atomic operations in the programming language, and a specification of the synthesized program's looping structure, allo… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
5

Citation Types

0
64
0

Year Published

2012
2012
2020
2020

Publication Types

Select...
9
1

Relationship

0
10

Authors

Journals

citations
Cited by 88 publications
(64 citation statements)
references
References 35 publications
0
64
0
Order By: Relevance
“…In particular, we target the translation step from high-level constraints to SAT in bit-vector solvers. Bit-vector solvers are widely used in [18,29,45,50] because bit-vectors can be used to faithfully represent the full range of machine arithmetic and the translation from the input high-level constraints to SAT is a very crucial step in these solvers. Internally, these high-level constraints are stored as directed acyclic graphs (DAG) which we call formulas.…”
Section: Introductionmentioning
confidence: 99%
“…In particular, we target the translation step from high-level constraints to SAT in bit-vector solvers. Bit-vector solvers are widely used in [18,29,45,50] because bit-vectors can be used to faithfully represent the full range of machine arithmetic and the translation from the input high-level constraints to SAT is a very crucial step in these solvers. Internally, these high-level constraints are stored as directed acyclic graphs (DAG) which we call formulas.…”
Section: Introductionmentioning
confidence: 99%
“…; if (x > c) { y := x + 1; } else { y := 10; } return y } while satisfying the safety invariant B : (c − 10 ≤ y ≤ c + 10), and a quantitative specification that states that the return value of the procedure should be as low as possible. This is an example of a verified parameter synthesis problem [25,30,32,33]. The programmer has provided an implementation with missing numerical parameters -also known as a "sketch" [30]-and the synthesis problem is to find values for these parameters such that the resulting program satisfies the combined Boolean and quantitative specification.…”
Section: Introductionmentioning
confidence: 99%
“…Over the last few years, constraint-based approaches to synthesis based on sketches or templates have become quite popular [11,19,26,28,29]. In these approaches, the user specifies her intent with a template of the desired solution leaving parts of the code unspecified (a sketch), and the synthesizer finds the unknown code fragments such that the completed template conforms to a given set of behavioral constraints (the spec).…”
Section: Introductionmentioning
confidence: 99%