Title
Recursive Games for Compositional Program Synthesis.
Abstract
Compositionality, i.e., the use of procedure summarization instead of code inlining, is key to scaling automated verification to large code bases. In this paper, we present a way to exploit compositionality in the context of program synthesis. The goal in our synthesis problem is to instantiate missing expressions in a procedural program so that the resulting program satisfies a safety or termination requirement in spite of an adversarial environment. The problem is modeled as a game between two players -- the program and the environment -- that take turns changing the program's state and stack. The objective of the program is to ensure that all executions of this recursive game satisfy the requirement. Synthesis involves the modular computation of a strategy under which the program meets this objective. Our solution is based on the notion of game summaries, which generalize traditional procedure summaries, and relate program states in a procedural context with sets of states at which the game can return from that context. Our method for compositional reasoning about game summaries is embodied in a set of deductive proof rules. We prove these rules sound and relatively complete. We also show that a sound approximation of these rules can be automated using a Horn constraint solver that utilizes SMT-solving, counterexample-guided abstraction refinement, and interpolation. An experimental evaluation over a set of systems code benchmarks demonstrates the practical promise of the approach.
Year
DOI
Venue
2015
10.1007/978-3-319-29613-5_2
VSTTE
Field
DocType
Volume
Principle of compositionality,Automatic summarization,Horn clause,Programming language,Expression (mathematics),Program synthesis,Computer science,Theoretical computer science,Constraint satisfaction problem,Modular design,Recursion
Conference
9593
ISSN
Citations 
PageRank 
0302-9743
1
0.35
References 
Authors
26
4
Name
Order
Citations
PageRank
Tewodros A. Beyene1703.74
Swarat Chaudhuri298167.68
Corneliu Popeea337418.27
Andrey Rybalchenko4143968.53