Transition monoids and regularity
DefinitionAccepting transformations of a DFA#✓fully proved
For a DFA \(M\) with set of states \(Q\), start state \(q_0\) and accepting states \(F\), the accepting transformations of \(M\) are the state transformations \(f\) of \(Q\) with \(f(q_0) \in F\).
def transitionAccept (M : DFA Symbol State) : Set (StateTransformation State) :=
{f | f M.start ∈ M.accept}
abbrev StateTransformation (State : Type v) := (Function.End State)ᵐᵒᵖ
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:199
Uses 1 · Used by 4
TheoremThe transition morphism recognizes through accepting transformations#✓fully proved
Let \(M\) be a DFA with start state \(q_0\) and accepting states \(F\). The transition morphism of \(M\), from words to state transformations, recognizes the language accepted by \(M\) through the accepting transformations of \(M\): a word is accepted by \(M\) exactly when the transformation it induces sends \(q_0\) into \(F\).
theorem recognizes_transitionAccept (M : DFA Symbol State) :
Recognizes M.accepts (transitionMorphism M) (transitionAccept M)
def Recognizes [Monoid Carrier] (L : Language Symbol) (morphism : FreeMonoid Symbol →* Carrier)
(accept : Set Carrier) : Prop :=
∀ x, FreeMonoid.toList x ∈ L ↔ morphism x ∈ accept
CSLibExt/Computability/Languages/Congruences/Recognition.lean:40
def transitionMorphism (M : DFA Symbol State) :
FreeMonoid Symbol →* StateTransformation State where
toFun := transitionTransformation M
map_one' := transitionTransformation_one M
map_mul' := transitionTransformation_mul M
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:250
def transitionAccept (M : DFA Symbol State) : Set (StateTransformation State) :=
{f | f M.start ∈ M.accept}
CSLibExt/Computability/Languages/Congruences/Regularity.lean:41
Uses 5 · Used by 3
TheoremThe transition monoid recognizes the accepted language#✓fully proved
Let \(M\) be a DFA with start state \(q_0\) and accepting states \(F\). The map sending each word to the element of the transition monoid of \(M\) that it induces recognizes the language accepted by \(M\), with accepting set the elements \(f\) of the transition monoid such that \(f(q_0) \in F\): a word is accepted by \(M\) exactly when the transformation it induces sends \(q_0\) into \(F\).
theorem recognizes_toTransitionMonoid (M : DFA Symbol State) :
Recognizes M.accepts (MonoidHom.mrangeRestrict (transitionMorphism M))
{f : TransitionMonoid M | f.val ∈ transitionAccept M}
def Recognizes [Monoid Carrier] (L : Language Symbol) (morphism : FreeMonoid Symbol →* Carrier)
(accept : Set Carrier) : Prop :=
∀ x, FreeMonoid.toList x ∈ L ↔ morphism x ∈ accept
CSLibExt/Computability/Languages/Congruences/Recognition.lean:40
def transitionMorphism (M : DFA Symbol State) :
FreeMonoid Symbol →* StateTransformation State where
toFun := transitionTransformation M
map_one' := transitionTransformation_one M
map_mul' := transitionTransformation_mul M
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:250
def TransitionMonoid (M : DFA Symbol State) := MonoidHom.mrange (transitionMorphism M)
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:262
def transitionAccept (M : DFA Symbol State) : Set (StateTransformation State) :=
{f | f M.start ∈ M.accept}
CSLibExt/Computability/Languages/Congruences/Regularity.lean:41
TheoremFinitely many state transformations#✓fully proved
If \(Q\) is a finite set, then the monoid of state transformations of \(Q\), consisting of all functions \(Q \to Q\) multiplied in diagrammatic order, is finite.
theorem finite_stateTransformation [Finite State] : Finite (StateTransformation State)
abbrev StateTransformation (State : Type v) := (Function.End State)ᵐᵒᵖ
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:199
Uses 2 · Used by 1
TheoremTransition monoids of finite automata are finite#✓fully proved
For every DFA \(M\) with a finite set of states, the transition monoid of \(M\) is finite.
theorem finite_transitionMonoid (M : DFA Symbol State) [Finite State] :
Finite (TransitionMonoid M)
def TransitionMonoid (M : DFA Symbol State) := MonoidHom.mrange (transitionMorphism M)
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:262
Uses 3
TheoremRegular languages have finite syntactic monoids#✓fully proved
If \(L\) is a regular language, then the syntactic monoid of \(L\) is finite.
theorem finite_syntacticMonoid_of_isRegular {L : Language Symbol} (hL : L.IsRegular) :
Finite (SyntacticMonoid L)
abbrev SyntacticMonoid (L : Language Symbol) := (syntacticCon L).Quotient
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:96
Uses 6 · Used by 1
TheoremRegular languages are those with finite syntactic monoid#✓fully proved
A language \(L\) is regular if and only if the syntactic monoid of \(L\) is finite.
theorem isRegular_iff_finite_syntacticMonoid (L : Language Symbol) :
L.IsRegular ↔ Finite (SyntacticMonoid L)
abbrev SyntacticMonoid (L : Language Symbol) := (syntacticCon L).Quotient
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:96
Uses 3 · Used by 5
DefinitionThe transition monoid maps to the syntactic monoid#✓fully proved
For a DFA \(M\) accepting the language \(L\), this is the monoid homomorphism from the transition monoid of \(M\) to the syntactic monoid of \(L\) that sends the transformation induced by each word \(w\) to the syntactic class of \(w\).
noncomputable def transitionMonoidToSyntactic (M : DFA Symbol State) :
TransitionMonoid M →* SyntacticMonoid M.accepts :=
recognizerImageToSyntactic (transitionMorphism M) (transitionAccept M)
(recognizes_transitionAccept M)
def TransitionMonoid (M : DFA Symbol State) := MonoidHom.mrange (transitionMorphism M)
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:262
abbrev SyntacticMonoid (L : Language Symbol) := (syntacticCon L).Quotient
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:96
noncomputable def recognizerImageToSyntactic [Monoid Carrier] {L : Language Symbol}
(morphism : FreeMonoid Symbol →* Carrier) (accept : Set Carrier)
(hrec : Recognizes L morphism accept) :
MonoidHom.mrange morphism →* SyntacticMonoid L :=
(recognizerQuotientToSyntactic morphism accept hrec).comp
(Con.quotientKerEquivRange morphism).symm.toMonoidHom
CSLibExt/Computability/Languages/Congruences/Recognition.lean:112
def transitionMorphism (M : DFA Symbol State) :
FreeMonoid Symbol →* StateTransformation State where
toFun := transitionTransformation M
map_one' := transitionTransformation_one M
map_mul' := transitionTransformation_mul M
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:250
def transitionAccept (M : DFA Symbol State) : Set (StateTransformation State) :=
{f | f M.start ∈ M.accept}
CSLibExt/Computability/Languages/Congruences/Regularity.lean:41
theorem recognizes_transitionAccept (M : DFA Symbol State) :
Recognizes M.accepts (transitionMorphism M) (transitionAccept M)
CSLibExt/Computability/Languages/Congruences/Regularity.lean:50
Uses 8 · Used by 1
TheoremThe syntactic monoid is no larger than the transition monoid#✓fully proved
Let \(M\) be a DFA accepting the language \(L\), and suppose that the transition monoid of \(M\) and the syntactic monoid of \(L\) are both finite. Then the syntactic monoid of \(L\) has at most as many elements as the transition monoid of \(M\).
theorem card_syntacticMonoid_le_card_transitionMonoid (M : DFA Symbol State)
[Fintype (TransitionMonoid M)] [Fintype (SyntacticMonoid M.accepts)] :
Fintype.card (SyntacticMonoid M.accepts) ≤ Fintype.card (TransitionMonoid M)
def TransitionMonoid (M : DFA Symbol State) := MonoidHom.mrange (transitionMorphism M)
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:262
abbrev SyntacticMonoid (L : Language Symbol) := (syntacticCon L).Quotient
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:96
Uses 9 · Used by 1
TheoremEndofunction bound for the syntactic monoid#✓fully proved
Let \(M\) be a DFA with a finite set of states \(Q\), and suppose the syntactic monoid of the language accepted by \(M\) is finite. Then that syntactic monoid has at most \(|Q|^{|Q|}\) elements.
theorem card_syntacticMonoid_le_card_endofunction (M : DFA Symbol State)
[Fintype State] [Fintype (SyntacticMonoid M.accepts)] :
Fintype.card (SyntacticMonoid M.accepts) ≤ Fintype.card State ^ Fintype.card State
abbrev SyntacticMonoid (L : Language Symbol) := (syntacticCon L).Quotient
CSLibExt/Computability/Languages/Congruences/Syntactic.lean:96
Uses 5
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.