From program verification to program synthesis
read more
Citations
Automating string processing in spreadsheets using input-output examples
Code completion with statistical language models
Syntax-guided synthesis
Automated feedback generation for introductory programming assignments
Syntax-guided synthesis
References
Introduction to Algorithms
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
Guarded commands, nondeterminacy and formal derivation of programs
Related Papers (5)
Frequently Asked Questions (11)
Q2. What future works have the authors mentioned in the paper "From program verification to program synthesis" ?
The authors envision that in the future, they can either augment synthesis conditions with constraints about relevance or use a postprocessing step to prioritize and pick relevant solutions from those enumerated.
Q3. What is the function that expands a flowgraph?
Given a string for a flowgraph template, the authors define an expansion function Expand : int ×Dprf ×R ×D ×Rflow → TSL that introduces fresh unknowns for missing guards, statements and invariants that are to be synthesized.
Q4. Why does the solver not derive s2 + 1 s1?
because of the incompleteness in the handling of quadratic expressions, their solver cannot derive (s2 + 1)2 ≤ s21 from s2 + 1 ≤ s1.
Q5. How do the authors encode program guards and statements?
The authors encode the synthesis problem as a verification problem by encoding program guards and statements as logical facts that need to be discovered.
Q6. How have the authors demonstrated the viability of their approach?
The authors have demonstrated the viability of their approach by synthesizing difficult examples in the three domains of arithmetic, sorting, and dynamic programming, all in very reasonable time.
Q7. What are the synthesis conditions for an expanded scaffold?
The synthesis conditions corresponding to a scaffold are satisfiable iff there exists a program (with a maximum of n transitions in each acyclic fragment where n is the parameter to the expansion) that is valid with respect to the scaffold.
Q8. How do the authors constrain the well-formedness of an expanded scaffold?
The authors constrain the well-formedness of each transition system in the expanded scaffold exp = ExpandD,Rn,Dprf(Rflow) using Eq. (4).WellFormCond(exp) = ^choose {[]gi→si}i ∈cond(exp)WellFormTS({[]gi → si}i) (5)where cond(exp) recursively examines the expanded scaffold exp and returns the set of all choose statements in it.
Q9. What is the way to ensure that the guards are not disjointed?
Disjointedness is not required for correctness [11] because if multiple guards are triggered then arbitrarily choosing the body for any one suffices.
Q10. What are the constraints that are used to solve the synthesis conditions?
The authors then observe that they resemble verification conditions, and the authors can employ verification tools, if they have certain properties, to solve them (Section 4).
Q11. What is the simplest way to collapse acyclic fragments?
This assumption holds without loss of generality because it is always possible to collapse consecutive acyclic fragments, e.g., two consecutive acyclic fragments with n transitions each can be collapsed into a single acyclic fragment with n2 transitions.