The

**happened-before**relationship is important in figuring out partial ordering of events and in producing a logical clock for asynchronous distributed systems. It was formulated by Leslie Lamport.

In order to figure out the relative time between two events occurring in a distributed system without a global clock, we use the happened-before (->) relationship defined as follows:

- On the same process, a -> b if time of a < time of b (the time is given by the local clock).
- If a process sends a message to another process, then a -> b if a is the send and b is the receive.
- For three events a, b, c, if a -> b and b -> c, then a -> c.

In order to formulate total ordering of events, an algorithm such as vector ordering must be used.

The happened-before relationship is used in timestamping messages (*Lamport Timestamps*) and in building logical clocks (*Lamport Clocks*).