Union of LTSs #
Note: there is a nontrivial balance between ergonomics and generality here. These definitions might change in the future.
def Cslib.LTS.unionSubtype {State : Type u} {Label : Type v} {S1 : State → Prop} {L1 : Label → Prop} {S2 : State → Prop} {L2 : Label → Prop} (lts1 : LTS (Subtype S1) (Subtype L1)) (lts2 : LTS (Subtype S2) (Subtype L2)) :
LTS State Label
The union of two LTSs that have common supertypes for states and labels.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lifting of an LTS State Label to LTS (State ⊕ State') Label.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lifting of an LTS State Label to LTS (State' ⊕ State) Label.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def Cslib.LTS.unionSum {Label : Type v} {State1 : Type u_1} {State2 : Type u_2} (lts1 : LTS State1 Label) (lts2 : LTS State2 Label) :
Union of two LTSs with the same Label type. The result combines the original respective
state types State1 and State2 into (State1 ⊕ State2).
Equations
- lts1.unionSum lts2 = lts1.inl.unionSubtype lts2.inr
Instances For
theorem Cslib.LTS.unionSum_mTr_inl {Label : Type v} {State1 : Type u_1} {State2 : Type u_2} {lts1 : LTS State1 Label} {lts2 : LTS State2 Label} {s : State1} {μs : List Label} {y : State1 ⊕ State2} (h : (lts1.unionSum lts2).MTr (Sum.inl s) μs y) :
A run of unionSum lts1 lts2 from a state of lts1 stays among the states of lts1, where it
is a run of lts1.
theorem Cslib.LTS.unionSum_mTr_inr {Label : Type v} {State1 : Type u_1} {State2 : Type u_2} {lts1 : LTS State1 Label} {lts2 : LTS State2 Label} {s : State2} {μs : List Label} {y : State1 ⊕ State2} (h : (lts1.unionSum lts2).MTr (Sum.inr s) μs y) :
A run of unionSum lts1 lts2 from a state of lts2 stays among the states of lts2, where it
is a run of lts2.