Quotients of groups by normal subgroups #
This files develops the basic theory of quotients of groups by normal subgroups. In particular it proves Noether's first and second isomorphism theorems.
Main definitions #
mk'
: the canonical group homomorphismG →* G/N
given a normal subgroupN
ofG
.lift φ
: the group homomorphismG/N →* H
given a group homomorphismφ : G →* H
such thatN ⊆ ker φ
.map f
: the group homomorphismG/N →* H/M
given a group homomorphismf : G →* H
such thatN ⊆ f⁻¹(M)
.
Main statements #
QuotientGroup.quotientKerEquivRange
: Noether's first isomorphism theorem, an explicit isomorphismG/ker φ → range φ
for every group homomorphismφ : G →* H
.QuotientGroup.quotientInfEquivProdNormalQuotient
: Noether's second isomorphism theorem, an explicit isomorphism betweenH/(H ∩ N)
and(HN)/N
given a subgroupH
and a normal subgroupN
of a groupG
.QuotientGroup.quotientQuotientEquivQuotient
: Noether's third isomorphism theorem, the canonical isomorphism between(G / N) / (M / N)
andG / M
, whereN ≤ M
.
Tags #
isomorphism theorems, quotient groups
The additive congruence relation generated by a normal additive subgroup.
Equations
- QuotientAddGroup.con N = { toSetoid := QuotientAddGroup.leftRel N, add' := ⋯ }
Instances For
The congruence relation generated by a normal subgroup.
Equations
- QuotientGroup.con N = { toSetoid := QuotientGroup.leftRel N, mul' := ⋯ }
Instances For
Equations
- QuotientAddGroup.Quotient.addGroup N = (QuotientAddGroup.con N).addGroup
Equations
- QuotientGroup.Quotient.group N = (QuotientGroup.con N).group
The additive group homomorphism from G
to G/N
.
Equations
- QuotientAddGroup.mk' N = AddMonoidHom.mk' QuotientAddGroup.mk ⋯
Instances For
The group homomorphism from G
to G/N
.
Equations
- QuotientGroup.mk' N = MonoidHom.mk' QuotientGroup.mk ⋯
Instances For
Two AddMonoidHom
s from an additive quotient group are equal if
their compositions with AddQuotientGroup.mk'
are equal.
See note [partially-applied ext lemmas].
Two MonoidHom
s from a quotient group are equal if their compositions with
QuotientGroup.mk'
are equal.
See note [partially-applied ext lemmas].
Equations
Equations
An AddGroup
homomorphism φ : G →+ M
with N ⊆ ker(φ)
descends (i.e. lift
s)
to a group homomorphism G/N →* M
.
Equations
- QuotientAddGroup.lift N φ HN = (QuotientAddGroup.con N).lift φ ⋯
Instances For
A group homomorphism φ : G →* M
with N ⊆ ker(φ)
descends (i.e. lift
s) to a
group homomorphism G/N →* M
.
Equations
- QuotientGroup.lift N φ HN = (QuotientGroup.con N).lift φ ⋯
Instances For
An AddGroup
homomorphism f : G →+ H
induces a map G/N →+ H/M
if N ⊆ f⁻¹(M)
.
Equations
- QuotientAddGroup.map N M f h = QuotientAddGroup.lift N ((QuotientAddGroup.mk' M).comp f) ⋯
Instances For
A group homomorphism f : G →* H
induces a map G/N →* H/M
if N ⊆ f⁻¹(M)
.
Equations
- QuotientGroup.map N M f h = QuotientGroup.lift N ((QuotientGroup.mk' M).comp f) ⋯
Instances For
QuotientAddGroup.congr
lifts the isomorphism e : G ≃ H
to G ⧸ G' ≃ H ⧸ H'
,
given that e
maps G
to H
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
QuotientGroup.congr
lifts the isomorphism e : G ≃ H
to G ⧸ G' ≃ H ⧸ H'
,
given that e
maps G
to H
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The induced map from the quotient by the kernel to the codomain.
Equations
- QuotientAddGroup.kerLift φ = QuotientAddGroup.lift φ.ker φ ⋯
Instances For
The induced map from the quotient by the kernel to the codomain.
Equations
- QuotientGroup.kerLift φ = QuotientGroup.lift φ.ker φ ⋯
Instances For
The induced map from the quotient by the kernel to the range.
Equations
- QuotientAddGroup.rangeKerLift φ = QuotientAddGroup.lift φ.ker φ.rangeRestrict ⋯
Instances For
The induced map from the quotient by the kernel to the range.
Equations
- QuotientGroup.rangeKerLift φ = QuotientGroup.lift φ.ker φ.rangeRestrict ⋯
Instances For
The canonical isomorphism G/(ker φ) ≃+ H
induced by a homomorphism
φ : G →+ H
with a right inverse ψ : H → G
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical isomorphism G/(ker φ) ≃* H
induced by a homomorphism φ : G →* H
with a right inverse ψ : H → G
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical isomorphism G/⊥ ≃+ G
.
Equations
- QuotientAddGroup.quotientBot = QuotientAddGroup.quotientKerEquivOfRightInverse (AddMonoidHom.id G) id ⋯
Instances For
The canonical isomorphism G/⊥ ≃* G
.
Equations
- QuotientGroup.quotientBot = QuotientGroup.quotientKerEquivOfRightInverse (MonoidHom.id G) id ⋯
Instances For
The canonical isomorphism G/(ker φ) ≃+ H
induced by a surjection φ : G →+ H
.
For a computable
version, see QuotientAddGroup.quotientKerEquivOfRightInverse
.
Equations
Instances For
The canonical isomorphism G/(ker φ) ≃* H
induced by a surjection φ : G →* H
.
For a computable
version, see QuotientGroup.quotientKerEquivOfRightInverse
.
Equations
Instances For
If two normal subgroups M
and N
of G
are the same, their quotient groups are
isomorphic.
Equations
- QuotientAddGroup.quotientAddEquivOfEq h = let __src := AddSubgroup.quotientEquivOfEq h; { toEquiv := __src, map_add' := ⋯ }
Instances For
If two normal subgroups M
and N
of G
are the same, their quotient groups are
isomorphic.
Equations
- QuotientGroup.quotientMulEquivOfEq h = let __src := Subgroup.quotientEquivOfEq h; { toEquiv := __src, map_mul' := ⋯ }
Instances For
Let A', A, B', B
be subgroups of G
. If A' ≤ B'
and A ≤ B
, then there is a map
A / (A' ⊓ A) →+ B / (B' ⊓ B)
induced by the inclusions.
Equations
- QuotientAddGroup.quotientMapAddSubgroupOfOfLe h' h = QuotientAddGroup.map (A'.addSubgroupOf A) (B'.addSubgroupOf B) (AddSubgroup.inclusion h) ⋯
Instances For
Let A', A, B', B
be subgroups of G
. If A' ≤ B'
and A ≤ B
,
then there is a map A / (A' ⊓ A) →* B / (B' ⊓ B)
induced by the inclusions.
Equations
- QuotientGroup.quotientMapSubgroupOfOfLe h' h = QuotientGroup.map (A'.subgroupOf A) (B'.subgroupOf B) (Subgroup.inclusion h) ⋯
Instances For
Let A', A, B', B
be subgroups of G
. If A' = B'
and A = B
, then the quotients
A / (A' ⊓ A)
and B / (B' ⊓ B)
are isomorphic. Applying this equiv is nicer than rewriting along
the equalities, since the type of (A'.addSubgroupOf A : AddSubgroup A)
depends on on A
.
Equations
- QuotientAddGroup.equivQuotientAddSubgroupOfOfEq h' h = (QuotientAddGroup.quotientMapAddSubgroupOfOfLe ⋯ ⋯).toAddEquiv (QuotientAddGroup.quotientMapAddSubgroupOfOfLe ⋯ ⋯) ⋯ ⋯
Instances For
Let A', A, B', B
be subgroups of G
.
If A' = B'
and A = B
, then the quotients A / (A' ⊓ A)
and B / (B' ⊓ B)
are isomorphic.
Applying this equiv is nicer than rewriting along the equalities, since the type of
(A'.subgroupOf A : Subgroup A)
depends on A
.
Equations
- QuotientGroup.equivQuotientSubgroupOfOfEq h' h = (QuotientGroup.quotientMapSubgroupOfOfLe ⋯ ⋯).toMulEquiv (QuotientGroup.quotientMapSubgroupOfOfLe ⋯ ⋯) ⋯ ⋯
Instances For
Equations
- ⋯ = ⋯
Instances For
The map of quotients by multiples of an integer induced by an additive group homomorphism.
Equations
- QuotientAddGroup.homQuotientZSMulOfHom f n = QuotientAddGroup.lift (zsmulAddGroupHom n).range ((QuotientAddGroup.mk' (zsmulAddGroupHom n).range).comp f) ⋯
Instances For
The map of quotients by powers of an integer induced by a group homomorphism.
Equations
- QuotientGroup.homQuotientZPowOfHom f n = QuotientGroup.lift (zpowGroupHom n).range ((QuotientGroup.mk' (zpowGroupHom n).range).comp f) ⋯
Instances For
The equivalence of quotients by multiples of an integer induced by an additive group isomorphism.
Equations
- QuotientAddGroup.equivQuotientZSMulOfEquiv e n = (QuotientAddGroup.homQuotientZSMulOfHom (↑e) n).toAddEquiv (QuotientAddGroup.homQuotientZSMulOfHom (↑e.symm) n) ⋯ ⋯
Instances For
The equivalence of quotients by powers of an integer induced by a group isomorphism.
Equations
- QuotientGroup.equivQuotientZPowOfEquiv e n = (QuotientGroup.homQuotientZPowOfHom (↑e) n).toMulEquiv (QuotientGroup.homQuotientZPowOfHom (↑e.symm) n) ⋯ ⋯
Instances For
The second isomorphism theorem: given two subgroups H
and N
of a group G
, where
N
is normal, defines an isomorphism between H/(H ∩ N)
and (H + N)/N
Equations
- One or more equations did not get rendered due to their size.
Instances For
Noether's second isomorphism theorem: given two subgroups H
and N
of a group G
, where
N
is normal, defines an isomorphism between H/(H ∩ N)
and (HN)/N
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The map from the third isomorphism theorem for additive groups:
(A / N) / (M / N) → A / M
.
Equations
Instances For
The map from the third isomorphism theorem for groups: (G / N) / (M / N) → G / M
.
Equations
- QuotientGroup.quotientQuotientEquivQuotientAux N M h = QuotientGroup.lift (Subgroup.map (QuotientGroup.mk' N) M) (QuotientGroup.map N M (MonoidHom.id G) h) ⋯
Instances For
Noether's third isomorphism theorem for additive groups: (A / N) / (M / N) ≃+ A / M
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Noether's third isomorphism theorem for groups: (G / N) / (M / N) ≃* G / M
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If the quotient by an additive subgroup gives a singleton then the additive subgroup is the whole additive group.
If the quotient by a subgroup gives a singleton then the subgroup is the whole group.
If F
and H
are finite such that ker(G →+ H) ≤ im(F →+ G)
, then G
is finite.
Equations
- AddGroup.fintypeOfKerLeRange f g h = Fintype.ofEquiv ((G ⧸ g.ker) × ↥g.ker) AddSubgroup.addGroupEquivQuotientProdAddSubgroup.symm
Instances For
If F
and H
are finite such that ker(G →* H) ≤ im(F →* G)
, then G
is finite.
Equations
- Group.fintypeOfKerLeRange f g h = Fintype.ofEquiv ((G ⧸ g.ker) × ↥g.ker) Subgroup.groupEquivQuotientProdSubgroup.symm
Instances For
If F
and H
are finite such that ker(G →+ H) = im(F →+ G)
, then G
is finite.
Equations
Instances For
If F
and H
are finite such that ker(G →* H) = im(F →* G)
, then G
is finite.
Equations
- Group.fintypeOfKerEqRange f g h = Group.fintypeOfKerLeRange f g ⋯
Instances For
If ker(G →+ H)
and H
are finite, then G
is finite.
Equations
- AddGroup.fintypeOfKerOfCodom g = AddGroup.fintypeOfKerLeRange (AddSubgroup.topEquiv.toAddMonoidHom.comp (AddSubgroup.inclusion ⋯)) g ⋯
Instances For
If ker(G →* H)
and H
are finite, then G
is finite.
Equations
- Group.fintypeOfKerOfCodom g = Group.fintypeOfKerLeRange (Subgroup.topEquiv.toMonoidHom.comp (Subgroup.inclusion ⋯)) g ⋯
Instances For
If F
and coker(F →* G)
are finite, then G
is finite.
Equations
- Group.fintypeOfDomOfCoker f = Group.fintypeOfKerLeRange f (QuotientGroup.mk' f.range) ⋯