Logs and compatibility #
This module defines logged events and the log of a configuration (events that have a minimal conflict with some event outside the configuration), and the notion of a computation being compatible with a log.
An event e is logged if there exists some event e' with which it has minimal conflict.
Equations
- EventStructures.logged es e = ∃ (e' : es.Event), es.minimalConflict e e'
Instances For
The log of a configuration c is the set of events in c that are logged and have a minimal conflict with some event outside c.
Equations
- EventStructures.log es c = {e : es.Event | e ∈ ↑c ∧ ∃ e' ∉ ↑c, 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
Instances For
Extract the underlying computation from a compatible computation.
Equations
Instances For
Extract the compatibility proof.
A computation is compatible with the log of a configuration.
Equations
Instances For
The type of all computations compatible with the log of a configuration.