The transition monoid of a DFA #
Each word induces a transformation of the states of a DFA, and reading one word after another composes these transformations. The monoid they generate is the transition monoid, the basic algebraic invariant of an automaton [Pin].
Main definitions #
DFA.transitionHom: the monoid homomorphism sending a word to the transformation it inducesDFA.transitionMonoid: the transition monoid, the range ofDFA.transitionHomDFA.transitionMonoidEquiv: the transition monoid as a quotient ofFreeMonoid α
Implementation notes #
A word w acts on a state s by s ↦ M.evalFrom s w, and evalFrom_of_append makes this a
right action, written q · u in the literature. Since Function.End composes on the left, that
is an anti-homomorphism, so the target of DFA.transitionHom is the opposite monoid
(Function.End σ)ᵐᵒᵖ.
[Pin] takes automata to be partial, so its transition monoid sits in the monoid of partial
transformations. DFA has a total step, so the transformations here are total and the target is
Function.End σ.
M.transitionHom w is the transformation of states induced by the word w.
Equations
- M.transitionHom = { toFun := fun (w : FreeMonoid α) => MulOpposite.op fun (s : σ) => M.evalFrom s (FreeMonoid.toList w), map_one' := ⋯, map_mul' := ⋯ }
Instances For
M.transitionMonoid is the monoid of transformations of the states of M induced by words.
Equations
- M.transitionMonoid = MonoidHom.mrange M.transitionHom
Instances For
M.transitionMonoidEquiv presents the transition monoid as a quotient of FreeMonoid α, by
the first isomorphism theorem.
Equations
- M.transitionMonoidEquiv = Con.quotientKerEquivRange M.transitionHom