An event structure with binary conflict.
- Event : Type u_1
- poEvent : PartialOrder self.Event
- conflict_irrefl : Irreflexive self.conflict
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.
theorem
EventStructure.minimalConflict_conflict
(es : EventStructure)
{e₁ e₂ : es.Event}
(h : es.minimalConflict e₁ e₂)
:
es.conflict e₁ e₂
If (e₁, e₂) is a minimal conflict, then e₁ and e₂ conflict.
theorem
EventStructure.minimalConflict_minimal
(es : EventStructure)
{e₁ e₂ e₁' e₂' : es.Event}
(h : es.minimalConflict e₁ e₂)
(he₁ : e₁' ≤ e₁)
(he₂ : e₂' ≤ e₂)
(hConf : es.conflict e₁' e₂')
:
If (e₁, e₂) is a minimal conflict and e₁' ≤ e₁, e₂' ≤ e₂ with e₁' ## e₂', then e₁' = e₁ and e₂' = e₂.