A Separation Logic for Refining Concurrent Objects
Fine-grained concurrent data structures are crucial for gaining performance from multiprocessing, but their design is a subtle art. Recent literature has made large strides in verifying these data structures, using either atomicity refinement or separation logic with rely-guarantee reasoning. In this paper, the authors show how the ownership discipline of separation logic can be used to enable atomicity refinement, and they develop a new rely-guarantee method that is localized to the definition of a data structure. They present the first semantics of separation logic that is sensitive to atomicity, and show how to control this sensitivity through ownership. The result is a logic that enables compositional reasoning about atomicity and interference, even for programs that use fine-grained synchronization and dynamic memory allocation.