  In the interleaving model of concurrency, where events are totally ordered,
linearizability is compositional: the composition of two linearizable objects
is guaranteed to be linearizable. However, linearizability is not compositional
when events are only partially ordered, as in many weak-memory models that
describe multicore memory systems. In this paper, we present causal
linearizability, a correctness condition for concurrent objects implemented in
weak-memory models. We abstract from the details of specific memory models by
defining our condition using Lamport's execution structures. We apply our
condition to the C11 memory model, providing a correctness condition for C11
objects. We develop a proof method for verifying objects implemented in C11 and
related models. Our method is an adaptation of simulation-based methods, but in
contrast to other such methods, it does not require that the implementation
totally order its events. We also show that causal linearizability reduces to
linearizability in the totally ordered case.
