Eilenberg's variety theorem #
This file proves Eilenberg's variety theorem: pseudovarieties of finite monoids correspond
bijectively, and order-preservingly, to varieties of languages. A variety of languages assigns to
each alphabet a Boolean algebra of regular languages, and these Boolean algebras are closed under
quotients by words and under inverse images of monoid homomorphisms between free monoids. A
pseudovariety V corresponds to the variety of languages whose syntactic monoid lies in V, and a
variety of languages to the pseudovariety generated by the syntactic monoids of its members.
Main definitions #
Monoid.LanguageVariety: a variety of languages.Monoid.Pseudovariety.toLanguageVariety: the languages whose syntactic monoid lies inV.Monoid.LanguageVariety.toPseudovariety: the pseudovariety generated by the syntactic monoids of the members.
Main results #
Monoid.LanguageVariety.gc_toPseudovariety_toLanguageVariety: the two maps form a Galois connection.Monoid.LanguageVariety.setOf_syntacticClass_eq_mem: every fibre of the syntactic morphism of a member is a member.Monoid.Pseudovariety.toLanguageVariety_toPseudovariety,Monoid.LanguageVariety.toPseudovariety_toLanguageVariety: the two round trips are identities.Monoid.eilenbergOrderIso: the variety theorem as an order isomorphism.
Implementation notes #
These are Eilenberg's *-varieties, whose languages are subsets of the free monoid; the
+-varieties of the free semigroup are their counterpart for pseudovarieties of semigroups. The
proof follows Chapter XIII of [Pin]. For the hard direction, the finite monoids all of whose
recognized languages lie in a variety of languages form a pseudovariety containing the syntactic
monoids of the members, so the generated pseudovariety recognizes only members. Alphabets range
over all of Type u, not only finite types.
References #
A variety of languages assigns to each alphabet a Boolean algebra of regular languages, closed under inverse images of homomorphisms between free monoids and under left and right quotients by words.
- lang (α : Type u) : BooleanSubalgebra (Language α)
The languages of the variety over each alphabet.
Every member is regular.
- comap_mem {α β : Type u} {L : Language β} (φ : FreeMonoid α →* FreeMonoid β) : L ∈ self.lang β → {w : List α | φ (FreeMonoid.ofList w) ∈ L} ∈ self.lang α
The inverse image of a member under a homomorphism of free monoids is a member.
- leftQuotient_mem {α : Type u} {L : Language α} (u : List α) : L ∈ self.lang α → L.leftQuotient u ∈ self.lang α
The left quotient of a member by a word is a member.
- rightQuotient_mem {α : Type u} {L : Language α} (u : List α) : L ∈ self.lang α → L.rightQuotient u ∈ self.lang α
The right quotient of a member by a word is a member.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Monoid.LanguageVariety.instPartialOrder = PartialOrder.lift DFunLike.coe Monoid.LanguageVariety.instPartialOrder._proof_1
The variety of languages whose syntactic monoid lies in V.
Equations
- V.toLanguageVariety = { lang := V.toBooleanSubalgebra, isRegular := ⋯, comap_mem := ⋯, leftQuotient_mem := ⋯, rightQuotient_mem := ⋯ }
Instances For
The pseudovariety generated by the syntactic monoids of the members of 𝒱.
Equations
- 𝒱.toPseudovariety = Monoid.Pseudovariety.generated fun (M : Type ?u.1) (x : Monoid M) => ∃ (α : Type ?u.1), ∃ L ∈ 𝒱 α, Nonempty (M ≃* L.SyntacticMonoid)
Instances For
Every fibre of the syntactic morphism of a member is a member, since it is a finite Boolean combination of two-sided quotients of the member.
A variety of languages is recovered from the pseudovariety it generates.
A member of V embeds in the finite product of the syntactic monoids of its fibre languages,
so V is recovered from its variety of languages.
Eilenberg's variety theorem puts pseudovarieties of finite monoids and varieties of languages in order-preserving bijection.
Equations
- One or more equations did not get rendered due to their size.