Documentation

Linglib.Core.Algebra.Group.Aperiodic

Aperiodic monoids #

A monoid is aperiodic (group-free) when some power stabilises every element: ∃ n, ∀ x, x ^ (n + 1) = x ^ n. [Sch65] introduced these as the monoids with only trivial subgroups (his condition γ fⁿ = γ fⁿ⁺¹); they are the algebraic side of the star-free / counter-free / FO[<]-definable languages ([Pin], [McNP71]).

[UPSTREAM]: mathlib has Monoid.IsTorsion but no aperiodicity notion; this is a candidate for Mathlib/Algebra/Group/.

Main results #

def Monoid.IsAperiodic (M : Type u_1) [Monoid M] :

A monoid is aperiodic when some uniform power stabilises every element: ∃ n, ∀ x, x ^ (n + 1) = x ^ n. Introduced by [Sch65] as the monoids with only trivial subgroups.

Equations
Instances For
    def AddMonoid.IsAperiodic (M : Type u_1) [AddMonoid M] :
    Equations
    Instances For
      theorem Monoid.IsAperiodic.of_subsingleton {M : Type u_1} [Monoid M] [Subsingleton M] :

      A subsingleton monoid is aperiodic (take n = 0).

      theorem AddMonoid.IsAperiodic.of_subsingleton {M : Type u_1} [AddMonoid M] [Subsingleton M] :
      theorem Monoid.pow_succ_stabilizes {M : Type u_1} [Monoid M] {x : M} {n : } (h : x ^ (n + 1) = x ^ n) (m : ) :
      n mx ^ (m + 1) = x ^ m

      If x ^ (n + 1) = x ^ n then the power stabilises at every m ≥ n.

      theorem AddMonoid.nsmul_succ_stabilizes {M : Type u_1} [AddMonoid M] {x : M} {n : } (h : (n + 1) x = n x) (m : ) :
      n m(m + 1) x = m x
      theorem Monoid.IsAperiodic.of_surjective {M : Type u_1} [Monoid M] {N : Type u_2} [Monoid N] {f : M →* N} (hf : Function.Surjective f) (hM : IsAperiodic M) :

      Aperiodicity passes along a surjective monoid hom: the same exponent works for the image.

      theorem AddMonoid.IsAperiodic.of_surjective {M : Type u_1} [AddMonoid M] {N : Type u_2} [AddMonoid N] {f : M →+ N} (hf : Function.Surjective f) (hM : IsAperiodic M) :
      theorem Monoid.IsAperiodic.of_injective {M : Type u_1} [Monoid M] {N : Type u_2} [Monoid N] {f : M →* N} (hf : Function.Injective f) (hN : IsAperiodic N) :

      Aperiodicity is inherited by submonoids: if f : M →* N is injective and N is aperiodic then so is M (the same exponent works, pulled back through f).

      theorem AddMonoid.IsAperiodic.of_injective {M : Type u_1} [AddMonoid M] {N : Type u_2} [AddMonoid N] {f : M →+ N} (hf : Function.Injective f) (hN : IsAperiodic N) :
      theorem Monoid.IsAperiodic.prod {M : Type u_1} [Monoid M] {N : Type u_2} [Monoid N] (hM : IsAperiodic M) (hN : IsAperiodic N) :
      IsAperiodic (M × N)

      A binary product of aperiodic monoids is aperiodic (take the larger exponent).

      theorem AddMonoid.IsAperiodic.sum {M : Type u_1} [AddMonoid M] {N : Type u_2} [AddMonoid N] (hM : IsAperiodic M) (hN : IsAperiodic N) :
      IsAperiodic (M × N)
      theorem Monoid.IsAperiodic.of_mulEquiv {M : Type u_1} [Monoid M] {N : Type u_2} [Monoid N] (e : M ≃* N) (hM : IsAperiodic M) :

      Aperiodicity transports across a monoid isomorphism.

      theorem AddMonoid.IsAperiodic.of_addEquiv {M : Type u_1} [AddMonoid M] {N : Type u_2} [AddMonoid N] (e : M ≃+ N) (hM : IsAperiodic M) :