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 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.
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 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.
Instances For
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.
Instances For
The inverse of an equivalence of additive group extensions is an equivalence.
Instances For
See Note [custom simps projection].
Equations
- GroupExtension.Equiv.Simps.symm_apply equiv = ⇑equiv.symm
Instances For
See Note [custom simps projection].
Equations
- AddGroupExtension.Equiv.Simps.symm_apply equiv = ⇑equiv.symm
Instances For
The composition of monoid isomorphisms associated to equivalences of group extensions gives another equivalence.
Equations
Instances For
The composition of monoid isomorphisms associated to equivalences of additive group extensions gives another equivalence.
Equations
Instances For
A group extension is equivalent to itself.
Equations
- GroupExtension.Equiv.refl S = { toMulEquiv := MulEquiv.refl E, inl_comm := ⋯, rightHom_comm := ⋯ }
Instances For
An additive group extension is equivalent to itself.
Equations
- AddGroupExtension.Equiv.refl S = { toAddEquiv := AddEquiv.refl E, inl_comm := ⋯, rightHom_comm := ⋯ }
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 := ⋯ }