We describe an approach for combining theorem proving techniques with static analysis to analyze data structure consistency for programs that manipulate heterogeneous data structures. Our system uses interactive theorem proving and shape analysis to verify that data structure implementations conform to set interfaces. A simpler static analysis then uses the verified set interfaces to verify properties that characterize how shared objects participate in multiple data structures. We have successfully applied this technique to several programs and found that theorem proving within circumscribed regions of the program combined with static analysis enables the verification of large-scale program properties. 1
|
310
|
Parametric shape analysis via 3-valued logic
– Sagiv, Reps, et al.
|
|
305
|
Isabelle/HOL — A Proof Assistant for Higher-Order Logic
– Nipkow, Paulson, et al.
- 2002
|
|
270
|
Extended static checking for Java
– Flanagan, Leino, et al.
- 2002
|
|
250
|
Introduction to Algorithms, Second Edition
– Cormen, Leiserson, et al.
|
|
250
|
Extended static checking
– Detlefs, Leino, et al.
- 1998
|
|
228
|
Automatic predicate abstraction of C programs
– Ball, Majumdar, et al.
- 2001
|
|
159
|
J.B.: Simplify: A theorem prover for program checking
– Detlefs, Nelson, et al.
- 2003
|
|
133
|
An overview of JML tools and applications
– Burdy, Cheon, et al.
|
|
131
|
Isabelle: A Generic Theorem
– Paulson
- 1994
|
|
101
|
The Pointer Assertion Logic Engine
– Moller, Schwartzbach
- 2001
|
|
86
|
Techniques for program verification
– Nelson
- 1981
|
|
85
|
Role analysis
– Kuncak, Lam, et al.
- 2002
|
|
80
|
Data Refinement: Model-Oriented Proof Methods and their Comparison
– Roever, Engelhardt
- 1998
|
|
79
|
D.: CVC: a cooperating validity checker
– Stump, Barrett, et al.
|
|
74
|
Abstractions from proofs
– Henzinger, Jhala, et al.
- 2004
|
|
62
|
Shape types
– Fradet, Métayer
- 1997
|
|
60
|
Avoiding exponential explosion: generating compact verification conditions
– Flanagan, Saxe
- 2001
|
|
58
|
Types as models: model checking messagepassing programs
– Chaki, Rajamani, et al.
- 2002
|
|
48
|
STeP: Deductive-algorithmic verification of reactive and real-time systems
– Bjorner, Browne, et al.
- 1996
|
|
43
|
Data refinement refined
– He, Hoare, et al.
- 1986
|
|
41
|
Theorem proving using lazy proof explication
– Flanagan, Joshi, et al.
- 2003
|
|
26
|
Complexity of boolean algebras
– Kozen
- 1980
|
|
24
|
Deconstructing Shostak
– Ruess, Shankar
- 2001
|
|
23
|
Logical characterizations of heap abstractions
– Yorsh
- 2003
|
|
17
|
Mona version 1.4 - user manual
– Klarlund, Mller
|
|
15
|
On our experience with modular pluggable analyses
– Lam, Kuncak, et al.
- 2004
|
|
14
|
Proving theorems about Java and the JVM with ACL2
– Moore
- 2003
|
|
13
|
Verifying a file system implementation
– Arkoudas, Zee, et al.
|
|
13
|
Extensions for multi-module records in conventional programming languages
– Cheriton, Wolf
- 1987
|
|
13
|
Über mögligkeiten im relativkalkül
– Loewenheim
- 1915
|
|
12
|
Generalized typestate checking using set interfaces and pluggable analyses
– Lam, Kuncak, et al.
- 2004
|
|
9
|
On modular pluggable analyses using set interfaces
– Lam, Kuncak, et al.
- 2003
|
|
9
|
A quantifier elimination algorithm for a fragment of set theory involving the cardinality operator
– Zarba
- 2004
|
|
6
|
The Hob project web page. http://catfish.csail.mit.edu/∼plam/hob
– Lam, Kuncak, et al.
- 2004
|
|
6
|
Combining sets with elements
– Zarba
|
|
4
|
The Combination Problem in Automated Reasoning
– Zarba
- 2004
|
|
2
|
Uber m"ogligkeiten im relativkalk"ul
– Loewenheim
- 1915
|
|
1
|
Verifying set interfaces based on object field values
– Lam, Kuncak, et al.
- 2005
|