| Control-flow refinement and progress invariants for bound analysis |
| Full text |
Pdf
(537 KB)
|
Source
|
Conference on Programming Language Design and Implementation
archive
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
table of contents
Dublin, Ireland
SESSION: Program analysis and invariants
table of contents
Pages 375-385
Year of Publication: 2009
ISBN:978-1-60558-392-1
Also published in ...
|
|
Authors
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 35, Downloads (12 Months): 112, Citation Count: 1
|
|
|
ABSTRACT
Symbolic complexity bounds help programmers understand the performance characteristics of their implementations. Existing work provides techniques for statically determining bounds of procedures with simple control-flow. However, procedures with nested loops or multiple paths through a single loop are challenging. In this paper we describe two techniques, control-flow refinement and progress invariants, that together enable estimation of precise bounds for procedures with nested and multi-path loops. Control-flow refinement transforms a multi-path loop into a semantically equivalent code fragment with simpler loops by making the structure of path interleaving explicit. We show that this enables non-disjunctive invariant generation tools to find a bound on many procedures for which previous techniques were unable to prove termination. Progress invariants characterize relationships between consecutive states that can arise at a program location. We further present an algorithm that uses progress invariants to compute precise bounds for nested loops. The utility of these two techniques goes beyond our application to symbolic bound analysis. In particular, we discuss applications of control-flow refinement to proving safety properties that otherwise require disjunctive invariants. We have applied our methodology to over 670,000 lines of code of a significant Microsoft product and were able to find symbolic bounds for 90% of the loops. We are not aware of any other published results that report experiences running a bound analysis on a real code-base.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Phoenix Compiler. research.microsoft.com/Phoenix/.
|
| |
2
|
Z3 Theorem Prover. research.microsoft.com/projects/Z3/.
|
| |
3
|
|
| |
4
|
Gogul Balakrishnan , Sriram Sankaranarayanan , Franjo Ivančić , Ou Wei , Aarti Gupta, SLR: Path-Sensitive Analysis through Infeasible-Path Detection and Syntactic Language Refinement, Proceedings of the 15th international symposium on Static Analysis, July 16-18, 2008, Valencia, Spain
[doi> 10.1007/978-3-540-69166-2_16]
|
 |
5
|
Josh Berdine , Aziem Chawdhary , Byron Cook , Dino Distefano , Peter O'Hearn, Variance analyses from invariance analyses, Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, January 17-19, 2007, Nice, France
|
 |
6
|
|
 |
7
|
|
 |
8
|
|
 |
9
|
|
| |
10
|
Denis Gopan and Thomas W. Reps. Lookahead widening. In CAV, 2006.
|
| |
11
|
Denis Gopan and Thomas W. Reps. Guided static analysis. In SAS, 2007.
|
| |
12
|
|
 |
13
|
Bhargav S. Gulavani , Thomas A. Henzinger , Yamini Kannan , Aditya V. Nori , Sriram K. Rajamani, SYNERGY: a new algorithm for property checking, Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, November 05-11, 2006, Portland, Oregon, USA
[doi> 10.1145/1181775.1181790]
|
 |
14
|
|
 |
15
|
|
| |
16
|
|
| |
17
|
|
| |
18
|
|
 |
19
|
Thomas A. Henzinger , Ranjit Jhala , Rupak Majumdar , Grégoire Sutre, Lazy abstraction, Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.58-70, January 16-18, 2002, Portland, Oregon
|
| |
20
|
Björn Lisper. Fully automatic, parametric worst--case execution time analysis. In WCET, 2003.
|
| |
21
|
Ali Mili. Reflexive transitive loop invariants: A basis for computing loop functions. In WING, 2007.
|
| |
22
|
|
| |
23
|
A. Podelski and A. Rybalchenko. A complete method for the synthesis of linear ranking functions. LNCS, 2003.
|
| |
24
|
|
| |
25
|
Sriram Sankaranarayanan, Franjo Ivancic, Ilya Shlyakhter, and Aarti Gupta. Static analysis in disjunctive numerical domains. In SAS, 2006.
|
| |
26
|
Chao Wang, Zijiang Yang, Aarti Gupta, and Franjo Ivancic. Using counterexamples for improving the precision of reachability computation with polyhedra. In CAV, 2007.
|
 |
27
|
Reinhard Wilhelm , Jakob Engblom , Andreas Ermedahl , Niklas Holsti , Stephan Thesing , David Whalley , Guillem Bernat , Christian Ferdinand , Reinhold Heckmann , Tulika Mitra , Frank Mueller , Isabelle Puaut , Peter Puschner , Jan Staschulat , Per Stenström, The worst-case execution-time problem—overview of methods and survey of tools, ACM Transactions on Embedded Computing Systems (TECS), v.7 n.3, p.1-53, April 2008
[doi> 10.1145/1347375.1347389]
|
|