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 ofGbyNas short exact sequences1 → N → E → G → 1(0 → N → E → G → 0for additive groups)(Add?)GroupExtension.Equiv S S': structure for equivalences of two group extensionsSandS'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 torightHomof a group extensionSofGbyN(Add?)GroupExtension.Splitting S: structure for section homomorphisms of a group extensionSofGbyNSemidirectProduct.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 φ).SplittingandgroupCohomology.H1(which will be available inGroupTheory/GroupExtension/Abelian.leanto 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 →+ EThe 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.
Instances For
GroupExtension N E G is a short exact sequence of groups 1 → N → E → G → 1.
The inclusion homomorphism
N →* EThe 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.
Instances For
AddGroupExtensions are equivalent iff there is a homomorphism making a commuting diagram.
- toFun : E → E'
- map_add' (x y : E) : (↑self.toAddMonoidHom).toFun (x + y) = (↑self.toAddMonoidHom).toFun x + (↑self.toAddMonoidHom).toFun y
The left-hand side of the diagram commutes.
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
- map_add' (x y : G) : (↑self.toAddMonoidHom).toFun (x + y) = (↑self.toAddMonoidHom).toFun x + (↑self.toAddMonoidHom).toFun y
Instances For
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
GroupExtensions are equivalent iff there is a homomorphism making a commuting diagram.
- toFun : E → E'
- map_mul' (x y : E) : (↑self.toMonoidHom).toFun (x * y) = (↑self.toMonoidHom).toFun x * (↑self.toMonoidHom).toFun y
The left-hand side of the diagram commutes.
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
- 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
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 := ⋯ }