ACM Home Page
Please provide us with feedback. Feedback
Predicate abstraction for software verification
Full text PdfPdf (245 KB)
Source Annual Symposium on Principles of Programming Languages archive
Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages table of contents
Portland, Oregon
Pages: 191 - 202  
Year of Publication: 2002
ISBN:1-58113-450-9
Also published in ...
Authors
Cormac Flanagan  Compaq Systems Research Center, Palo Alto, CA
Shaz Qadeer  Compaq Systems Research Center, Palo Alto, CA
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
SIGACT: ACM Special Interest Group on Algorithms and Computation Theory
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 38,   Downloads (12 Months): 217,   Citation Count: 22
Additional Information:

abstract   references   cited by   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/503272.503291
What is a DOI?

ABSTRACT

Software verification is an important and difficult problem. Many static checking techniques for software require annotations from the programmer in the form of method specifications and loop invariants. This annotation overhead, particularly of loop invariants, is a significant hurdle in the acceptance of static checking. We reduce the annotation burden by inferring loop invariants automatically.Our method is based on predicate abstraction, an abstract interpretation technique in which the abstract domain is constructed from a given set of predicates over program variables. A novel feature of our approach is that it infers universally-quantified loop invariants, which are crucial for verifying programs that manipulate unbounded data such as arrays. We present heuristics for generating appropriate predicates for each loop automatically; the programmer can specify additional predicates as well. We also present an efficient algorithm for computing the abstraction of a set of states in terms of a collection of predicates.Experiments on a 44KLOC program show that our approach can automatically infer the necessary predicates and invariants for all but 31 of the 396 routines that contain loops.


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.

 
BBM97
 
BLS96
BMMR01
 
Bry86
 
BvW98
CC77
 
CGJ+00
CH78
 
DDP99
 
Dij76
 
DLNS98
D.L.Detlefs,K.R.M.Leino,C.G.Nelson,and J.B. Saxe.Extended static checking.Research Report 159,Compaq Systems Research Center,December 1998.
FS01
 
GS97
 
GW74
 
GW75
S.M.German and B.Wegbreit.A synthesizer of inductive assertions.IEEE Transactions on Software Engineering SE-1(1):68 -75,1975.
KM76
 
LSS99
K.R.M.Leino,J.B.Saxe,and R.Stata.Checkin Java programs via guarded commands.In Bart Jacobs,Gary T.Leavens,Peter Muller,and Arnd Poetzsch-Heffter,editors,Formal Techniques for Java Programs Technical Report 251.Fernuniversitat Hagen,May 1999.
 
MP92
 
Nel81
C.G.Nelson.Techniques for program verification. Technical Report CSL-81-10,Xerox Palo Alto Research Center,1981.
Nel89
SI77
 
SS99
TML97
Weg74

CITED BY  22
Collaborative Colleagues:
Cormac Flanagan: colleagues
Shaz Qadeer: colleagues