Documentation

Linglib.Core.Computability.Subregular.Language.Algebra.Equations

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 #

Main results #

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 #

def Language.kDefiniteEquation {α : Type u_1} (L : Language α) (k : ) :

The definite (𝒟) equation: every length-k word's class is a right zero (∀ s, s * [αs] = [αs]).

Equations
Instances For
    def Language.kReverseDefiniteEquation {α : Type u_1} (L : Language α) (k : ) :

    The reverse-definite (𝒦) equation: every length-k word's class is a left zero (∀ s, [αs] * s = [αs]).

    Equations
    Instances For
      def Language.kGeneralizedDefiniteEquation {α : Type u_1} (L : Language α) (k : ) :

      The generalized-definite (ℒℐ) equation: [αs] * s * [αs] = [αs] (|αs| = k).

      Equations
      Instances For

        Definite (𝒟) #

        theorem Language.IsDefinite.satisfies_kDefiniteEquation {α : Type u_1} {L : Language α} {k : } (hL : L.IsDefinite k) :

        Forward: a k-definite language satisfies the 𝒟 equation.

        theorem Language.isDefinite_of_satisfies_kDefiniteEquation {α : Type u_1} {L : Language α} {k : } (h : L.kDefiniteEquation k) :

        Reverse: the 𝒟 equation forces k-definiteness.

        theorem Language.isDefinite_iff_satisfies_kDefiniteEquation {α : Type u_1} {L : Language α} {k : } :

        k-definite ↔ the 𝒟 equation.

        Reverse-definite (𝒦) — by reverse duality #

        theorem Language.kReverseDefiniteEquation_iff_reverse {α : Type u_1} {L : Language α} {k : } :

        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.