Paths in the configuration graph #
This module defines edges and paths in the configuration graph of an event structure, their composition, traces and lengths, the minimal path length, the quotient of paths by trace equivalence (asynchronous paths), and the resulting (synchronous and asynchronous) path categories.
An edge in the configuration graph of an event structure: from configuration c₁ to configuration c₂ by adding a fresh enabled event.
- event : es.Event
The event added along this edge.
- conf₁_enables : Configuration.enables es (↑c₁) self.event
The source configuration enables the added event.
The target configuration is the source configuration extended by the event.
Instances For
A path in the configuration graph of an event structure.
- refl {es : EventStructure} {c : Conf es} : Path es c c
- step {es : EventStructure} {c₁ c₂ c₃ : Conf es} (hEdge : Edge es c₁ c₂) (hPath : Path es c₂ c₃) : Path es c₁ c₃
Instances For
Identity path.
Equations
Instances For
Composition of paths.
Equations
- EventStructures.Path.pathComp es EventStructures.Path.refl h₂₃_2 = h₂₃_2
- EventStructures.Path.pathComp es (EventStructures.Path.step hEdge hPath) h₂₃ = EventStructures.Path.step hEdge (EventStructures.Path.pathComp es hPath h₂₃)
Instances For
Next configuration after executing an enabled event.
Instances For
Execute a list of events from a configuration.
- nil {es : EventStructure} (c : Conf es) : ExecList es c [] c
- cons {es : EventStructure} {c c' : Conf es} {t : List es.Event} (e : es.Event) (h : Configuration.enables es (↑c) e) (hnext : ExecList es (nextConf es c e h) t c') : ExecList es c (e :: t) c'
Instances For
Left identity law: composing with the identity path on the right.
Right identity law: composing with the identity path on the left.
Trace of the path
Equations
- EventStructures.Path.trace es EventStructures.Path.refl = []
- EventStructures.Path.trace es (EventStructures.Path.step hEdge hPath') = hEdge.event :: EventStructures.Path.trace es hPath'
Instances For
Length of a path, defined as the length of its trace.
Equations
- EventStructures.Path.length es hPath = (EventStructures.Path.trace es hPath).length
Instances For
Build a path from an executable list.
Equations
- One or more equations did not get rendered due to their size.
- EventStructures.Path.execListToPath es (EventStructures.Path.ExecList.nil c₂) = EventStructures.Path.refl
Instances For
Events executed in an exec list are not already in its source configuration.
Lift an exec list from a smaller configuration to a larger one, assuming the executed events are fresh for the larger configuration and enabling is monotone under subset for fresh events.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Existence of a path length.
Minimal path length between two configurations, given existence of a path.
Equations
Instances For
The trace of an execListToPath is exactly the original list.
Extract an executable list from a path.
Equations
Instances For
Two paths are equivalent if their traces are trace equivalent: one trace can be obtained from the other by swapping adjacent concurrent events.
Equations
- EventStructures.Path.PathEquiv es p₁ p₂ = EventStructures.TraceEquiv es (EventStructures.Path.trace es p₁) (EventStructures.Path.trace es p₂)
Instances For
Path equivalence is reflexive.
Path equivalence is symmetric.
Path equivalence is transitive.
Path equivalence is an equivalence relation.
Paths between two configurations form a setoid under trace equivalence of their traces (the congruence generated by swaps of adjacent concurrent events), not under literal equality of traces.
Equations
- EventStructures.Path.pathSetoid es c₁ c₂ = { r := EventStructures.Path.PathEquiv es, iseqv := ⋯ }
Asynchronous path: paths quotiented by path equivalence.
Equations
- EventStructures.Path.Async es c₁ c₂ = Quotient (EventStructures.Path.pathSetoid es c₁ c₂)
Instances For
Lift a path to an asynchronous path.
Equations
- EventStructures.Path.Async.mk es p = ⟦p⟧
Instances For
Identity asynchronous path.
Equations
Instances For
Composition of asynchronous paths.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Left identity law for asynchronous path composition.
Right identity law for asynchronous path composition.
Associativity law for asynchronous path composition.
The length of a path's trace equals the length of the path.
Paths are monotone: the source configuration is a subset of the target.
Events executed in a path must be added to reach the target configuration.
Events in the trace of a path are not in the source configuration: each edge adds a fresh event.
Every event in the trace of a path appears exactly once: enabling requires freshness, so no event can be executed twice along a path.
A path requires executing at least the events in its trace.
The path category of an event structure.
Equations
- One or more equations did not get rendered due to their size.
The asynchronous path category of an event structure.
Equations
- One or more equations did not get rendered due to their size.