Group Extensions #
This file defines extensions of multiplicative and additive groups and their associated structures such as splittings and equivalences.
Main definitions #
(Add?)GroupExtension N E G
: structure for extensions ofG
byN
as short exact sequences1 → N → E → G → 1
(0 → N → E → G → 0
for additive groups)(Add?)GroupExtension.Equiv S S'
: structure for equivalences of two group extensionsS
andS'
as specific homomorphismsE → E'
such that each diagram below is commutative
For multiplicative groups:
↗︎ E ↘
1 → N ↓ G → 1
↘︎ E' ↗︎️
For additive groups:
↗︎ E ↘
0 → N ↓ G → 0
↘︎ E' ↗︎️
(Add?)GroupExtension.Section S
: structure for right inverses torightHom
of a group extensionS
ofG
byN
(Add?)GroupExtension.Splitting S
: structure for section homomorphisms of a group extensionS
ofG
byN
SemidirectProduct.toGroupExtension φ
: the multiplicative group extension associated to the semidirect product coming fromφ : G →* MulAut N
,1 → N → N ⋊[φ] G → G → 1
TODO #
If N
is abelian,
- there is a bijection between
N
-conjugacy classes of(SemidirectProduct.toGroupExtension φ).Splitting
andgroupCohomology.H1
(which will be available inGroupTheory/GroupExtension/Abelian.lean
to be added in a later PR). - there is a bijection between equivalence classes of group extensions and
groupCohomology.H2
(which is also stated as a TODO inRepresentationTheory/GroupCohomology/LowDegree.lean
).
AddGroupExtension N E G
is a short exact sequence of additive groups 0 → N → E → G → 0
.
The inclusion homomorphism
N →+ E
The projection homomorphism
E →+ G
- inl_injective : Function.Injective ⇑self.inl
The inclusion map is injective.
The range of the inclusion map is equal to the kernel of the projection map.
- rightHom_surjective : Function.Surjective ⇑self.rightHom
The projection map is surjective.
GroupExtension N E G
is a short exact sequence of groups 1 → N → E → G → 1
.
The inclusion homomorphism
N →* E
The projection homomorphism
E →* G
- inl_injective : Function.Injective ⇑self.inl
The inclusion map is injective.
The range of the inclusion map is equal to the kernel of the projection map.
- rightHom_surjective : Function.Surjective ⇑self.rightHom
The projection map is surjective.
AddGroupExtension
s are equivalent iff there is an isomorphism making a commuting diagram.
Use AddGroupExtension.Equiv.ofMonoidHom
in Mathlib/GroupTheory/GroupExtension/Basic.lean
to
construct an equivalence without providing the inverse map.
- toFun : E → E'
- invFun : E' → E
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
The left-hand side of the diagram commutes.
The right-hand side of the diagram commutes.
Section
of an additive group extension is a right inverse to S.rightHom
.
- toFun : G → E
The underlying function
- rightInverse_rightHom : Function.RightInverse self.toFun ⇑S.rightHom
Splitting
of an additive group extension is a section homomorphism.
- toFun : G → E
- map_add' (x y : G) : (↑self.toAddMonoidHom).toFun (x + y) = (↑self.toAddMonoidHom).toFun x + (↑self.toAddMonoidHom).toFun y
E
acts on N
by conjugation.
Equations
- S.conjAct = { toFun := fun (e : E) => (MonoidHom.ofInjective ⋯).trans (MulEquiv.trans (MulAut.conjNormal e) (MonoidHom.ofInjective ⋯).symm), map_one' := ⋯, map_mul' := ⋯ }
GroupExtension
s are equivalent iff there is an isomorphism making a commuting diagram.
Use GroupExtension.Equiv.ofMonoidHom
in Mathlib/GroupTheory/GroupExtension/Basic.lean
to
construct an equivalence without providing the inverse map.
- toFun : E → E'
- invFun : E' → E
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
The left-hand side of the diagram commutes.
The right-hand side of the diagram commutes.
Equations
- GroupExtension.Equiv.instEquivLike = { coe := fun (equiv : S.Equiv S') => ⇑equiv.toMulEquiv, inv := fun (equiv : S.Equiv S') => ⇑equiv.symm, left_inv := ⋯, right_inv := ⋯, coe_injective' := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
The inverse of an equivalence of group extensions is an equivalence.
The inverse of an equivalence of additive group extensions is an equivalence.
See Note [custom simps projection].
Equations
- GroupExtension.Equiv.Simps.symm_apply equiv = ⇑equiv.symm
See Note [custom simps projection].
Equations
- AddGroupExtension.Equiv.Simps.symm_apply equiv = ⇑equiv.symm
The composition of monoid isomorphisms associated to equivalences of group extensions gives another equivalence.
The composition of monoid isomorphisms associated to equivalences of additive group extensions gives another equivalence.
A group extension is equivalent to itself.
Equations
- GroupExtension.Equiv.refl S = { toMulEquiv := MulEquiv.refl E, inl_comm := ⋯, rightHom_comm := ⋯ }
An additive group extension is equivalent to itself.
Equations
- AddGroupExtension.Equiv.refl S = { toAddEquiv := AddEquiv.refl E, inl_comm := ⋯, rightHom_comm := ⋯ }
Section
of a group extension is a right inverse to S.rightHom
.
- toFun : G → E
The underlying function
- rightInverse_rightHom : Function.RightInverse self.toFun ⇑S.rightHom
Equations
- GroupExtension.Section.instFunLike S = { coe := GroupExtension.Section.toFun, coe_injective' := ⋯ }
Equations
- AddGroupExtension.Section.instFunLike S = { coe := AddGroupExtension.Section.toFun, coe_injective' := ⋯ }
Splitting
of a group extension is a section homomorphism.
- toFun : G → E
- map_mul' (x y : G) : (↑self.toMonoidHom).toFun (x * y) = (↑self.toMonoidHom).toFun x * (↑self.toMonoidHom).toFun y
- rightInverse_rightHom : Function.RightInverse (↑self.toMonoidHom).toFun ⇑S.rightHom
Equations
- GroupExtension.Splitting.instFunLike S = { coe := fun (s : S.Splitting) => (↑s.toMonoidHom).toFun, coe_injective' := ⋯ }
Equations
- AddGroupExtension.Splitting.instFunLike S = { coe := fun (s : S.Splitting) => (↑s.toAddMonoidHom).toFun, coe_injective' := ⋯ }
A splitting of an extension S
is N
-conjugate to another iff there exists n : N
such that
the section homomorphism is a conjugate of the other section homomorphism by S.inl n
.
A splitting of an extension S
is N
-conjugate to another iff there exists n : N
such
that the section homomorphism is a conjugate of the other section homomorphism by S.inl n
.
The group extension associated to the semidirect product
Equations
- SemidirectProduct.toGroupExtension φ = { inl := SemidirectProduct.inl, rightHom := SemidirectProduct.rightHom, inl_injective := ⋯, range_inl_eq_ker_rightHom := ⋯, rightHom_surjective := ⋯ }
A canonical splitting of the group extension associated to the semidirect product
Equations
- SemidirectProduct.inr_splitting φ = { toMonoidHom := SemidirectProduct.inr, rightInverse_rightHom := ⋯ }