 
Summary: This is a preprint of a paper to appear in the Proceedings of the
Seventeenth Annual IEEE Symposium on Logic in Computer Science, to
be held July 2225, 2002 in Copenhagen, Denmark. Copyright 2002 IEEE.
Separation Logic: A Logic for Shared Mutable Data Structures
John C. Reynolds
Computer Science Department
Carnegie Mellon University
john.reynolds@cs.cmu.edu
Abstract
In joint work with Peter O'Hearn and others, based on
early ideas of Burstall, we have developed an extension of
Hoare logic that permits reasoning about lowlevel impera
tive programs that use shared mutable data structure.
The simple imperative programming language is ex
tended with commands (not expressions) for accessing and
modifying shared structures, and for explicit allocation and
deallocation of storage. Assertions are extended by intro
ducing a ``separating conjunction'' that asserts that its sub
formulas hold for disjoint parts of the heap, and a closely
related ``separating implication''. Coupled with the induc
