Charles Bouillaguet, Viktor Kuncak, Thomas Wies, Karen Zee, and Martin Rinard.
Using first-order theorem provers in the Jahob data structure
verification system.
In Verification, Model Checking and Abstract Interpretation,
volume 4349 of LNCS, November 2007.
See [53] for full
version.
This paper presents our integration of efficient resolution-based
theorem provers into the Jahob data structure verification system.
Our experimental results show that this approach enables Jahob to
automatically verify the correctness of a range of complex dynamically
instantiable data structures, such as hash tables and search trees,
without the need for interactive theorem proving or techniques
tailored to individual data structures.
Our primary technical results include: (1) a translation from
higher-order logic to first-order logic that enables the application
of resolution-based theorem provers and (2) a proof that eliminating
type (sort) information in formulas is both sound and complete, even
in the presence of a generic equality operator. Our experimental
results show that the elimination of type information often
dramatically decreases the time required to prove the resulting
formulas.
These techniques enabled us to verify complex correctness properties
of Java programs such as a mutable set implemented as an imperative
linked list, a finite map implemented as a functional ordered tree, a
hash table with a mutable array, and a simple library system example
that uses these container data structures. Our system verifies (in a
matter of minutes) that data structure operations correctly update the
finite map, that they preserve data structure invariants (such as
ordering of elements, membership in appropriate hash table buckets, or
relationships between sets and relations), and that there are no
run-time errors such as null dereferences or array out of bounds
accesses.
[ bib ]
Back