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)) → Grp.SurjectiveOfEpiAuxs.XWithInfinity f
- infinity: {A B : Grp} → {f : A ⟶ B} → Grp.SurjectiveOfEpiAuxs.XWithInfinity f
Instances For
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 : Grp.SurjectiveOfEpiAuxs.XWithInfinity f)
:
theorem
Grp.SurjectiveOfEpiAuxs.one_smul
{A B : Grp}
(f : A ⟶ B)
(x : Grp.SurjectiveOfEpiAuxs.XWithInfinity f)
:
theorem
Grp.SurjectiveOfEpiAuxs.fromCoset_eq_of_mem_range
{A B : Grp}
(f : A ⟶ B)
{b : ↑B}
(hb : b ∈ MonoidHom.range f)
:
theorem
Grp.SurjectiveOfEpiAuxs.fromCoset_ne_of_nin_range
{A B : Grp}
(f : A ⟶ B)
{b : ↑B}
(hb : b ∉ MonoidHom.range f)
:
Let τ
be the permutation on X'
exchanging f.range
and the point at infinity.
Equations
- Grp.SurjectiveOfEpiAuxs.tau f = Equiv.swap (Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) Grp.SurjectiveOfEpiAuxs.XWithInfinity.infinity
Instances For
theorem
Grp.SurjectiveOfEpiAuxs.τ_apply_infinity
{A 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 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 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 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 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_fromCoset
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(y : ↑(Set.range fun (x : ↑B) => x • ↑(MonoidHom.range f)))
:
theorem
Grp.SurjectiveOfEpiAuxs.g_apply_infinity
{A 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 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
theorem
Grp.SurjectiveOfEpiAuxs.h_apply_fromCoset'
{A B : Grp}
(f : A ⟶ B)
(x b : ↑B)
(hb : b ∈ MonoidHom.range f)
:
((Grp.SurjectiveOfEpiAuxs.h f) x) (Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩) = Grp.SurjectiveOfEpiAuxs.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)
:
((Grp.SurjectiveOfEpiAuxs.h f) x) (Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩) = Grp.SurjectiveOfEpiAuxs.XWithInfinity.fromCoset ⟨(x * b) • ↑(MonoidHom.range f), ⋯⟩
theorem
Grp.SurjectiveOfEpiAuxs.agree
{A B : Grp}
(f : A ⟶ B)
:
↑(MonoidHom.range f) = {x : ↑B | (Grp.SurjectiveOfEpiAuxs.h f) x = (Grp.SurjectiveOfEpiAuxs.g f) x}
theorem
Grp.SurjectiveOfEpiAuxs.comp_eq
{A B : Grp}
(f : A ⟶ B)
:
CategoryTheory.CategoryStruct.comp f
(let_fun this := Grp.SurjectiveOfEpiAuxs.g f;
this) = CategoryTheory.CategoryStruct.comp f
(let_fun this := Grp.SurjectiveOfEpiAuxs.h f;
this)
theorem
Grp.SurjectiveOfEpiAuxs.g_ne_h
{A B : Grp}
(f : A ⟶ B)
(x : ↑B)
(hx : x ∉ MonoidHom.range f)
:
Equations
Equations
Equations
Equations
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
Equations
instance
AddCommGrp.forget_commGrp_preserves_mono :
(CategoryTheory.forget AddCommGrp).PreservesMonomorphisms
Equations
instance
CommGrp.forget_commGrp_preserves_epi :
(CategoryTheory.forget CommGrp).PreservesEpimorphisms
Equations
instance
AddCommGrp.forget_commGrp_preserves_epi :
(CategoryTheory.forget AddCommGrp).PreservesEpimorphisms