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) (hPath : Path es c₂ c₃) : Path es c₁ c₃
Instances For
Composition of paths.
Equations
- Path.path_comp es Path.refl h₂₃_2 = h₂₃_2
- Path.path_comp es (Path.step hEdge hPath) h₂₃ = Path.step hEdge (Path.path_comp es hPath h₂₃)
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
- Path.trace es Path.refl = []
- Path.trace es (Path.step hEdge hPath') = hEdge.event :: Path.trace es hPath'
Instances For
Path equivalence is the kernel of the trace function.
Equations
- Path.pathSetoid es c₁ c₂ = Setoid.ker (Path.trace es)
Two paths are equivalent if their traces are trace equivalent
Equations
- Path.PathEquiv es p₁ p₂ = (Path.pathSetoid es c₁ c₂) p₁ p₂
Instances For
Path equivalence is reflexive.
Path equivalence is symmetric.
Path equivalence is transitive.
Asynchronous path: paths quotiented by path equivalence.
Equations
- Path.Async es c₁ c₂ = Quotient (Path.pathSetoid es c₁ c₂)
Instances For
Identity asynchronous path.
Equations
- Path.Async.async_path_id es c = Path.Async.mk es (Path.path_id es c)
Instances For
Composition of asynchronous paths.
Equations
- Path.Async.async_path_comp es p₁₂ p₂₃ = Quotient.lift₂ (fun (p₁₂ : Path es c₁ c₂) (p₂₃ : Path es c₂ c₃) => Path.Async.mk es (Path.path_comp es p₁₂ p₂₃)) ⋯ p₁₂ p₂₃
Instances For
Left identity law for asynchronous path composition.
Right identity law for asynchronous path composition.
Associativity law for asynchronous path composition.
The path category of an event structure.
Equations
- pathCategory es = { Hom := Path es, id := Path.path_id es, comp := fun {X Y Z : Conf es} => Path.path_comp es, id_comp := ⋯, comp_id := ⋯, assoc := ⋯ }
The asynchronous path category of an event structure.
Equations
- asyncPathCategory es = { Hom := Path.Async es, id := Path.Async.async_path_id es, comp := fun {X Y Z : Conf es} => Path.Async.async_path_comp es, id_comp := ⋯, comp_id := ⋯, assoc := ⋯ }