1. What are the contributions in "From program verification to program synthesis" ?
This paper describes a novel technique for the synthesis of imperative programs.. In their approach, which the authors 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, allowed stack space, and bound on usage of certain operations.. The insight behind their approach is to interpret program synthesis as generalized program verification, which allows us to bring verification tools and techniques to program synthesis.. The authors demonstrate the feasibility of the proposed approach by synthesizing programs in three different domains: arithmetic, sorting, and dynamic programming.. Using verification tools that the authors previously built in the VS project they are able to synthesize programs for complicated arithmetic algorithms including Strassen ’ s matrix multiplication and Bresenham ’ s line drawing ; several sorting algorithms ; and several dynamic programming algorithms.. 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.. For these programs, the median time for synthesis is 14 seconds, and the ratio of synthesis to verification time ranges between 1× to 92× ( with an median of 7× ), illustrating the potential of the approach.
read more
2. 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.
read more
3. 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.
read more
4. 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.
read more




