Vector clock: each process tracks [a,b,c]. On send: increment own, attach VC. On receive: merge (max), increment own. a→b iff VC(a)≤VC(b).