Equational characterizations of the definite subregular classes #
[Lam26] characterizes base classes of subregular languages by equations on
the syntactic semigroup. This file gives the finite-k forms for the definite
(𝒟), reverse-definite (𝒦), and generalized definite (ℒℐ) classes; the
classical ω-power forms in Pin.lean are derived from them.
Main definitions #
Language.kDefiniteEquation,Language.kReverseDefiniteEquation,Language.kGeneralizedDefiniteEquation— for every syntactic-monoid elementsand length-kwordαs, prepending, appending, resp. sandwichingsaround the class ofαsfixes it (s * [αs] = [αs],[αs] * s = [αs],[αs] * s * [αs] = [αs]), where[αs]isL.syntacticClass αs.
Main results #
Language.isDefinite_iff_satisfies_kDefiniteEquation,Language.isReverseDefinite_iff_satisfies_kReverseDefiniteEquation,Language.isGeneralizedDefinite_iff_satisfies_kGeneralizedDefiniteEquation([Lam26]) — each class equals the languages whose syntactic monoid satisfies the corresponding equation.
Implementation notes #
The xᵢ range over length-k letter sequences (αs : List α), not arbitrary
monoid elements: the latter is strictly weaker, ignoring L-trivial letters (e.g.
(a|b)* over {a, b, c} would spuriously qualify). [Lam26] works in the
syntactic semigroup (no empty word); we keep mathlib's Con (FreeMonoid α) monoid
and recover the characterization through this letter-sequence quantification.
The equations #
The definite (𝒟) equation: every length-k word's class is a right zero
(∀ s, s * [αs] = [αs]).
Equations
- L.kDefiniteEquation k = ∀ (αs : List α), αs.length = k → IsRightZero (L.syntacticClass αs)
Instances For
The reverse-definite (𝒦) equation: every length-k word's class is a left zero
(∀ s, [αs] * s = [αs]).
Equations
- L.kReverseDefiniteEquation k = ∀ (αs : List α), αs.length = k → IsLeftZero (L.syntacticClass αs)
Instances For
The generalized-definite (ℒℐ) equation: [αs] * s * [αs] = [αs] (|αs| = k).
Equations
- L.kGeneralizedDefiniteEquation k = ∀ (s : L.syntacticMonoid) (αs : List α), αs.length = k → L.syntacticClass αs * s * L.syntacticClass αs = L.syntacticClass αs
Instances For
Definite (𝒟) #
Forward: a k-definite language satisfies the 𝒟 equation.
Reverse: the 𝒟 equation forces k-definiteness.
k-definite ↔ the 𝒟 equation.
Reverse-definite (𝒦) — by reverse duality #
The 𝒦 equation for L is the 𝒟 equation for L.reverse.
reverse-k-definite ↔ the 𝒦 equation (reverse duality with 𝒟).
Forward: a reverse-k-definite language satisfies the 𝒦 equation.
Reverse: the 𝒦 equation forces reverse-k-definiteness.
Generalized definite (ℒℐ) #
Forward: a generalized-k-definite language satisfies the ℒℐ equation.
Reverse: the ℒℐ equation forces generalized-k-definiteness.
generalized-k-definite ↔ the ℒℐ equation.