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.
- left {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} : E.Event → Tag E F
- right {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} : F.Event → Tag E F
- sync {Name : Type u_1} {E : SES (Action Name)} {F : SES (Action Name)} (e : E.Event) (f : F.Event) (h : ∃ (a : Label Name), E.label e = Action.vis a ∧ F.label f = Action.vis a.co) : Tag E F
Instances For
Synchronisations are silent.
Equations
- (CCS.Tag.left e).label = E.label e
- (CCS.Tag.right a).label = F.label a
- (CCS.Tag.sync e f h).label = CCS.Action.tau
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
- CCS.ParCon X = ((∀ t₁ ∈ X, ∀ t₂ ∈ X, CCS.ParCon₂ t₁ t₂) ∧ E.Consistent (CCS.projL ↑X) ∧ F.Consistent (CCS.projR ↑X))
Instances For
@[reducible]
Parallel composition, as a stable event structure.
Equations
- CCS.parSES E F = { Event := CCS.Tag E F, Con := CCS.ParCon, enable := CCS.ParEnable, label := CCS.Tag.label, con_empty := ⋯, con_subset := ⋯, enable_mono := ⋯, enable_inter := ⋯ }
Instances For
Projections and steps #
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 x → E.isConf (projL c ∪ {x}) ∧ x ∉ projL c)
(hR : ∀ (y : F.Event), t.evR = some y → F.isConf (projR c ∪ {y}) ∧ y ∉ projR c)
:
A fresh tag whose components are enabled extends a configuration.