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.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)
:
Define X'
to be the set of all left cosets with an extra point at "infinity".
- fromCoset {A B : Grp} {f : A ⟶ B} : ↑(Set.range fun (x : ↑B) => x • ↑(MonoidHom.range f)) → XWithInfinity f
- infinity {A B : Grp} {f : A ⟶ B} : XWithInfinity f
Instances For
instance
Grp.SurjectiveOfEpiAuxs.instSMulαGroupXWithInfinity
{A B : Grp}
(f : A ⟶ B)
:
SMul (↑B) (XWithInfinity f)
Equations
- One or more equations did not get rendered due to their size.
theorem
Grp.SurjectiveOfEpiAuxs.mul_smul
{A B : Grp}
(f : A ⟶ B)
(b b' : ↑B)
(x : XWithInfinity f)
:
theorem
Grp.SurjectiveOfEpiAuxs.fromCoset_eq_of_mem_range
{A B : Grp}
(f : A ⟶ B)
{b : ↑B}
(hb : b ∈ MonoidHom.range f)
:
XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩ = XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.fromCoset_ne_of_nin_range
{A B : Grp}
(f : A ⟶ B)
{b : ↑B}
(hb : b ∉ MonoidHom.range f)
:
XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩ ≠ XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
Let τ
be the permutation on X'
exchanging f.range
and the point at infinity.
Equations
Instances For
theorem
Grp.SurjectiveOfEpiAuxs.τ_apply_infinity
{A B : Grp}
(f : A ⟶ B)
:
(tau f) XWithInfinity.infinity = XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.τ_apply_fromCoset
{A B : Grp}
(f : A ⟶ B)
:
(tau f) (XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) = XWithInfinity.infinity
theorem
Grp.SurjectiveOfEpiAuxs.τ_apply_fromCoset'
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(hx : x ∈ MonoidHom.range f)
:
(tau f) (XWithInfinity.fromCoset ⟨x • ↑(MonoidHom.range f), ⋯⟩) = XWithInfinity.infinity
theorem
Grp.SurjectiveOfEpiAuxs.τ_symm_apply_fromCoset
{A B : Grp}
(f : A ⟶ B)
:
(Equiv.symm (tau f)) (XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) = XWithInfinity.infinity
theorem
Grp.SurjectiveOfEpiAuxs.τ_symm_apply_infinity
{A B : Grp}
(f : A ⟶ B)
:
(Equiv.symm (tau f)) XWithInfinity.infinity = 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
The strategy is the following: assuming epi f
theorem
Grp.SurjectiveOfEpiAuxs.g_apply_fromCoset
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(y : ↑(Set.range fun (x : ↑B) => x • ↑(MonoidHom.range f)))
:
((g f) x) (XWithInfinity.fromCoset y) = XWithInfinity.fromCoset ⟨x • ↑y, ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.h_apply_infinity
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(hx : x ∈ MonoidHom.range f)
:
theorem
Grp.SurjectiveOfEpiAuxs.h_apply_fromCoset
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
:
((h f) x) (XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) = XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.h_apply_fromCoset'
{A B : Grp}
(f : A ⟶ B)
(x b : ↑B)
(hb : b ∈ MonoidHom.range f)
:
((h f) x) (XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩) = XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.h_apply_fromCoset_nin_range
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(hx : x ∈ MonoidHom.range f)
(b : ↑B)
(hb : b ∉ MonoidHom.range f)
:
((h f) x) (XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩) = XWithInfinity.fromCoset ⟨(x * b) • ↑(MonoidHom.range f), ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.agree
{A B : Grp}
(f : A ⟶ B)
:
↑(MonoidHom.range f) = {x : ↑B | (h f) x = (g f) x}
theorem
Grp.SurjectiveOfEpiAuxs.comp_eq
{A B : Grp}
(f : A ⟶ B)
:
CategoryTheory.CategoryStruct.comp f
(let_fun this := g f;
this) = CategoryTheory.CategoryStruct.comp f
(let_fun this := h f;
this)
theorem
Grp.SurjectiveOfEpiAuxs.g_ne_h
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(hx : x ∉ MonoidHom.range f)
:
theorem
CommGrp.ker_eq_bot_of_mono
{A B : CommGrp}
(f : A ⟶ B)
[CategoryTheory.Mono f]
:
MonoidHom.ker f = ⊥
instance
CommGrp.instCommGroupObjForget
(G : CommGrp)
:
CommGroup ((CategoryTheory.forget CommGrp).obj G)
Equations
- G.instCommGroupObjForget = G.str
instance
AddCommGrp.instAddCommGroupObjForget
(G : AddCommGrp)
:
AddCommGroup ((CategoryTheory.forget AddCommGrp).obj G)
Equations
- G.instAddCommGroupObjForget = G.str
instance
CommGrp.forget_commGrp_preserves_mono :
(CategoryTheory.forget CommGrp).PreservesMonomorphisms
instance
AddCommGrp.forget_commGrp_preserves_mono :
(CategoryTheory.forget AddCommGrp).PreservesMonomorphisms
instance
CommGrp.forget_commGrp_preserves_epi :
(CategoryTheory.forget CommGrp).PreservesEpimorphisms
instance
AddCommGrp.forget_commGrp_preserves_epi :
(CategoryTheory.forget AddCommGrp).PreservesEpimorphisms