Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
The existence of refinement mappings
Theoretical Computer Science
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
Verifying properties of parallel programs: an axiomatic approach
Communications of the ACM
Reduction: a method of proving properties of parallel programs
Communications of the ACM
CONCUR '02 Proceedings of the 13th International Conference on Concurrency Theory
Protocol Verification by Aggregation of Distributed Transactions
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
A scalable lock-free stack algorithm
Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures
Eternity variables to prove simulation of specifications
ACM Transactions on Computational Logic (TOCL)
Proving refinement using transduction
Distributed Computing - Special issue: Verification of lazy caching
Static analysis of atomicity for programs with non-blocking synchronization
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Proving correctness of highly-concurrent linearisable objects
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Lock-free dynamic hash tables with open addressing
Distributed Computing - Special issue: PODC 02
A Fair Fast Scalable Rea,der-Writer Lock
ICPP '93 Proceedings of the 1993 International Conference on Parallel Processing - Volume 02
Back to the future: revisiting precise program verification using SMT solvers
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying Michael and Scott's lock-free queue algorithm using trace reduction
CATS '08 Proceedings of the fourteenth symposium on Computing: the Australasian theory - Volume 77
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Shape-Value Abstraction for Verifying Linearizability
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
An annotation assistant for interactive debugging of programs with common synchronization idioms
Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Comparison under abstraction for verifying linearizability
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Formal verification of a lazy concurrent list-based set algorithm
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
A separation logic for refining concurrent objects
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A rely-guarantee-based simulation for verifying concurrent program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Linearizability with ownership transfer
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Logical relations for fine-grained concurrency
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying concurrent programs against sequential specifications
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
An integrated specification and verification technique for highly concurrent data structures
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Modular verification of linearizability with non-fixed linearization points
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Rely-Guarantee-Based Simulation for Compositional Verification of Concurrent Program Transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
The typical proof of linearizability establishes an abstraction map from the concurrent program to a sequential specification, and identifies the commit points of operations. If the concurrent program uses fine-grained concurrency and complex synchronization, constructing such a proof is difficult. We propose a sound proof system that significantly simplifies the reasoning about linearizability. Linearizability is proved by transforming an implementation into its specification within this proof system. The proof system combines reduction and abstraction, which increase the granularity of atomic actions, with variable introduction and hiding, which syntactically relate the representation of the implementation to that of the specification. We construct the abstraction map incrementally, and eliminate the need to reason about the location of commit points in the implementation. We have implemented our method in the QED verifier and demonstrated its effectiveness and practicality on several highly-concurrent examples from the literature.