The purpose of this page is just to point you to some relevant papers, should you be interested in delving into some of the further work on local reasoning and separation logic. I've broken the further work into categories:
Concurrency   Verification and Program Analysis   Footprints and the Frame Problem   Separation Logic for OO.   Talks   Other Interesting Papers  
Back to Local Reasoning Page  
 
That paper grew out of a
note from January 2002
which showed some modular reasoning about concurrency.
At that time I had no model and was scared about soundness.
Then John Reynolds showed surprising subtleties regarding soundness, and
we were facing an extremely difficult problem in the semantics of concurrency.
We needed expert help, and it arrived in Steve Brookes
who rode in and saved the day (and the whole approach).
The next step adapted a nice idea of John Boyland to allow
processes to share read permissions.
 
Rely/Guarantee meets Separation Logic.
Interesting work is under way on combining ideas in concurrent separation
logic with the
rely/guarantee formalism pioneered by Cliff Jones.
Two groups independently made very good steps in this direction in 2006.
 
More Work on Semantics.
Speaking of granularity, partly spurred by the concurrent separation logic,
John Reynolds has opened an attack on Dijkstra's old ``grain of time''
problem.
A completely different kind of model was defined by Jonathan Hayman
and Glynn Winskel, using Petri Nets.
 
Further Remarks and Links related to Concurrency.
 
Smallfoot-RG is an extention
which uses the marriage or rely-guarantee and separation logic proposed
by
Parkinson and Vafeiadis to provide the first automatic
verifications for (some properties of) some tricky concurrent algorithms.
 
Program Analysis.
In 2005 we started working on program analysis using separation logic.
The first step use Smallfoot's symbolic execution mechanism
together with selected true impications to infer invariants via a fixed-point
calculation, in the usual way of abstract interpretation.
Concurrency
Beginning.
The place to get started is
Resources, Concurrency and Local Reasoning
Some highlights: we can transfer portions of heap between processes,
as in a resource manager or in efficient message passing;
we can do modular reasoning in the presence of semaphores (e.g.,
split binary semaphores without maintaining a global invariant);
we do parallel mergesort with no rely or guarantee conditions, the proven
processes
automatically mind their own business.
PW O'Hearn,
Theoretical Computer Science 375(1-3) (Reynolds Festschrift),
pp271-307, May 2007.
A
preliminary version appeared in the
Proceedings of CONCUR'04, LNCS 3170, pp49-67.
A Semantics for Concurrent Separation Logic
SD Brookes,
Theoretical Computer Science 375(1-3) (Reynolds Festschrift),
pp227-270, May 2007.
A
preliminary version appeared in the
Proceedings of CONCUR'04, LNCS 3170, pp16-34.
Permission Accounting in Separation Logic, by R Bornat,
C Calcagno, P O'Hearn and M Parkinson, POPL 2005, 59-70.
A highlight: a nice proof of the classic readers-and-writers program.
In the original TCS paper I emphasized that proven programs are race-free,
and Steve Brookes showed a theorem to that effect.
Doug Lea then pointed us to a challenge, some extremely racy non-blocking algorithms.
After a lot of discussion in the East London Massive,
and some unsuccessful attempts,
Matthew Parkinson finally gave a proof of such an algorithm.
Modular Verification of a Non-blocking Stack
Of course, there is no conflict with the ``no races'' theorem:
the concurrent separation logic just forces you to be explicit about granularity,
by wrapping little critical sections around those
portions of code considered atomic.
M Parkinson, R Bornat and P O'Hearn,
POPL 2007
A Marriage of Rely/Guarantee and Separation Logic
Matthew Parkinson and Viktor Vafeiadis. (Submitted)
On the Relationship between Concurrent Separation Logic and Assume-Guarantee Reasoning
The main interest in these approaches is that they try to merge the
merits of rely/guarantee (good treatment of
interference) and separation logic (good treatment of independence, avoidance of global states).
It's early days yet for these approaches, but they appear to have promise.
Xinyu Feng,
Rodrigo Ferreira and
Zhong Shao. To appear in ESOP'07.
Towards a Grainless Semantics for Shared Variable Concurrency
And Steve Brookes has also weighed in on the subject.
John C. Reynolds, Invited Paper, Proceedings of FSTTCS'04.
A Grainless Semantics for Parallel Programs with Shared Mutable Data
It is rather amazing to me to
see progress on such basic problems in the semantics of concurrency, many years after they arose.
Stephen Brookes. Proceedings of MFPS'05.
Independence and Concurrent Separation Logic
Their model accounts for ``independence'' properties of
proven programs in concurrent separation logic, and also
is pertinent to the grain of time problem because of the good refinement
properties that Petri nets (and other independence models) possess.
Jonathan Hayman and Glynn Winskel, Proceedings of LICS'06
Safe concurrency for aggregate objects with invariants.
Bart Jacobs, K. Rustan M. Leino, Frank Piessens and Wolfram Schulte.
SEFM 2005.
Program Verification and Analysis
News:
Smallfoot.
The goal of Smallfoot was to see if the simplicity of by-hand specs
and proofs could be transferred to an automatic setting.
Smallfoot is an assertion checker. It requires (lightweight)
preconditions, postconditions
and loop invariants to be given by the user.
It uses its own toy programming language, designed to ease experimentation
in the initial steps, rather than a
real programming language.
There are two main papers to look at:
Scalable Shape Analysis for Systems Code
SpaceInvader v1.0
is a prototype release, which included the driver benchmarks.
H Yang, O Lee, J Berdine, C Calcagno, B Cook, D Distefano and P O'Hearn.
CAV'08
Symbolic Execution with Separation Logic.
J Berdine, C Calcagno and PW O'Hearn. Proceedings of APLAS'05, LNCS 3780, pp52-68.
Smallfoot: Modular Automatic Assertion Checking with Separation Logic
Smallfoot v0.1 was released in December of 2005.
J Berdine, C Calcagno and PW O'Hearn. In 4th FMCO, LNCS 4111, 2006
Modular Safety Checking for Fine-Grained Concurrency
C Calcagno and M Parkinson and V Vafeiadis. To appear in SAS'07 .
A local shape analysis based on separation logic
Dino named this approach Space Invader
(you can figure out what it stands for), and he has a
SpaceInvader blog.
(Closely related ideas were put forth independently in a
paper of Magill et al. )
Anyhow, the point of this first Invader paper was to
show a way of defining an abstract domain that has some of separation logic's
modularity built in, as a springboard for further things.
Here are some of the further things:
D Distefano, P O'Hearn and H Yang. In 12th TACAS, LNCS 3920, pp287-302, 2006.
Further Remarks and Links related to Verification and Analysis.
 
