Documentation

EventStructures.CCS.Par

Parallel composition #

Events are tags: an event of the left component, one of the right, or a label-matched synchronisation. A set of tags is consistent when each component event is consumed once and each projection is consistent in its component, and it enables a tag when each event the tag consumes is enabled in its component.

inductive CCS.Tag {Name : Type u_1} (E : SES (Action Name)) (F : SES (Action Name)) :
Type (max u_2 u_3)

A product event: an E-event, an F-event, or a label-matched synchronisation.

Instances For
    def CCS.Tag.evL {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} :
    Tag E FOption E.Event

    The E-event a tag consumes.

    Equations
    Instances For
      def CCS.Tag.evR {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} :
      Tag E FOption F.Event

      The F-event a tag consumes.

      Equations
      Instances For
        def CCS.Tag.label {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} :
        Tag E FAction Name

        Synchronisations are silent.

        Equations
        Instances For
          def CCS.projL {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (C : Set (Tag E F)) :

          E-events consumed by a set of tags.

          Equations
          Instances For
            def CCS.projR {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (C : Set (Tag E F)) :

            F-events consumed by a set of tags.

            Equations
            Instances For
              theorem CCS.projL_mono {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {C D : Set (Tag E F)} (h : CD) :
              projL CprojL D
              theorem CCS.projR_mono {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {C D : Set (Tag E F)} (h : CD) :
              projR CprojR D
              theorem CCS.projL_union {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (C D : Set (Tag E F)) :
              projL (C D) = projL C projL D
              theorem CCS.projR_union {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (C D : Set (Tag E F)) :
              projR (C D) = projR C projR D
              theorem CCS.projL_empty {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} :
              theorem CCS.projR_empty {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} :
              theorem CCS.projL_singleton {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (t : Tag E F) :
              projL {t} = {e : E.Event | t.evL = some e}
              theorem CCS.projR_singleton {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (t : Tag E F) :
              projR {t} = {f : F.Event | t.evR = some f}
              theorem CCS.projL_finite {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {C : Set (Tag E F)} (h : C.Finite) :
              theorem CCS.projR_finite {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {C : Set (Tag E F)} (h : C.Finite) :
              def CCS.ParCon₂ {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (t₁ t₂ : Tag E F) :

              Consistency of a pair of tags: no component event consumed twice.

              Equations
              Instances For
                def CCS.ParCon {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (X : Finset (Tag E F)) :

                Each component event consumed once, and consistent projections.

                Equations
                Instances For
                  def CCS.ParEnable {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (X : Finset (Tag E F)) (t : Tag E F) :

                  Enabling: each consumed event is enabled in its component.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem CCS.exists_cover_L {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {s : Set (Tag E F)} (V : Finset E.Event) (hV : VprojL s) :
                    ∃ (W : Finset (Tag E F)), Ws VprojL W

                    A finite set of events covered by a set of tags is covered by finitely many.

                    theorem CCS.exists_cover_R {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {s : Set (Tag E F)} (V : Finset F.Event) (hV : VprojR s) :
                    ∃ (W : Finset (Tag E F)), Ws VprojR W
                    theorem CCS.con_projL {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {s : Set (Tag E F)} (h : ∀ (W : Finset (Tag E F)), WsParCon W) :

                    Consistency of a set of tags gives consistency of its left projection.

                    theorem CCS.con_projR {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {s : Set (Tag E F)} (h : ∀ (W : Finset (Tag E F)), WsParCon W) :
                    theorem CCS.parCon_subset {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {X Y : Finset (Tag E F)} (h : ParCon Y) (hsub : XY) :
                    @[reducible]
                    def CCS.parSES {Name : Type u_1} (E : SES (Action Name)) (F : SES (Action Name)) :
                    SES (Action Name)

                    Parallel composition, as a stable event structure.

                    Equations
                    Instances For

                      Projections and steps #

                      theorem CCS.projL_eq_pmap {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (c : Set (Tag E F)) :
                      theorem CCS.projR_eq_pmap {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (c : Set (Tag E F)) :
                      theorem CCS.projL_isConf {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} (hc : (parSES E F).isConf c) :

                      The left projection of a configuration is a configuration.

                      theorem CCS.projR_isConf {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} (hc : (parSES E F).isConf c) :
                      theorem CCS.projL_insert {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} {x : E.Event} (hx : t.evL = some x) :
                      projL (c {t}) = projL c {x}
                      theorem CCS.projL_insert_none {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} (hx : t.evL = none) :
                      projL (c {t}) = projL c
                      theorem CCS.projR_insert {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} {y : F.Event} (hy : t.evR = some y) :
                      projR (c {t}) = projR c {y}
                      theorem CCS.projR_insert_none {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} (hy : t.evR = none) :
                      projR (c {t}) = projR c
                      theorem CCS.enables_projL {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} {x : E.Event} (hins : (parSES E F).isConf (c {t})) (hfr : tc) (hx : t.evL = some x) :
                      E.isConf (projL c {x}) xprojL c

                      Firing a tag fires an enabled, fresh event of each component it consumes.

                      theorem CCS.enables_projR {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} {y : F.Event} (hins : (parSES E F).isConf (c {t})) (hfr : tc) (hy : t.evR = some y) :
                      F.isConf (projR c {y}) yprojR c
                      theorem CCS.isConf_insert_tag {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} {c : Set (Tag E F)} {t : Tag E F} (hc : (parSES E F).isConf c) (hL : ∀ (x : E.Event), t.evL = some xE.isConf (projL c {x}) xprojL c) (hR : ∀ (y : F.Event), t.evR = some yF.isConf (projR c {y}) yprojR c) :
                      (parSES E F).isConf (c {t})

                      A fresh tag whose components are enabled extends a configuration.