Proving linearizability using forward simulations
From MaRDI portal
Abstract: Linearizability is the standard correctness criterion concurrent data structures such as stacks and queues. It allows to establish observational refinement between a concurrent implementation and an atomic reference implementation.Proving linearizability requires identifying linearization points for each method invocation along all possible computations, leading to valid sequential executions, or alternatively, establishing forward and backward simulations. In both cases, carrying out proofs is hard and complex in general. In particular, backward reasoning is difficult in the context of programs with data structures, and strategies for identifying statically linearization points cannot be defined for all existing implementations. In this paper, we show that, contrary to common belief, many such complex implementations, including, e.g., the Herlihy&Wing Queue and the Time-Stamped Stack, can be proved correct using only forward simulation arguments. This leads to conceptually simple and natural correctness proofs for these implementations that are amenable to automation.
Recommendations
Cited in
(17)- A constructive approach for proving data structures' linearizability
- \textsc{Poling}: SMT aided linearizability proofs
- A mechanized refinement proof of the Chase-Lev deque using a proof system
- A scalable, correct time-stamped stack
- Aspect-oriented linearizability proofs
- A sound and complete proof technique for linearizability of concurrent data structures
- Proving linearizability using partial orders
- Simplifying linearizability proofs with reduction and abstraction
- Proving Linearizability Via Non-atomic Refinement
- Model checking simulation rules for linearizability
- Parsimonious, Simulation Based Verification of Linear Systems
- Verifying visibility-based weak consistency
- Order out of chaos: proving linearizability using local views
- Aspect-oriented linearizability proofs
- Proving linearizability with temporal logic
- Making Linearizability Compositional for Partially Ordered Executions
- Visibility and separability for a declarative linearizability proof of the timestamped stack
This page was built for publication: Proving linearizability using forward simulations
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q2164258)