The frame problem in AI is that, when specifying
what changes, an inordinate amount of effort usually needs to be
spent saying what doesn't change. These frame axioms (what doesn't change)
distract from the real concern: what changes.
For example, when say you increment location 10's contents, you intend
that no other locations are altered, but it is a pain to say so explicitly.
There are many, many papers on the frame problem int he AI literature.
You can find them on search engines. I recommend, especially, papers of Reiter for their simplicity and clarity.
A
POPL'01 paper and a
CSL'01 paper
described an approach to the frame problem
for programs
based on a connection between frame axioms and
the notion of footprint : the cells a program accesses.
We know that any cell outside the footprint will not change,
so frame axioms describing this absence of change can be obtained for free,
without explicitly stating them beforehand.
A
FOSSACS'02 paper
went on to explain that, while
separation logic gives a convenient way to exploit this fact, using the frame rule, it is in no way necessary:
the frame axioms (invariants for cells outside the footprint)
are just true, whether or not you employ separation logic to
express them.
Several papers have taken these ideas further, and probed more deeply.
 
Alternative approaches to footprints/frames.
One alternative has been put forth by Benton.
Another alternative is in
work by Kassios.
Finally, here is some very recent work with a very clear treatment
of the issues involved.
These works identify locality properties related to those that underly separation
logic (e.g., the ``frame property''): it is something like working in the target
language of separation logic semantics, but not exactly...
 
Next,
Parkinson and Bierman have extended their work to account for inheritance
The Parkinson-Bierman approach works by adding ``abstract predicates''
to separation logic. These predicates are logical cousins of type
variabes, and their explanation of abstraction with them is somehow
analogous to the treatments of classical abstract typesusing the
polymorphic lambda-calculus, by Reynols, Mitchell and Plotkin.
A foundational and powerful view of the mechanisms here was given
in
Further works related to OO, Data Abstraction and Refinement.
 
Footprints and the Frame Problem
C Calcagno, PW O'Hearn and H Yang.
To appear in LICS'07.
P Gardner, C Calcagno and U Zarfaty
Gordon Plotkin's festschrift, ENTCS, to appear in 2007.
To appear in LMCS (FOSSACS 2008 Special Issue).
Benton considers a model that
contradicts some of the underlying assumptions of
the above work (namely, the frame property), and makes the support
(or footprint) of an assertion explicit.
He also uses a polymorphic interpretation of Hoare triples.
Proceedings of Computer Science Logic (CSL '06). LNCS 4207, September 2006.
His ``dynamic frames'' also allow
the footprint (or, a collection of current or owned cells)
to appear explicitly in
specifications, rather than left implicit as in separation logic.
Separation Logic and Object-Oriented Programming
A nod in the OO direction considered static modules (like single-instance classes).
Then, Matthew Parkinson in his thesis, and in a paper with Gavin Bierman,
took a major step forward, to handle a subset of Java.
PW O'Hearn, H Yang and JC Reynolds,
Proceedings of 31st POPL. Pages 268-280. Jan 2004
More recently, Parkinson has given an entertaining and radical position paper against
the noion of class invariant, bolstered by simple solutions to
some old conundrums
M Parkinson and G Bierman
Proceedings of 32nd POPL. Pages 247-258. Jan 2005
M Parkinson
PhD Thesis, Uiv of Cambridge, Aug 2005.
and a very similar solution was obtained in
Quite a lot is happening in this space, not all of which is explicitly
presented in OO terms.
Random Further Reading
The following list collects a few pointers to other papers not listed above.
It is intentionally incomplete and will
be updated infrequently.
Theoretical Computer Science, 2004.