An event e is logged if there exists some event e' with which it has minimal conflict.
Equations
- logged es e = ∃ (e' : es.Event), es.minimalConflict e e'
Instances For
If e is in the log of c, then e is in c.
If e is in the log of c, then e is logged.
The log is a subset of the configuration.
e is logged if it has minimal conflict with some event.
By symmetry of minimal conflict, if e is logged, then any e' with e ## e' also has minimal conflict with some event.
If e is in the log of c and e' has minimal conflict with e, then either e' is not in c, or there exists another e'' not in c with e ## e''.
A computation σ is compatible with a log l if:
- All events in l are in σ's target configuration
- Events in σ are consistent with events in l
- If an event in σ conflicts with any event, it must be in l
Equations
Instances For
Extract the first condition: all events in the log are in the computation.
Extract the second condition: events in the computation are consistent with the log.
Extract the third condition: conflicting events in the computation are in the log.
The type of all computations compatible with a given log.
Equations
- Log.CompatibleComputations es l = { σ : Computations es // Log.compatibleWithLog es σ l }
Instances For
Extract the underlying computation from a compatible computation.
Equations
- Log.CompatibleComputations.val es σ = ↑σ
Instances For
Extract the compatibility proof.
Equations
- ⋯ = ⋯
Instances For
A computation is compatible with the log of a configuration.
Equations
- Log.compatibleWithConfigLog es c σ = Log.compatibleWithLog es σ (log es c)
Instances For
The type of all computations compatible with the log of a configuration.
Equations
- Log.CompatibleWithConfigLog es c = Log.CompatibleComputations es (log es c)