In computer science, the happened-before relation (denoted: ) is a means of ordering events based on the potential causal relationship of pairs of events in a concurrent system, especially asynchronous distributed systems. It was formulated by Leslie Lamport.[1]
The happened-before relation is formally defined as the least strict partial order on events such that:
If there are other causal relationships between events in a given system, such as between the creation of a process and its first event, these relationships are also added to the definition.
Like all strict partial orders, the happened-before relation is transitive, irreflexive and antisymmetric, i.e.:
The processes that make up a distributed system have no knowledge of the happened-before relation unless they use a logical clock, like a Lamport clock or a vector clock. This allows to design algorithms for mutual exclusion and tasks like debugging or optimising distributed systems.