Documentation

LeanPool.KrohnRhodes.Foundations.LocalDivisor

Monoid division and local divisors #

References #

Monoid division #

A monoid M divides a monoid N if M is a quotient of a submonoid of N. Equivalently, there exists a surjective monoid homomorphism from a submonoid of N onto M.

Equations
Instances For
    theorem LeanPool.KrohnRhodes.MonoidDivides.trans {M : Type u_1} {N : Type u_2} {P : Type u_3} [Monoid M] [Monoid N] [Monoid P] (h1 : MonoidDivides M N) (h2 : MonoidDivides N P) :

    Monoid division is transitive. If M ≼ N (witnessed by S ≤ N, φ : S ↠ M) and N ≼ P (witnessed by T ≤ P, ψ : T ↠ N), then M ≼ P. The witnessing submonoid of P is the image under T ↪ P of the pre-image ψ⁻¹(S) ≤ T; the surjection is φ ∘ (ψ restricted) ∘ (the submonoid iso). This is the standard composition of "quotient of a submonoid" relations.

    The local divisor M_c = cM ∩ Mc #

    For c ∈ M, the local divisor (Diekert–Kufleitner–Steinberg) is

    M_c := cM ∩ Mc, with the twisted product x ∘ y := x · y₀ (any y₀ with y = c·y₀), identity c.

    The twisted product is well-defined because for x ∈ Mc and y = c·y₀ the value x·y₀ does not depend on the choice of y₀. M_c divides M (localDivides). This is the larger local divisor described in DKS Section 2.5; their decomposition uses the potentially smaller submonoid cMc ∪ {c}.

    def LeanPool.KrohnRhodes.LocalDivisor (M : Type u_1) [Monoid M] (c : M) :
    Type u_1

    The carrier of the local divisor of a monoid M at c: the two-sided set cM ∩ Mc = {x | (∃ a, x = c*a) ∧ (∃ b, x = b*c)}. As a subtype of M.

    Equations
    Instances For
      def LeanPool.KrohnRhodes.LocalDivisor.val {M : Type u_1} [Monoid M] {c : M} (x : LocalDivisor M c) :
      M

      The underlying element of M of a local-divisor element.

      Equations
      Instances For
        theorem LeanPool.KrohnRhodes.LocalDivisor.ext {M : Type u_1} [Monoid M] {c : M} {x y : LocalDivisor M c} (h : x.val = y.val) :
        x = y
        theorem LeanPool.KrohnRhodes.LocalDivisor.ext_iff {M : Type u_1} [Monoid M] {c : M} {x y : LocalDivisor M c} :
        x = y ↔ x.val = y.val
        theorem LeanPool.KrohnRhodes.LocalDivisor.mem_left {M : Type u_1} [Monoid M] {c : M} (x : LocalDivisor M c) :
        ∃ (a : M), x.val = c * a
        theorem LeanPool.KrohnRhodes.LocalDivisor.mem_right {M : Type u_1} [Monoid M] {c : M} (x : LocalDivisor M c) :
        ∃ (b : M), x.val = b * c
        @[instance_reducible]
        noncomputable instance LeanPool.KrohnRhodes.LocalDivisor.instMul {M : Type u_1} [Monoid M] {c : M} :

        The twisted product x ∘ y = x · y₀ where y = c · y₀ (the value is independent of the choice of y₀, by x ∈ Mc). Implemented via Classical.choose of the left-membership of y.

        Equations
        theorem LeanPool.KrohnRhodes.LocalDivisor.mul_val {M : Type u_1} [Monoid M] {c : M} (x y : LocalDivisor M c) :
        (x * y).val = x.val * Classical.choose ⋯
        theorem LeanPool.KrohnRhodes.LocalDivisor.mul_val_of_eq {M : Type u_1} [Monoid M] {c : M} (x y : LocalDivisor M c) {y₀ : M} (hy₀ : y.val = c * y₀) :
        (x * y).val = x.val * y₀

        The defining identity for the product: if y.val = c * y₀ for any y₀, then (x * y).val = x.val * y₀. (Independence of the chosen witness, using x.val ∈ Mc.)

        @[instance_reducible]
        noncomputable instance LeanPool.KrohnRhodes.LocalDivisor.instOne {M : Type u_1} [Monoid M] {c : M} :

        The identity element of the local divisor is c itself (c = c*1 = 1*c ∈ cM ∩ Mc).

        Equations
        @[instance_reducible]
        noncomputable instance LeanPool.KrohnRhodes.LocalDivisor.instMonoid {M : Type u_1} [Monoid M] {c : M} :
        Equations
        • One or more equations did not get rendered due to their size.

        The local divisor is finite when M is (it is a subtype of M).

        The local divisor M_c divides M. The witnessing submonoid is S = {t : M | c·t ∈ Mc} (so that c·t ∈ cM ∩ Mc), and the surjection is γ(t) = c·t. This is a monoid homomorphism for the twisted product, and every x ∈ cM ∩ Mc is γ(a) for the witness a of x ∈ cM.