Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
The existence of refinement mappings
Theoretical Computer Science
Forward and backward simulations I.: untimed systems
Information and Computation
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
Refinement in Z and object-Z: foundations and advanced applications
Refinement in Z and object-Z: foundations and advanced applications
Distributed Algorithms
Using elimination to implement scalable and lock-free FIFO queues
Proceedings of the seventeenth annual ACM symposium on Parallelism in algorithms and architectures
Proving correctness of highly-concurrent linearisable objects
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Derivation of a Scalable Lock-Free Stack Algorithm
Electronic Notes in Theoretical Computer Science (ENTCS)
Atomic actions, and their refinements to isolated protocols
Formal Aspects of Computing
Comparison under abstraction for verifying linearizability
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Line-up: a complete and automatic linearizability checker
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Verifying linearizability with hindsight
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Temporal logic verification of lock-freedom
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Reasoning about optimistic concurrency using a program logic for history
CONCUR'10 Proceedings of the 21st international conference on Concurrency theory
Mechanically verified proof obligations for linearizability
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstraction for concurrent objects
Theoretical Computer Science
A separation logic for refining concurrent objects
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying linearisability with potential linearisation points
FM'11 Proceedings of the 17th international conference on Formal methods
Formal verification of a lock-free stack with hazard pointers
ICTAC'11 Proceedings of the 8th international conference on Theoretical aspects of computing
Automatically proving linearizability
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Model checking of linearizability of concurrent list implementations
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
A lazy concurrent list-based set algorithm
OPODIS'05 Proceedings of the 9th international conference on Principles of Distributed Systems
Modular verification of linearizability with non-fixed linearization points
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Automatic linearizability proofs of concurrent objects with cooperating updates
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Aspect-Oriented linearizability proofs
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Hi-index | 0.00 |
Linearisability is the standard correctness criterion for concurrent data structures. In this paper, we present a sound and complete proof technique for linearisability based on backward simulations. We exemplify this technique by a linearisability proof of the queue algorithm presented in Herlihy and Wing's landmark paper. Except for the manual proof by them, none of the many other current approaches to checking linearisability has successfully treated this intricate example. Our approach is grounded on complete mechanisation: the proof obligations for the queue are verified using the interactive prover KIV, and so is the general soundness and completeness result for our proof technique.