Proc. of the European symposium on programming on ESOP 86
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
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
Pretending Atomicity
A scalable lock-free stack algorithm
Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures
Refinement verification of the lazy caching algorithm
Acta Informatica
A criterion for atomicity revisited
Acta Informatica
Derivation of a Scalable Lock-Free Stack Algorithm
Electronic Notes in Theoretical Computer Science (ENTCS)
Data Refinement: Model-Oriented Proof Methods and their Comparison
Data Refinement: Model-Oriented Proof Methods and their Comparison
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
Proving linearizability via non-atomic refinement
IFM'07 Proceedings of the 6th international conference on Integrated formal methods
Non-atomic refinement in z and CSP
ZB'05 Proceedings of the 4th international conference on Formal Specification and Development in Z and B
Refinement of State-Based Systems: ASMs and Big Commuting Diagrams (Abstract)
ABZ '08 Proceedings of the 1st international conference on Abstract State Machines, B and Z
Mechanically verified proof obligations for linearizability
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verifying linearisability with potential linearisation points
FM'11 Proceedings of the 17th international conference on Formal methods
Hi-index | 0.00 |
Distributed algorithms are inherently complex to verify. In this paper we show how to verify that a concurrent lock-free implementation of a stack is correct by mechanizing the proof that it is linearizable, linearizability being a correctness notion for concurrent objects. Our approach consists of two parts: the first part is independent of the example and derives proof obligations local for one process which imply linearizabilty. The conditions establish a (special sort of non-atomic) refinement relationshipbetween the specification and the concurrent implementation. These are used in the second part to verify the lock-free stack implementation. We use the specification language Z to describe the algorithms and the KIV theorem prover to mechanize the proof.