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/Ngiven a normal subgroupNofG.lift φ: the group homomorphismG/N →* Hgiven a group homomorphismφ : G →* Hsuch thatN ⊆ ker φ.map f: the group homomorphismG/N →* H/Mgiven a group homomorphismf : G →* Hsuch 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)/Ngiven a subgroupHand a normal subgroupNof 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 AddMonoidHoms from an additive quotient group are equal if
their compositions with AddQuotientGroup.mk' are equal.
See note [partially-applied ext lemmas].
Two MonoidHoms 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. lifts)
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. lifts) 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) ⋯