The Krasner–Kaloujnine embedding #
For a group G and a normal subgroup N, the Krasner–Kaloujnine homomorphism
krasnerKaloujnineHom : G →* N ≀ᵣ (G ⧸ N) into Mathlib's regular wreath product is
injective (krasnerKaloujnine_injective). Combined with the bridge of
MonoidWreathBridge.lean, group_sgdiv_via_normal shows that G divides
WreathProduct N (G ⧸ N) (G ⧸ N); this is the step that splits a finite group along a
normal series.
Implementation notes #
The embedding needs a section s : G ⧸ N → G of the quotient map, obtained noncomputably
via Function.surjInv. The component n_g(q) := s(q)⁻¹ * g * s(π(g)⁻¹ * q) lies in N
because its image under π is q⁻¹ * π(g) * π(g)⁻¹ * q = 1.
Krasner-Kaloujnine universal embedding #
The "left component" of the Krasner-Kaloujnine homomorphism, before showing
it lands in N.
Equations
- LeanPool.KrohnRhodes.krasnerLeftRaw N g q = (LeanPool.KrohnRhodes.section_ N q)⁻¹ * g * LeanPool.KrohnRhodes.section_ N (((QuotientGroup.mk' N) g)⁻¹ * q)
Instances For
krasnerLeftRaw g q lies in N (kernel of the quotient map).
The Krasner-Kaloujnine map G → N ≀ᵣ (G ⧸ N) (as bare data).
Equations
- LeanPool.KrohnRhodes.krasnerKaloujnineFun N g = { left := LeanPool.KrohnRhodes.krasnerLeft N g, right := (QuotientGroup.mk' N) g }
Instances For
Multiplicativity of the Krasner-Kaloujnine map.
Triviality at 1 of the Krasner-Kaloujnine map.
The Krasner-Kaloujnine universal embedding G →* N ≀ᵣ (G ⧸ N).
Equations
- LeanPool.KrohnRhodes.krasnerKaloujnineHom N = { toFun := LeanPool.KrohnRhodes.krasnerKaloujnineFun N, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Injectivity of the Krasner-Kaloujnine embedding.
From the embedding to SgDiv #
For a group G with a normal subgroup N, G divides
WreathProduct N (G/N) (G/N) as a semigroup.