Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Towards Efficient Satisfiability Checking for Boolean Algebra with Presburger Arithmetic
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
An integrated proof language for imperative programs
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Verified abstractions on developers' desks
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
CADE-22 Proceedings of the 22nd International Conference on Automated Deduction
FM '09 Proceedings of the 2nd World Congress on Formal Methods
An Incremental Approach to Scope-Bounded Checking Using a Lightweight Formal Method
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Decision procedures for algebraic data types with abstractions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polynomial constraints for sets with cardinality bounds
FOSSACS'07 Proceedings of the 10th international conference on Foundations of software science and computational structures
Using first-order theorem provers in the Jahob data structure verification system
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Runtime checking for program verification
RV'07 Proceedings of the 7th international conference on Runtime verification
Runtime checking for separation logic
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
Decision procedures for multisets with cardinality constraints
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
Decidable logics combining heap structures and data
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formal Methods in System Design
Sets with cardinality constraints in satisfiability modulo theories
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Automatically refining partial specifications for program verification
FM'11 Proceedings of the 17th international conference on Formal methods
Heaps and data structures: a challenge for automated provers
CADE'11 Proceedings of the 23rd international conference on Automated deduction
An efficient decision procedure for imperative tree data structures
CADE'11 Proceedings of the 23rd international conference on Automated deduction
Efficient decision procedures for heaps using STRAND
SAS'11 Proceedings of the 18th international conference on Static analysis
Science of Computer Programming
Collection disjointness analysis
Proceedings of the ACM SIGPLAN International Workshop on State of the Art in Java Program analysis
Synthesizing iterators from abstraction functions
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
QUIC graphs: relational invariant generation for containers
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Automatically refining partial specifications for heap-manipulating programs
Science of Computer Programming
Hi-index | 0.00 |
This dissertation describes an approach for automatically verifying data structures, focusing on techniques for automatically proving formulas that arise in such verification. I have implemented this approach with my colleagues in a verification system called Jahob. Jahob verifies properties of Java programs with dynamically allocated data structures. Developers write Jahob specifications in classical higher-order logic (HOL); Jahob reduces the verification problem to deciding the validity of HOL formulas. I present a new method for proving HOL formulas by combining automated reasoning techniques. My method consists of (1) splitting formulas into individual HOL conjuncts, (2) soundly approximating each HOL conjunct with a formula in a more tractable fragment and (3) proving the resulting approximation using a decision procedure or a theorem prover. I present three concrete logics; for each logic I show how to use it to approximate HOL formulas, and how to decide the validity of formulas in this logic. First, I present an approximation of HOL based on a translation to first-order logic, which enables the use of existing resolution-based theorem provers. Second, I present an approximation of HOL based on field constraint analysis, a new technique that enables decision procedures for special classes of graphs (such as monadic second-order logic over trees) to be applied to arbitrary graphs. Third, I present an approximation using Boolean Algebra with Presburger Arithmetic (BAPA), a logic that combines reasoning about sets of elements with reasoning about cardinalities of sets. BAPA can express relationships between sizes of data structures and invariants that correlate data structure size with integer variables. I present the first implementation of a BAPA decision procedure, and establish the exact complexity bounds for BAPA and quantifier-free BAPA. Together, these techniques enabled Jahob to modularly and automatically verify data structure implementations based on singly and doubly-linked lists, trees with parent pointers, priority queues, and hash tables. In particular, Jahob was able to prove that data structure implementations satisfy their specifications, maintain key data structure invariants expressed in a rich logical notation, and never produce run-time errors such as null dereferences or out of bounds accesses. (Copies available exclusively from MIT Libraries, Rm. 14-0551, Cambridge, MA 02139-4307. Ph. 617-253-5668; Fax 617-253-1690.)