A computation is a minimal replay of a log if it's compatible (σ ⊨ l) and its configuration is a subset of all other compatible computations.
Equations
- Replay.isMinReplay es l σ = (Log.compatibleWithLog es σ l ∧ ∀ (σ' : Computations es), Log.compatibleWithLog es σ' l → ↑(Replay.conf es σ) ⊆ ↑(Replay.conf es σ'))
Instances For
A computation is a maximal replay of a log if it's compatible (σ ⊨ l) and all other compatible computations' configurations are subsets of it.
Equations
- Replay.isMaxReplay es l σ = (Log.compatibleWithLog es σ l ∧ ∀ (σ' : Computations es), Log.compatibleWithLog es σ' l → ↑(Replay.conf es σ') ⊆ ↑(Replay.conf es σ))
Instances For
The downset (or principal ideal) of an event e: all predecessors including e.
Instances For
The minimum replay set of a log l: union of all downsets of events in l.
Equations
- Replay.minReplaySet es l = ⋃ e ∈ l, Replay.downset es e
Instances For
The maximum replay set of a log l: the minimum replay set plus all events that are causally forced if any of their minimal conflicts (e₁ ## e₂) are in the log.
Equations
- Replay.maxReplaySet es l = Replay.minReplaySet es l ∪ {e : es.Event | ∀ (e₁ e₂ : es.Event), es.minimalConflict e₁ e₂ ∧ e₁ ≤ e → e₁ ∈ l}
Instances For
The downset is closed under taking predecessors.
The minimum replay set contains the log.
The minimum replay set is closed under predecessors.
The maximum replay set contains the minimum replay set.
If e is in l and x ≤ e, and l is conflict-free, then x is compatible with all events in l.
The minimum replay set is compatible with the log.
The minimum replay set is the smallest configuration compatible with a log. Any computation with configuration equal to minReplaySet is a minimal replay.
The maximum replay set is the largest configuration compatible with a log. Any computation with configuration equal to maxReplaySet is a maximal replay.
Any two minimal replays of a log have equal configurations. Since both are minimal, each configuration is a subset of the other by definition.
Any two maximal replays of a log have equal configurations. Since both are maximal, each configuration is a superset of the other by definition.
The minimum replay always exists when there exists a computation reaching the minimum replay set that is compatible with the log. The minimality follows directly from minReplaySet_is_minimal_replay.
The maximum replay always exists when there exists a computation reaching the maximum replay set that is compatible with the log. The maximality follows directly from maxReplaySet_is_maximal_replay.
All minimal replays of a log are trace-equivalent. They have the same configuration, so they represent the same point in the quotient of paths by trace equivalence.
All maximal replays of a log are trace-equivalent. They have the same configuration, so they represent the same point in the quotient of paths by trace equivalence.