Label homomorphism map for LTS. #
def Cslib.LTS.mapHom {State : Type u_1} {Label₁ : Type u_2} {Label₂ : Type u_3} (lts : LTS State Label₁) (f : Language.Hom Label₂ Label₁) :
LTS State Label₂
Given a language homomorphism f from Label₂ to Label₁ and an LTS lts that
uses Label₁, lts.mapHom f is an LTS with the same state space but uses Label₂, whose
step on a single label μ is the composition of the steps taken by lts on the sequence of
labels f [μ]. Note that f [μ] can be empty or consists of many labels.
Instances For
@[simp]
theorem Cslib.LTS.mapHom_mTr {State : Type u_1} {Label₁ : Type u_2} {Label₂ : Type u_3} {s s' : State} {f : Language.Hom Label₂ Label₁} {lts : LTS State Label₁} {μs : List Label₂} :
This theorem says basically that lts.mapHom f is well-defined because f is
a language homomorphism.
def Cslib.LTS.mapLabel {State : Type u_1} {Label₁ : Type u_2} {Label₂ : Type u_3} (lts : LTS State Label₁) (f : Label₂ → Label₁) :
LTS State Label₂
This is the special case of LTS.mapHom when the language homomorphism maps
single labels to single labels.