mathlib documentation

group_theory.schur_zassenhaus

The Schur-Zassenhaus Theorem #

In this file we prove the Schur-Zassenhaus theorem.

Main results #

noncomputable def add_subgroup.diff {G : Type u_1} [add_group G] {H : add_subgroup G} [H.is_commutative] [fintype (quotient_add_group.quotient H)] (α β : (add_subgroup.left_transversals H)) [hH : H.normal] :

The difference of two left transversals

Equations
noncomputable def subgroup.diff {G : Type u_1} [group G] {H : subgroup G} [H.is_commutative] [fintype (quotient_group.quotient H)] (α β : (subgroup.left_transversals H)) [hH : H.normal] :

The difference of two left transversals

Equations
theorem subgroup.smul_diff_smul {G : Type u_1} [group G] {H : subgroup G} [H.is_commutative] [fintype (quotient_group.quotient H)] (α β : (subgroup.left_transversals H)) [hH : H.normal] (g : G) :
subgroup.diff (g α) (g β) = (g * (subgroup.diff α β)) * g⁻¹, _⟩
theorem subgroup.smul_diff {G : Type u_1} [group G] {H : subgroup G} [H.is_commutative] [fintype (quotient_group.quotient H)] (α β : (subgroup.left_transversals H)) [H.normal] (h : H) :
subgroup.diff (h α) β = (h ^ H.index) * subgroup.diff α β
@[protected, instance]
Equations
def subgroup.quotient_diff {G : Type u_1} [group G] (H : subgroup G) [H.is_commutative] [fintype (quotient_group.quotient H)] [H.normal] :
Type u_1

The quotient of the transversals of an abelian normal N by the diff relation

Equations
@[protected, instance]
Equations
theorem subgroup.exists_smul_eq {G : Type u_1} [group G] {H : subgroup G} [H.is_commutative] [fintype (quotient_group.quotient H)] [fintype H] [H.normal] (α β : H.quotient_diff) (hH : (fintype.card H).coprime H.index) :
∃ (h : H), h α = β

Proof of the Schur-Zassenhaus theorem #

In this section, we prove the Schur-Zassenhaus theorem. The proof is by contradiction. We assume that G is a minimal counterexample to the theorem.

We will arrive at a contradiction via the following steps:

theorem subgroup.schur_zassenhaus_induction.step7 {G : Type u} [group G] [fintype G] {N : subgroup G} [N.normal] (h1 : (fintype.card N).coprime N.index) (h2 : ∀ (G' : Type u) [_inst_4 : group G'] [_inst_5 : fintype G'], fintype.card G' < fintype.card G∀ {N' : subgroup G'} [_inst_6 : N'.normal], (fintype.card N').coprime N'.index(∃ (H' : subgroup G'), N'.is_complement' H')) (h3 : ∀ (H : subgroup G), ¬N.is_complement' H) :

Do not use this lemma: It is made obsolete by exists_right_complement'_of_coprime

Schur-Zassenhaus for normal subgroups: If H : subgroup G is normal, and has order coprime to its index, then there exists a subgroup K which is a (right) complement of H.

theorem subgroup.exists_right_complement'_of_coprime {G : Type u} [group G] {N : subgroup G} [N.normal] (hN : (nat.card N).coprime N.index) :
∃ (H : subgroup G), N.is_complement' H

Schur-Zassenhaus for normal subgroups: If H : subgroup G is normal, and has order coprime to its index, then there exists a subgroup K which is a (right) complement of H.

Schur-Zassenhaus for normal subgroups: If H : subgroup G is normal, and has order coprime to its index, then there exists a subgroup K which is a (left) complement of H.

theorem subgroup.exists_left_complement'_of_coprime {G : Type u} [group G] {N : subgroup G} [N.normal] (hN : (nat.card N).coprime N.index) :
∃ (H : subgroup G), H.is_complement' N

Schur-Zassenhaus for normal subgroups: If H : subgroup G is normal, and has order coprime to its index, then there exists a subgroup K which is a (left) complement of H.