Module

SplitSemidirect.lean

Nyll.ProCGroups.GroupTheory.SplitSemidirect
3 declarations indexed from sourceView source ↗

A split homomorphism as its kernel semidirect product

The section acts on the actual kernel by conjugation. Multiplication of a kernel element by the image of the section reconstructs the original group. No commutativity or finiteness assumption is required.

Imports2
  • Mathlib.GroupTheory.SemidirectProduct
  • Mathlib.Algebra.Group.Hom.Basic
Imported by2

Declarations

ProCGroups.splitKernelSemidirectMulEquiv

A section identifies the kernel semidirect product with the original group, using conjugation by that same section as the action.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe uE uB
variable {E : Type uE} [Group E] {B : Type uB} [Group B]
def splitKernelSemidirectMulEquiv
    (α : E →* B) (s : B →* E) (hs : α.comp s = MonoidHom.id B) :
    α.ker ⋊[(MulAut.conjNormal : E →* MulAut α.ker).comp s] B ≃* E
ProCGroups.splitKernelSemidirectMulEquiv_apply

The equivalence is the actual multiplication map determined by the section.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe uE uB
variable {E : Type uE} [Group E] {B : Type uB} [Group B]
theorem splitKernelSemidirectMulEquiv_apply
    (α : E →* B) (s : B →* E) (hs : α.comp s = MonoidHom.id B)
    (a : α.ker) (b : B) :
    splitKernelSemidirectMulEquiv α s hs ⟨a, b⟩ = (a : E) * s b
ProCGroups.splitKernelSemidirectMulEquiv_commutes

The equivalence intertwines the original epimorphism and the projection to the second semidirect-product coordinate.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe uE uB
variable {E : Type uE} [Group E] {B : Type uB} [Group B]
theorem splitKernelSemidirectMulEquiv_commutes
    (α : E →* B) (s : B →* E) (hs : α.comp s = MonoidHom.id B)
    (x : α.ker ⋊[(MulAut.conjNormal : E →* MulAut α.ker).comp s] B) :
    α (splitKernelSemidirectMulEquiv α s hs x) = x.right