some image logo

HOME

SEARCH

CURRENT ISSUE

REGULAR ISSUES

   Volume 1 (2005)

   Volume 2 (2006)

   Volume 3 (2007)

   Volume 4 (2008)

   Volume 5 (2009)

      Issue 1

      Issue 2

      Issue 3

      Issue 4

   Volume 6 (2010)

   Volume 7 (2011)

   Volume 8 (2012)

   Volume 9 (2013)

   Volume 10 (2014)

   Volume 11 (2015)

   Volume 12 (2016)

   Volume 13 (2017)

SPECIAL ISSUES

SURVEY ARTICLES

AUTHORS

ABOUT

SERVICE

LOGIN

FAQ

SUPPORT

CONTACT

VOLUME 5, ISSUE 2, PAPER 12


Simulating reachability using first-order logic with applications to verification of linked data structures

©Tal Lev-Ami, Tel-Aviv University
©Neil Immerman, University of Massachusetts, Amherst
©Thomas W Reps, University of Wisconsin, Madison
©Mooly Sagiv, Tel-Aviv University
©Siddharth Srivastava, University of Massachusetts, Amherst
©Greta Yorsh, Tel-Aviv University

Abstract
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.)

Publication date: May 28, 2009

Full Text: PDF | PostScript
DOI: 10.2168/LMCS-5(2:12)2009

Hit Counts: 7925

Creative Commons