Linearizability: a correctness condition for concurrent objects
An axiomatic basis for computer programming