Documentation

Mathlib.Algebra.Category.Grp.EpiMono

Monomorphisms and epimorphisms in Group #

In this file, we prove monomorphisms in the category of groups are injective homomorphisms and epimorphisms are surjective homomorphisms.

theorem AddMonoidHom.ker_eq_bot_of_cancel {A : Type u} {B : Type v} [AddGroup A] [AddGroup B] {f : A →+ B} (h : ∀ (u v : ↥f.ker →+ A), f.comp u = f.comp v → u = v) :
f.ker = ⊥
theorem MonoidHom.ker_eq_bot_of_cancel {A : Type u} {B : Type v} [Group A] [Group B] {f : A →* B} (h : ∀ (u v : ↥f.ker →* A), f.comp u = f.comp v → u = v) :
f.ker = ⊥
theorem AddMonoidHom.range_eq_top_of_cancel {A : Type u} {B : Type v} [AddCommGroup A] [AddCommGroup B] {f : A →+ B} (h : ∀ (u v : B →+ B ⧸ f.range), u.comp f = v.comp f → u = v) :
f.range = ⊤
theorem MonoidHom.range_eq_top_of_cancel {A : Type u} {B : Type v} [CommGroup A] [CommGroup B] {f : A →* B} (h : ∀ (u v : B →* B ⧸ f.range), u.comp f = v.comp f → u = v) :
f.range = ⊤
instance AddGrp.instGroupα_1 (G : AddGrp) :
Equations
  • G.instGroupα_1 = G.str
instance Grp.instGroupα_1 (G : Grp) :
Group ↑G
Equations
  • G.instGroupα_1 = G.str
inductive Grp.SurjectiveOfEpiAuxs.XWithInfinity {A : Grp} {B : Grp} (f : A ⟶ B) :

Define X' to be the set of all left cosets with an extra point at "infinity".

Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    theorem Grp.SurjectiveOfEpiAuxs.mul_smul {A : Grp} {B : Grp} (f : A ⟶ B) (b : ↑B) (b' : ↑B) (x : Grp.SurjectiveOfEpiAuxs.XWithInfinity f) :
    (b * b') • x = b • b' • x

    Let τ be the permutation on X' exchanging f.range and the point at infinity.

    Equations
    Instances For
      theorem Grp.SurjectiveOfEpiAuxs.τ_apply_infinity {A : Grp} {B : Grp} (f : A ⟶ B) :
      (Grp.SurjectiveOfEpiAuxs.tau f) Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity = Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
      theorem Grp.SurjectiveOfEpiAuxs.τ_apply_fromCoset {A : Grp} {B : Grp} (f : A ⟶ B) :
      (Grp.SurjectiveOfEpiAuxs.tau f) (Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) = Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity
      theorem Grp.SurjectiveOfEpiAuxs.τ_apply_fromCoset' {A : Grp} {B : Grp} (f : A ⟶ B) (x : ↑B) (hx : x ∈ MonoidHom.range f) :
      (Grp.SurjectiveOfEpiAuxs.tau f) (Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨x • ↑(MonoidHom.range f), ⋯⟩) = Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity
      theorem Grp.SurjectiveOfEpiAuxs.τ_symm_apply_fromCoset {A : Grp} {B : Grp} (f : A ⟶ B) :
      (Equiv.symm (Grp.SurjectiveOfEpiAuxs.tau f)) (Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) = Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity
      theorem Grp.SurjectiveOfEpiAuxs.τ_symm_apply_infinity {A : Grp} {B : Grp} (f : A ⟶ B) :
      (Equiv.symm (Grp.SurjectiveOfEpiAuxs.tau f)) Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity = Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩

      Let g : B ⟶ S(X') be defined as such that, for any β : B, g(β) is the function sending point at infinity to point at infinity and sending coset y to β • y.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Define h : B ⟶ S(X') to be τ g τ⁻¹

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          The strategy is the following: assuming epi f

          theorem Grp.SurjectiveOfEpiAuxs.g_apply_infinity {A : Grp} {B : Grp} (f : A ⟶ B) (x : ↑B) :
          ((Grp.SurjectiveOfEpiAuxs.g f) x) Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity = Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity
          theorem Grp.SurjectiveOfEpiAuxs.h_apply_infinity {A : Grp} {B : Grp} (f : A ⟶ B) (x : ↑B) (hx : x ∈ MonoidHom.range f) :
          ((Grp.SurjectiveOfEpiAuxs.h f) x) Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity = Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity
          Equations
          • G.instAddCommGroupObjForget = G.str
          Equations
          • G.instCommGroupObjForget = G.str