Event structures #
This module defines EventStructure: a set of events equipped with a causal
partial order and an irreflexive, symmetric binary conflict relation, together
with the derived consistency, concurrency, minimal-conflict and past/future
notions used throughout the development, and decidability data for events.
An event structure with binary conflict.
- Event : Type u_1
The type of events.
- poEvent : PartialOrder self.Event
The causal partial order on events.
The binary conflict relation on events.
Instances For
Equations
- es.instPartialOrderEvent = es.poEvent
Consistency relation: two events are consistent if they are not in conflict.
Equations
- es.consistent e₁ e₂ = ¬es.conflict e₁ e₂
Instances For
Consistency is reflexive.
Consistency is symmetric.
Concurrency relation: two events are concurrent if they are consistent and causally independent.
Equations
- es.concurrent e₁ e₂ = (es.consistent e₁ e₂ ∧ ¬e₁ ≤ e₂ ∧ ¬e₂ ≤ e₁)
Instances For
Concurrency is irreflexive.
Concurrency is symmetric.
Minimal conflict relation: (e₁, e₂) is a minimal conflicting pair if they conflict and there is no proper reduction of either that still produces a conflict. Formally: e₁ # e₂ and for all e₁' ≤ e₁, e₂' ≤ e₂, if e₁' # e₂' then e₁' = e₁ ∧ e₂' = e₂
Equations
Instances For
Minimal conflict is symmetric.
If (e₁, e₂) is a minimal conflict, then e₁ and e₂ conflict.
If (e₁, e₂) is a minimal conflict and e₁' ≤ e₁, e₂' ≤ e₂ with e₁' ## e₂', then e₁' = e₁ and e₂' = e₂.
Decidability data for an event structure: decidable equality on events and decidable strict order. Together these yield decidable causality.
- decEq : DecidableEq es.Event
- decLt : DecidableRel fun (x1 x2 : es.Event) => x1 < x2