February 28, 2012
Ruy Ley-Wild
From Owicki-Gries’ resource invariants and Jones’ rely/guarantee to modern variants based on separation logic, axiomatic program logics for concurrency have a limited form of compositionality. Proving non-trivial properties usually requires the use of auxiliary state, which is “objective” in the sense that each thread’s auxiliary state is given a globally-unique name. Since auxiliary state exposes the program’s global structure to each local thread, axiomatic approaches fail to be compositional in the presence of auxiliary state.
We propose “subjective” auxiliary state as a solution to this historical limitation of axiomatic program logics. Each thread can be verified with a subjective view on auxiliary state: auxiliary state can be partitioned to either belong to the self (i.e., the thread itself) or to the other (i.e., its environment). We formulate Subjective Concurrent Separation Logic as a combination of the resource invariant method, separation logic, and subjective auxiliary state for a first-order, stateful, concurrent language. The logic provides compositional verification even when auxiliary state is needed.