A computation to a configuration c is an asynchronous path
starting at the empty configuration and ending at c.
Equivalently, a computation records a causal execution up to
trace equivalence of the underlying path.
Equations
- Computation es c = Path.Async es (emptyConf es) c
Instances For
The type of all computations, paired with their target configuration.
Equations
- Computations es = ((c : Conf es) × Computation es c)
Instances For
A list of events t is a linearisation of configuration c
if it is trace-equivalent to the trace of some path from the
empty configuration to c. Equivalently, t enumerates
the events of c in some order compatible with causality.
Equations
- isLinearisation es c t = ∃ (p : Path es (emptyConf es) c), TraceEquiv es (Path.trace es p) t
Instances For
Every computation determines a linearisation of its target configuration.
Configurations that are reachable by a computation.
Equations
- ReachableConf es = { c : Conf es // Nonempty (Computation es c) }
Instances For
Every computation targets a reachable configuration.
Equations
- computation_to_reachable es p = ⟨p.fst, ⋯⟩
Instances For
The map from computations to reachable configurations is surjective.