Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Testing and verifying concurrent objects
Journal of Parallel and Distributed Computing - Special issue on parallel I/O systems
On optimistic methods for concurrency control
ACM Transactions on Database Systems (TODS)
Specifying Concurrent Program Modules
ACM Transactions on Programming Languages and Systems (TOPLAS)
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
VYRD: verifYing concurrent programs by runtime refinement-violation detection
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Resources, concurrency, and local reasoning
Theoretical Computer Science
Deriving linearizable fine-grained concurrent objects
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Thread Quantification for Concurrent Shape Analysis
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
On the relationship between concurrent separation logic and assume-guarantee reasoning
ESOP'07 Proceedings of the 16th European conference on 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
Formal verification of a lazy concurrent list-based set algorithm
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Automatically proving linearizability
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
A marriage of rely/guarantee and separation logic
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Computer-aided construction of concurrent systems
Proceedings of the 11th International Conference on Computer Systems and Technologies and Workshop for PhD Students in Computing on International Conference on Computer Systems and Technologies
Verifying linearisability with potential linearisation points
FM'11 Proceedings of the 17th international conference on Formal methods
Automatically proving linearizability
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
How to prove algorithms linearisable
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
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
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
Hi-index | 0.00 |
We present a proof of safety and linearizability of a highly-concurrent optimistic set algorithm. The key step in our proof is the Hindsight Lemma, which allows a thread to infer the existence of a global state in which its operation can be linearized based on limited local atomic observations about the shared state. The Hindsight Lemma allows us to avoid one of the most complex and non-intuitive steps in reasoning about highly concurrent algorithms: considering the linearization point of an operation to be in a different thread than the one executing it. The Hindsight Lemma assumes that the algorithm maintains certain simple invariants which are resilient to interference, and which can themselves be verified using purely thread-local proofs. As a consequence, the lemma allows us to unlock a perhaps-surprising intuition: a high degree of interference makes non-trivial highly-concurrent algorithms in some cases much easier to verify than less concurrent ones.