Simulating reachability using first-order logic with applications to verification of linked data structures
This paper shows how to harness existing theorem provers for first-order logic to automatically verify safety properties of imperative programs that perform dynamic storage allocation and destructive updating of pointer-valued structure fields. One of the main obstacles is specifying and proving the...
Saved in:
Published in | Logical methods in computer science Vol. 5, Issue 2 |
---|---|
Main Authors | , , , , , |
Format | Journal Article |
Language | English |
Published |
Logical Methods in Computer Science e.V
28.05.2009
|
Subjects | |
Online Access | Get full text |
Cover
Loading…
Summary: | This paper shows how to harness existing theorem provers for first-order
logic to automatically verify safety properties of imperative programs that
perform dynamic storage allocation and destructive updating of pointer-valued
structure fields. One of the main obstacles is specifying and proving the
(absence) of reachability properties among dynamically allocated cells.
The main technical contributions are methods for simulating reachability in a
conservative way using first-order formulas--the formulas describe a superset
of the set of program states that would be specified if one had a precise way
to express reachability. These methods are employed for semi-automatic program
verification (i.e., using programmer-supplied loop invariants) on programs such
as mark-and-sweep garbage collection and destructive reversal of a singly
linked list. (The mark-and-sweep example has been previously reported as being
beyond the capabilities of ESC/Java.) |
---|---|
ISSN: | 1860-5974 1860-5974 |
DOI: | 10.2168/LMCS-5(2:12)2009 |