Monomorphisms and epimorphisms in Group
#
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. In this file, we prove monomorphisms in category of group are injective homomorphisms and epimorphisms are surjective homomorphisms.
theorem
Group.ker_eq_bot_of_mono
{A B : Group}
(f : A ⟶ B)
[category_theory.mono f] :
monoid_hom.ker f = ⊥
@[nolint]
- from_coset : Π {A B : Group} {f : A ⟶ B}, ↥(set.range (function.swap left_coset (monoid_hom.range f).carrier)) → Group.surjective_of_epi_auxs.X_with_infinity f
- infinity : Π {A B : Group} {f : A ⟶ B}, Group.surjective_of_epi_auxs.X_with_infinity f
Define X'
to be the set of all left cosets with an extra point at "infinity".
Instances for Group.surjective_of_epi_auxs.X_with_infinity
- Group.surjective_of_epi_auxs.X_with_infinity.has_sizeof_inst
- Group.surjective_of_epi_auxs.X_with_infinity.has_smul
@[protected, instance]
Equations
- Group.surjective_of_epi_auxs.X_with_infinity.has_smul f = {smul := λ (b : ↥B) (x : Group.surjective_of_epi_auxs.X_with_infinity f), Group.surjective_of_epi_auxs.X_with_infinity.has_smul._match_1 f b x}
- Group.surjective_of_epi_auxs.X_with_infinity.has_smul._match_1 f b Group.surjective_of_epi_auxs.X_with_infinity.infinity = Group.surjective_of_epi_auxs.X_with_infinity.infinity
- Group.surjective_of_epi_auxs.X_with_infinity.has_smul._match_1 f b (Group.surjective_of_epi_auxs.X_with_infinity.from_coset y) = Group.surjective_of_epi_auxs.X_with_infinity.from_coset ⟨left_coset b ↑y, _⟩
theorem
Group.surjective_of_epi_auxs.one_smul
{A B : Group}
(f : A ⟶ B)
(x : Group.surjective_of_epi_auxs.X_with_infinity f) :
theorem
Group.surjective_of_epi_auxs.from_coset_eq_of_mem_range
{A B : Group}
(f : A ⟶ B)
{b : ↥B}
(hb : b ∈ monoid_hom.range f) :
theorem
Group.surjective_of_epi_auxs.from_coset_ne_of_nin_range
{A B : Group}
(f : A ⟶ B)
{b : ↥B}
(hb : b ∉ monoid_hom.range f) :
@[protected, instance]
noncomputable
def
Group.surjective_of_epi_auxs.X_with_infinity.decidable_eq
{A B : Group}
(f : A ⟶ B) :
Let τ
be the permutation on X'
exchanging f.range
and the point at infinity.
theorem
Group.surjective_of_epi_auxs.τ_apply_from_coset'
{A B : Group}
(f : A ⟶ B)
(x : ↥B)
(hx : x ∈ monoid_hom.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 β *l y
.
Define h : B ⟶ S(X')
to be τ g τ⁻¹
Equations
- Group.surjective_of_epi_auxs.H f = {to_fun := λ (β : ↥B), ((equiv.symm (Group.surjective_of_epi_auxs.tau f)).trans (⇑(Group.surjective_of_epi_auxs.G f) β)).trans (Group.surjective_of_epi_auxs.tau f), map_one' := _, map_mul' := _}
The strategy is the following: assuming epi f
- prove that
f.range = {x | h x = g x}
; - thus
f ≫ h = f ≫ g
so thath = g
; - but if
f
is not surjective, then somex ∉ f.range
, thenh x ≠ g x
at the cosetf.range
.
theorem
Group.surjective_of_epi_auxs.g_apply_from_coset
{A B : Group}
(f : A ⟶ B)
(x : ↥B)
(y : ↥(set.range (function.swap left_coset (monoid_hom.range f).carrier))) :
theorem
Group.surjective_of_epi_auxs.h_apply_infinity
{A B : Group}
(f : A ⟶ B)
(x : ↥B)
(hx : x ∈ monoid_hom.range f) :
theorem
Group.surjective_of_epi_auxs.h_apply_from_coset'
{A B : Group}
(f : A ⟶ B)
(x b : ↥B)
(hb : b ∈ monoid_hom.range f) :
theorem
Group.surjective_of_epi_auxs.h_apply_from_coset_nin_range
{A B : Group}
(f : A ⟶ B)
(x : ↥B)
(hx : x ∈ monoid_hom.range f)
(b : ↥B)
(hb : b ∉ monoid_hom.range f) :
theorem
Group.surjective_of_epi_auxs.agree
{A B : Group}
(f : A ⟶ B) :
(monoid_hom.range f).carrier = {x : ↥B | ⇑(Group.surjective_of_epi_auxs.H f) x = ⇑(Group.surjective_of_epi_auxs.G f) x}
theorem
Group.surjective_of_epi_auxs.comp_eq
{A B : Group}
(f : A ⟶ B) :
(f ≫ show B ⟶ Group.of (equiv.perm (Group.surjective_of_epi_auxs.X_with_infinity f)), from Group.surjective_of_epi_auxs.G f) = f ≫ Group.surjective_of_epi_auxs.H f
theorem
Group.surjective_of_epi_auxs.g_ne_h
{A B : Group}
(f : A ⟶ B)
(x : ↥B)
(hx : x ∉ monoid_hom.range f) :
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
theorem
CommGroup.ker_eq_bot_of_mono
{A B : CommGroup}
(f : A ⟶ B)
[category_theory.mono f] :
monoid_hom.ker f = ⊥
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]