POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Z notation: a reference manual
The Z notation: a reference manual
ACM Transactions on Programming Languages and Systems (TOPLAS)
Z in practice
Using Z: specification, refinement, and proof
Using Z: specification, refinement, and proof
Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multiprocessors
Journal of Parallel and Distributed Computing
Reduction: a method of proving properties of parallel programs
Communications of the ACM
Refinement in Z and object-Z: foundations and advanced applications
Refinement in Z and object-Z: foundations and advanced applications
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
CONCUR '98 Proceedings of the 9th International Conference on Concurrency Theory
Theory Interpretation in Simple Type Theory
HOA '93 Selected Papers from the First International Workshop on Higher-Order Algebra, Logic, and Term Rewriting
A reduction theorem for concurrent object-oriented programs
Programming methodology
Pretending Atomicity
A scalable lock-free stack algorithm
Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures
Using eternity variables to specify and prove a serializable database interface
Science of Computer Programming - Special issue on mathematics of program construction (MPC 2002)
Eternity variables to prove simulation of specifications
ACM Transactions on Computational Logic (TOCL)
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
Refinement verification of the lazy caching algorithm
Acta Informatica
Modular verification of a non-blocking stack
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A general lock-free algorithm using compare-and-swap
Information and Computation
A criterion for atomicity revisited
Acta Informatica
Derivation of a Scalable Lock-Free Stack Algorithm
Electronic Notes in Theoretical Computer Science (ENTCS)
Deriving linearizable fine-grained concurrent objects
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Mechanizing a Correctness Proof for a Lock-Free Concurrent Stack
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Model Checking Linearizability via Refinement
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Verifying Concurrent Data Structures by Simulation
Electronic Notes in Theoretical Computer Science (ENTCS)
Using coupled simulations in non-atomic refinement
ZB'03 Proceedings of the 3rd international conference on Formal specification and development in Z and B
On the relationship between concurrent separation logic and assume-guarantee reasoning
ESOP'07 Proceedings of the 16th European conference on Programming
SPIN'03 Proceedings of the 10th international conference on Model checking software
Comparison under abstraction for verifying linearizability
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Proving linearizability via non-atomic refinement
IFM'07 Proceedings of the 6th international conference on Integrated formal methods
A statically verifiable programming model for concurrent object-oriented programs
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Non-atomic refinement in z and CSP
ZB'05 Proceedings of the 4th international conference on Formal Specification and Development in Z and B
A local shape analysis based on separation logic
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Modular safety checking for fine-grained concurrency
SAS'07 Proceedings of the 14th international conference on Static Analysis
A marriage of rely/guarantee and separation logic
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Verifying linearisability with potential linearisation points
FM'11 Proceedings of the 17th international conference on Formal methods
How to prove algorithms linearisable
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Modular verification of linearizability with non-fixed linearization points
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
Concurrent objects are inherently complex to verify. In the late 80s and early 90s, Herlihy and Wing proposed linearizability as a correctness condition for concurrent objects, which, once proven, allows us to reason about concurrent objects using pre- and postconditions only. A concurrent object is linearizable if all of its operations appear to take effect instantaneously some time between their invocation and return. In this article we define simulation-based proof conditions for linearizability and apply them to two concurrent implementations, a lock-free stack and a set with lock-coupling. Similar to other approaches, we employ a theorem prover (here, KIV) to mechanize our proofs. Contrary to other approaches, we also use the prover to mechanically check that our proof obligations actually guarantee linearizability. This check employs the original ideas of Herlihy and Wing of verifying linearizability via possibilities.