Documentation

LeanPool.EventStructures.Basic

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.

Instances For

    Consistency relation: two events are consistent if they are not in conflict.

    Equations
    Instances For

      Consistency is reflexive.

      theorem EventStructures.EventStructure.consistent_symm (es : EventStructure) e₁ e₂ : es.Event :
      es.consistent e₁ e₂es.consistent e₂ e₁

      Consistency is symmetric.

      Concurrency relation: two events are concurrent if they are consistent and causally independent.

      Equations
      Instances For

        Concurrency is irreflexive.

        theorem EventStructures.EventStructure.concurrent_symm (es : EventStructure) e₁ e₂ : es.Event :
        es.concurrent e₁ e₂es.concurrent e₂ e₁

        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
          theorem EventStructures.EventStructure.minimalConflict_symm (es : EventStructure) e₁ e₂ : es.Event :
          es.minimalConflict e₁ e₂es.minimalConflict e₂ e₁

          Minimal conflict is symmetric.

          theorem EventStructures.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 EventStructures.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₂') :
          e₁' = e₁ e₂' = e₂

          If (e₁, e₂) is a minimal conflict and e₁' ≤ e₁, e₂' ≤ e₂ with e₁' ## e₂', then e₁' = e₁ and e₂' = e₂.

          The strict past of an event: all events strictly preceding it.

          Equations
          Instances For

            The future (upset) of an event: all events causally succeeding it.

            Equations
            Instances For

              Decidability data for an event structure: decidable equality on events and decidable strict order. Together these yield decidable causality.

              Instances
                @[implicit_reducible]
                Equations