Documentation

Linglib.Core.GroupTheory.Congruence.Hom

Homomorphisms on a congruence quotient of a magma #

Mathlib's Con API for quotient homomorphisms — Con.lift, Con.kerLift, Con.map and the isomorphism theorems — lives in section MulOneClass and is MonoidHom-valued. Its section Mul provides only Con.mkMulHom, Con.ker, Con.mapGen, Con.mapOfSurjective and Con.correspondence. This file adds the MulHom-valued lift, together with its universal property, the kernel lift, and the map induced by a coarsening.

Homomorphisms are consumed through MulHomClass and produced as concrete →ₙ*, following Con.ker and Con.mapOfSurjective. The cost of consuming through MulHomClass is that the universal-property statements coerce the argument, as in liftMulHom_comp_mkMulHom.

Main definitions #

Main results #

def Con.liftMulHom {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (c : Con M) (f : F) (H : c ker f) :
c.Quotient →ₙ* N

The homomorphism on c.Quotient induced by a homomorphism constant on c's classes.

Equations
  • c.liftMulHom f H = { toFun := fun (x : c.Quotient) => Con.liftOn x f , map_mul' := }
Instances For
    @[simp]
    theorem Con.liftMulHom_coe {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (c : Con M) (f : F) (H : c ker f) (x : M) :
    (c.liftMulHom f H) x = f x
    @[simp]
    theorem Con.liftMulHom_comp_mkMulHom {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (c : Con M) (f : F) (H : c ker f) :
    (c.liftMulHom f H).comp c.mkMulHom = f
    theorem Con.mkMulHom_surjective {M : Type u_1} [Mul M] (c : Con M) :
    Function.Surjective c.mkMulHom

    The quotient map is surjective.

    theorem Con.liftMulHom_surjective_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] {c : Con M} {f : F} (H : c ker f) (hf : Function.Surjective f) :
    Function.Surjective (c.liftMulHom f H)
    theorem Con.liftMulHom_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] {c : Con M} {f : F} {H : c ker f} (H' : ker f c) :
    Function.Injective (c.liftMulHom f H)

    The lift is injective when the kernel of f refines the congruence.

    theorem Con.liftMulHom_apply_mkMulHom {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (c : Con M) (f : c.Quotient →ₙ* N) :
    c.liftMulHom (f.comp c.mkMulHom) = f

    Every homomorphism out of the quotient is the lift of its restriction.

    theorem Con.mulHom_ext {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (c : Con M) {f g : c.Quotient →ₙ* N} (h : f.comp c.mkMulHom = g.comp c.mkMulHom) :
    f = g

    Extensionality for homomorphisms out of a congruence quotient: they agree as soon as they agree on the quotient map.

    theorem Con.mulHom_ext_iff {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {c : Con M} {f g : c.Quotient →ₙ* N} :
    f = g f.comp c.mkMulHom = g.comp c.mkMulHom
    theorem Con.liftMulHom_funext {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] (c : Con M) (f g : c.Quotient →ₙ* N) (h : ∀ (a : M), f a = g a) :
    f = g
    theorem Con.liftMulHom_unique {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (c : Con M) {f : F} (H : c ker f) (g : c.Quotient →ₙ* N) (Hg : g.comp c.mkMulHom = f) :
    g = c.liftMulHom f H

    The universal property: the lift is the unique homomorphism restricting to f.

    def Con.kerLiftMulHom {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (f : F) :
    (ker f).Quotient →ₙ* N

    The homomorphism induced by f on the quotient by its kernel.

    Equations
    Instances For
      @[simp]
      theorem Con.kerLiftMulHom_coe {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (f : F) (x : M) :
      (kerLiftMulHom f) x = f x
      theorem Con.kerLiftMulHom_injective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] (f : F) :
      Function.Injective (kerLiftMulHom f)

      The kernel lift is injective: it exhibits (ker f).Quotient as a sub-object of N, which is what closure-under-quotient arguments consume.

      theorem Con.kerLiftMulHom_surjective_of_surjective {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {F : Type u_3} [FunLike F M N] [MulHomClass F M N] {f : F} (hf : Function.Surjective f) :
      Function.Surjective (kerLiftMulHom f)
      def Con.mapMulHom {M : Type u_1} [Mul M] (c d : Con M) (h : c d) :
      c.Quotient →ₙ* d.Quotient

      The homomorphism of quotients induced by a coarsening c ≤ d.

      Equations
      Instances For
        @[simp]
        theorem Con.mapMulHom_coe {M : Type u_1} [Mul M] (c d : Con M) (h : c d) (x : M) :
        (c.mapMulHom d h) x = x
        theorem Con.mapMulHom_surjective {M : Type u_1} [Mul M] (c d : Con M) (h : c d) :
        Function.Surjective (c.mapMulHom d h)

        Kernels of paired homomorphisms #

        theorem Con.ker_prodMulHom {M : Type u_1} {N : Type u_2} [Mul M] [Mul N] {N' : Type u_4} [Mul N'] (f : M →ₙ* N) (g : M →ₙ* N') :
        ker (f.prod g) = ker fker g

        The kernel of a paired homomorphism is the meet of the kernels.

        theorem Con.ker_prod {M : Type u_4} {N : Type u_5} {N' : Type u_6} [MulOneClass M] [MulOneClass N] [MulOneClass N'] (f : M →* N) (g : M →* N') :
        ker (f.prod g) = ker fker g

        The kernel of a paired monoid homomorphism is the meet of the kernels.