Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
A scalable lock-free stack algorithm
Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures
Proving that programs eventually do something good
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science
Proving that non-blocking algorithms don't block
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Abstraction for Concurrent Objects
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Progress guarantee for parallel programs via bounded lock-freedom
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
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
Liveness-preserving atomicity abstraction
ICALP'11 Proceedings of the 38th international conference on Automata, languages and programming - Volume Part II
Automatically proving linearizability
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Liveness-preserving atomicity abstraction
ICALP'11 Proceedings of the 38th international conference on Automata, languages and programming - Volume Part II
Concurrent library correctness on the TSO memory model
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Verifying backwards compatibility of object-oriented libraries using Boogie
Proceedings of the 14th Workshop on Formal Techniques for Java-like Programs
Linearizability with ownership transfer
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Intensional and extensional characterisation of global progress in the π-calculus
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Abstraction as a unifying link for formal approaches to concurrency
SEFM'12 Proceedings of the 10th international conference on Software Engineering and Formal Methods
Library abstraction for C/C++ concurrency
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A programming language perspective on transactional memory consistency
Proceedings of the 2013 ACM symposium on Principles of distributed computing
An epistemic perspective on consistency of concurrent computations
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Characterizing progress properties of concurrent objects via contextual refinements
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Hi-index | 0.00 |
Modern concurrent algorithms are usually encapsulated in libraries, and complex algorithms are often constructed using libraries of simpler ones. We present the first theorem that allows harnessing this structure to give compositional liveness proofs to concurrent algorithms and their clients. We show that, while proving a liveness property of a client using a concurrent library, we can soundly replace the library by another one related to the original library by a generalisation of a well-known notion of linearizability. We apply this result to show formally that lock-freedom, an often-used liveness property of non-blocking algorithms, is compositional for linearizable libraries, and provide an example illustrating our proof technique.