Drop events on a time-space diagram and pass messages between processes. Each event gets a Lamport scalar and a vector clock. Compare any two events to see whether they're causally ordered (a → b) or concurrent (a ∥ b).
| # | Process | Kind | Lamport | Vector | Detail |
|---|
Lamport scalar clock — one integer per process.
Li ← Li + 1Li to the message.Lj ← max(Lj, t) + 1Vector clock — one integer per process in every timestamp.
Vi[i] += 1∀k: Vj[k] ← max(Vj[k], Vm[k]) then Vj[j] += 1a → b ⟺ Va[k] ≤ Vb[k] ∀k and Va ≠ Vb. Otherwise a ∥ b (concurrent).