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.
Instances For
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.
Instances For
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.
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
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.
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
- equiv.trans equiv' = { toMulEquiv := equiv.trans equiv'.toMulEquiv, inl_comm := ⋯, rightHom_comm := ⋯ }
Instances For
The composition of monoid isomorphisms associated to equivalences of additive group extensions gives another equivalence.
Equations
- equiv.trans equiv' = { toAddEquiv := equiv.trans equiv'.toAddEquiv, inl_comm := ⋯, rightHom_comm := ⋯ }
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 := ⋯ }