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
.
- inl : N →+ E
The inclusion homomorphism
N →+ E
- rightHom : E →+ G
The projection homomorphism
E →+ G
- inl_injective : Function.Injective ⇑self.inl
The inclusion map is injective.
- range_inl_eq_ker_rightHom : self.inl.range = self.rightHom.ker
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.
Instances For
GroupExtension N E G
is a short exact sequence of groups 1 → N → E → G → 1
.
- inl : N →* E
The inclusion homomorphism
N →* E
- rightHom : E →* G
The projection homomorphism
E →* G
- inl_injective : Function.Injective ⇑self.inl
The inclusion map is injective.
- range_inl_eq_ker_rightHom : self.inl.range = self.rightHom.ker
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.
Instances For
AddGroupExtension
s are equivalent iff there is a homomorphism making a commuting diagram.
- toFun : E → E'
- inl_comm : self.comp S.inl = S'.inl
The left-hand side of the diagram commutes.
- rightHom_comm : S'.rightHom.comp self.toAddMonoidHom = S.rightHom
The right-hand side of the diagram commutes.
Instances For
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
Instances For
Splitting
of an additive group extension is a section homomorphism.
- toFun : G → E
- rightInverse_rightHom : Function.RightInverse (↑self.toAddMonoidHom).toFun ⇑S.rightHom
Instances For
The range of the inclusion map is a normal subgroup.
The range of the inclusion map is a normal additive subgroup.
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' := ⋯ }
Instances For
GroupExtension
s are equivalent iff there is a homomorphism making a commuting diagram.
- toFun : E → E'
- inl_comm : self.comp S.inl = S'.inl
The left-hand side of the diagram commutes.
- rightHom_comm : S'.rightHom.comp self.toMonoidHom = S.rightHom
The right-hand side of the diagram commutes.
Instances For
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
Instances For
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
- rightInverse_rightHom : Function.RightInverse (↑self.toMonoidHom).toFun ⇑S.rightHom
Instances For
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
.
Instances For
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
.
Instances For
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 := ⋯ }
Instances For
A canonical splitting of the group extension associated to the semidirect product
Equations
- SemidirectProduct.inr_splitting φ = { toMonoidHom := SemidirectProduct.inr, rightInverse_rightHom := ⋯ }