Go with the Flow: Compositional Abstractions for Concurrent Data Structures (Extended Version)
Siddharth Krishna, Dennis Shasha, Thomas Wies

TL;DR
This paper introduces flow interfaces in separation logic to abstract and reason about complex concurrent data structures, enabling modular proofs of correctness like linearizability and memory safety.
Contribution
It proposes a novel semantic model using flow interfaces for compositional abstraction of heap regions in concurrent data structures.
Findings
Extended RGSep with flow interfaces for better abstraction.
Proved linearizability of complex concurrent dictionaries.
Achieved memory safety proofs for nontrivial concurrent structures.
Abstract
Concurrent separation logics have helped to significantly simplify correctness proofs for concurrent data structures. However, a recurring problem in such proofs is that data structure abstractions that work well in the sequential setting are much harder to reason about in a concurrent setting due to complex sharing and overlays. To solve this problem, we propose a novel approach to abstracting regions in the heap by encoding the data structure invariant into a local condition on each individual node. This condition may depend on a quantity associated with the node that is computed as a fixpoint over the entire heap graph. We refer to this quantity as a flow. Flows can encode both structural properties of the heap (e.g. the reachable nodes from the root form a tree) as well as data invariants (e.g. sortedness). We then introduce the notion of a flow interface, which expresses the relies…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Security and Verification in Computing · Logic, programming, and type systems
