Pseudovarieties of finite semigroups #
A pseudovariety of finite semigroups ([Eil76]) is a class of finite semigroups closed
under subsemigroups, quotients, and finite direct products. It is the semigroup-side counterpart of
Monoid.Pseudovariety, and the two are not interchangeable: the classes D, K and LI below
are semigroup varieties that collapse over monoids, since applying their defining condition to the
idempotent 1 forces triviality.
The conditions are stated on idempotents, as Eilenberg states them: D is Se = e
([Eil76] VIII.4.1) and LI is eSe = e (VIII.5.1), with K the left-right dual of D.
Quotient closure is where the semigroup case departs from the monoid one — a preimage of an
idempotent need not be idempotent — and is discharged by
Semigroup.exists_isIdempotentElem_map_eq.
Main definitions #
Semigroup.Pseudovariety: a class of finite semigroups closed under subsemigroup, quotient, product.Semigroup.IsDefinite,IsReverseDefinite,IsLocallyTrivial: the defining conditions ofD,K,LI.Semigroup.definiteVariety,reverseDefiniteVariety,locallyTrivialVariety: the bundled pseudovarieties.
Implementation notes #
mem is a total predicate over Type u semigroups, mirroring Monoid.Pseudovariety; the
finiteness characteristic of a pseudovariety lives on the closure-field hypotheses. The variety
N of nilpotent semigroups is the intersection of D and K and is not bundled here.
A pseudovariety of finite semigroups: a class closed under subsemigroups, quotients, and
finite products. Closure is phrased via injective/surjective MulHoms (the divisor form).
The semigroups belonging to the pseudovariety.
- sub {S T : Type u} [Semigroup S] [Semigroup T] [Finite S] [Finite T] {f : S →ₙ* T} : Function.Injective ⇑f → self.mem T → self.mem S
Closed under subsemigroups: an injective homomorphism into a member has member domain.
- quot {S T : Type u} [Semigroup S] [Semigroup T] [Finite S] [Finite T] {f : S →ₙ* T} : Function.Surjective ⇑f → self.mem S → self.mem T
Closed under quotients: a surjective homomorphism from a member has member codomain.
- prod {S T : Type u} [Semigroup S] [Semigroup T] [Finite S] [Finite T] : self.mem S → self.mem T → self.mem (S × T)
Closed under binary products.
- memUnit : self.mem PUnit.{u + 1}
Contains the trivial semigroup (the empty product).
Instances For
Closed under isomorphism (a special case of quot).
The conditions defining D, K and LI #
A finite semigroup is definite when every idempotent absorbs on the left: Se = e
([Eil76] VIII.4.1).
Equations
- Semigroup.IsDefinite S = ∀ (e : S), IsIdempotentElem e → ∀ (s : S), s * e = e
Instances For
A finite semigroup is reverse definite when every idempotent absorbs on the right — the
left-right dual of IsDefinite.
Equations
- Semigroup.IsReverseDefinite S = ∀ (e : S), IsIdempotentElem e → ∀ (s : S), e * s = e
Instances For
A finite semigroup is locally trivial when every idempotent absorbs on both sides at once:
eSe = e ([Eil76] VIII.5.1). This is the condition behind the generalized definite
languages.
Equations
- Semigroup.IsLocallyTrivial S = ∀ (e : S), IsIdempotentElem e → ∀ (s : S), e * s * e = e
Instances For
Closure properties #
D collapses over monoids: a definite monoid is trivial, since the condition applied to
the idempotent 1 gives s = s * 1 = 1. This is why D, K and LI are semigroup varieties.
A definite semigroup is locally trivial: apply Se = e at the element e * s.
A reverse definite semigroup is locally trivial: apply eS = e twice.
The bundled pseudovarieties #
The pseudovariety D of definite semigroups.
Equations
- Semigroup.definiteVariety = { mem := fun (S : Type ?u.1) [Semigroup S] => Semigroup.IsDefinite S, sub := ⋯, quot := ⋯, prod := ⋯, memUnit := Semigroup.definiteVariety._proof_1 }
Instances For
The pseudovariety K of reverse definite semigroups.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The pseudovariety LI of locally trivial semigroups.
Equations
- One or more equations did not get rendered due to their size.