Summary: Chapter 1
to Separation Logic
c 2009 John C. Reynolds
January 14, 2009
Separation logic is a novel system for reasoning about imperative programs.
It extends Hoare logic with enriched assertions that can describe the separa-
tion of storage and other resources concisely. The original goal of the logic
was to facilitate reasoning about shared mutable data structures, i.e., struc-
tures where updatable fields can be referenced from more than one point.
More recently, the logic has been extended to deal with shared-variable con-
currency and information hiding, and the notion of separation has proven
applicable to a wider conceptual range, where access to memory is replaced
by permission to exercise capabilities, or by knowledge of structure. In a
few years, the logic has become a significant research area, with a growing
literature produced by a variety of researchers.
1.1 An Example of the Problem
The use of shared mutable data structures is widespread in areas as diverse
as systems programming and artificial intelligence. Approaches to reasoning