Template-based program verification and program synthesis

Program verification is the task of automatically generating proofs for a program’s compliance with a given specification. Program synthesis is the task of automatically generating a program that meets a given specification. Both program verification and program synthesis can be viewed as search pro...

Full description

Saved in:
Bibliographic Details
Published inInternational journal on software tools for technology transfer Vol. 15; no. 5-6; pp. 497 - 518
Main Authors Srivastava, Saurabh, Gulwani, Sumit, Foster, Jeffrey S.
Format Journal Article
LanguageEnglish
Published Berlin/Heidelberg Springer Berlin Heidelberg 01.10.2013
Springer Nature B.V
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:Program verification is the task of automatically generating proofs for a program’s compliance with a given specification. Program synthesis is the task of automatically generating a program that meets a given specification. Both program verification and program synthesis can be viewed as search problems , for proofs and programs, respectively. For these search problems, we present approaches based on user-provided insights in the form of templates . Templates are hints about the syntactic forms of the invariants and programs, and help guide the search for solutions. We show how to reduce the template-based search problem to satisfiability solving, which permits the use of off-the-shelf solvers to efficiently explore the search space. Template-based approaches have allowed us to verify and synthesize programs outside the abilities of previous verifiers and synthesizers. Our approach can verify and synthesize difficult algorithmic textbook programs (e.g., sorting and dynamic programming-based algorithms) and difficult arithmetic programs.
Bibliography:ObjectType-Article-2
SourceType-Scholarly Journals-1
ObjectType-Feature-1
content type line 23
ISSN:1433-2779
1433-2787
DOI:10.1007/s10009-012-0223-4