The abelianization of a group #
This file defines the commutator and the abelianization of a group. It furthermore prepares for the
result that the abelianization is left adjoint to the forgetful functor from abelian groups to
groups, which can be found in algebra/category/Group/adjunctions
.
Main definitions #
commutator
: defines the commutator of a groupG
as a subgroup ofG
.abelianization
: defines the abelianization of a groupG
as the quotient of a group by its commutator subgroup.abelianization.map
: lifts a group homomorphism to a homomorphism between the abelianizationsmul_equiv.abelianization_congr
: Equivalent groups have equivalent abelianizations
theorem
commutator_eq_closure
(G : Type u)
[group G] :
commutator G = subgroup.closure {g : G | ∃ (g₁ g₂ : G), ⁅g₁,g₂⁆ = g}
theorem
commutator_eq_normal_closure
(G : Type u)
[group G] :
commutator G = subgroup.normal_closure {g : G | ∃ (g₁ g₂ : G), ⁅g₁,g₂⁆ = g}
@[protected, instance]
The abelianization of G is the quotient of G by its commutator subgroup.
Equations
- abelianization G = (G ⧸ commutator G)
@[protected, instance]
Equations
- abelianization.comm_group G = {mul := group.mul (quotient_group.quotient.group (commutator G)), mul_assoc := _, one := group.one (quotient_group.quotient.group (commutator G)), one_mul := _, mul_one := _, npow := group.npow (quotient_group.quotient.group (commutator G)), npow_zero' := _, npow_succ' := _, inv := group.inv (quotient_group.quotient.group (commutator G)), div := group.div (quotient_group.quotient.group (commutator G)), div_eq_mul_inv := _, zpow := group.zpow (quotient_group.quotient.group (commutator G)), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
@[protected, instance]
Equations
- abelianization.inhabited G = {default := 1}
@[protected, instance]
def
abelianization.fintype
(G : Type u)
[group G]
[fintype G]
[decidable_pred (λ (_x : G), _x ∈ commutator G)] :
Equations
of
is the canonical projection from G to its abelianization.
Equations
- abelianization.of = {to_fun := quotient_group.mk (commutator G), map_one' := _, map_mul' := _}
@[simp]
theorem
abelianization.mk_eq_of
{G : Type u}
[group G]
(a : G) :
quot.mk setoid.r a = ⇑abelianization.of a
theorem
abelianization.commutator_subset_ker
{G : Type u}
[group G]
{A : Type v}
[comm_group A]
(f : G →* A) :
commutator G ≤ f.ker
def
abelianization.lift
{G : Type u}
[group G]
{A : Type v}
[comm_group A] :
(G →* A) ≃ (abelianization G →* A)
If f : G → A
is a group homomorphism to an abelian group, then lift f
is the unique map from
the abelianization of a G
to A
that factors through f
.
Equations
- abelianization.lift = {to_fun := λ (f : G →* A), quotient_group.lift (commutator G) f _, inv_fun := λ (F : abelianization G →* A), F.comp abelianization.of, left_inv := _, right_inv := _}
@[simp]
theorem
abelianization.lift.of
{G : Type u}
[group G]
{A : Type v}
[comm_group A]
(f : G →* A)
(x : G) :
⇑(⇑abelianization.lift f) (⇑abelianization.of x) = ⇑f x
theorem
abelianization.lift.unique
{G : Type u}
[group G]
{A : Type v}
[comm_group A]
(f : G →* A)
(φ : abelianization G →* A)
(hφ : ∀ (x : G), ⇑φ (⇑abelianization.of x) = ⇑f x)
{x : abelianization G} :
⇑φ x = ⇑(⇑abelianization.lift f) x
@[simp]
@[ext]
theorem
abelianization.hom_ext
{G : Type u}
[group G]
{A : Type v}
[monoid A]
(φ ψ : abelianization G →* A)
(h : φ.comp abelianization.of = ψ.comp abelianization.of) :
φ = ψ
The map operation of the abelianization
functor
Equations
@[simp]
theorem
abelianization.map_of
{G : Type u}
[group G]
{H : Type v}
[group H]
(f : G →* H)
(x : G) :
⇑(abelianization.map f) (⇑abelianization.of x) = ⇑abelianization.of (⇑f x)
@[simp]
@[simp]
theorem
abelianization.map_comp
{G : Type u}
[group G]
{H : Type v}
[group H]
(f : G →* H)
{I : Type w}
[group I]
(g : H →* I) :
(abelianization.map g).comp (abelianization.map f) = abelianization.map (g.comp f)
@[simp]
theorem
abelianization.map_map_apply
{G : Type u}
[group G]
{H : Type v}
[group H]
(f : G →* H)
{I : Type w}
[group I]
{g : H →* I}
{x : abelianization G} :
⇑(abelianization.map g) (⇑(abelianization.map f) x) = ⇑(abelianization.map (g.comp f)) x
Equivalent groups have equivalent abelianizations
Equations
- e.abelianization_congr = {to_fun := ⇑(abelianization.map e.to_monoid_hom), inv_fun := ⇑(abelianization.map e.symm.to_monoid_hom), left_inv := _, right_inv := _, map_mul' := _}
@[simp]
theorem
abelianization_congr_of
{G : Type u}
[group G]
{H : Type v}
[group H]
(e : G ≃* H)
(x : G) :
⇑(e.abelianization_congr) (⇑abelianization.of x) = ⇑abelianization.of (⇑e x)
@[simp]
@[simp]
@[simp]
theorem
abelianization.equiv_of_comm_symm_apply
{H : Type u_1}
[comm_group H]
(ᾰ : abelianization H) :
An Abelian group is equivalent to its own abelianization.
Equations
- abelianization.equiv_of_comm = {to_fun := ⇑abelianization.of, inv_fun := ⇑(⇑abelianization.lift (monoid_hom.id H)), left_inv := _, right_inv := _, map_mul' := _}
@[simp]