@@ -5,12 +5,11 @@ Authors: Aaron Anderson, Antoine Chambert-Loir
55-/
66module
77
8- public import Mathlib.Algebra.Ring.CharZero
98public import Mathlib.Data.Fintype.Units
109public import Mathlib.GroupTheory.IndexNormal
10+ public import Mathlib.GroupTheory.Perm.ConjAct
1111public import Mathlib.GroupTheory.Perm.Fin
1212public import Mathlib.GroupTheory.Subgroup.Simple
13- public import Mathlib.Logic.Equiv.Fin.Rotate
1413public import Mathlib.Tactic.IntervalCases
1514
1615/-!
@@ -205,8 +204,19 @@ theorem closure_three_cycles_eq_alternating :
205204 rw [List.prod_cons, List.prod_cons, ← mul_assoc]
206205 apply mul_mem <;> grind [IsSwap.mul_mem_closure_three_cycles]
207206
207+ theorem isThreeCycle_subset_alternatingGroup :
208+ {g : Perm α | g.IsThreeCycle} ⊆ alternatingGroup α :=
209+ fun _ ↦ IsThreeCycle.mem_alternatingGroup
210+
211+ theorem _root_.alternatingGroup.closure_isThreeCycles_eq_top :
212+ Subgroup.closure {g : alternatingGroup α | Equiv.Perm.IsThreeCycle (g : Equiv.Perm α)} = ⊤ := by
213+ rw [← map_subtype_inj, MonoidHom.map_closure]
214+ have : (alternatingGroup α).subtype '' _ = {g : Perm α | IsThreeCycle g} :=
215+ Subtype.coe_image_of_subset isThreeCycle_subset_alternatingGroup
216+ aesop
217+
208218/-- The alternating group is the closure of the set of permutations with cycle type (2, 2). -/
209- theorem closure_cycleType_eq_2_2_eq_alternatingGroup (h5 : 5 ≤ Nat.card α) :
219+ theorem closure_cycleType_eq_two_two_eq_alternatingGroup (h5 : 5 ≤ Nat.card α) :
210220 Subgroup.closure {g : Perm α | g.cycleType = {2 , 2 }} = alternatingGroup α := by
211221 apply le_antisymm
212222 · rw [Subgroup.closure_le]
@@ -227,6 +237,24 @@ theorem closure_cycleType_eq_2_2_eq_alternatingGroup (h5 : 5 ≤ Nat.card α) :
227237 · apply Subgroup.subset_closure
228238 exact cycleType_swap_mul_swap_of_nodup (by grind [Finset.mem_compl])
229239
240+ @ [deprecated (since := "2026-03-10" )]
241+ alias closure_cycleType_eq_2_2_eq_alternatingGroup :=
242+ closure_cycleType_eq_two_two_eq_alternatingGroup
243+
244+ theorem cycleType_eq_two_two_subset_alternatingGroup :
245+ {g : Perm α | g.cycleType = {2 , 2 }} ⊆ alternatingGroup α := by
246+ intro g hg
247+ rw [Set.mem_setOf_eq] at hg
248+ simp [sign_of_cycleType, hg, ← Units.val_inj]
249+
250+ theorem _root_.alternatingGroup.closure_cycleType_eq_two_two_eq_top (h5 : 5 ≤ Nat.card α) :
251+ Subgroup.closure {g : alternatingGroup α | (g : Perm α).cycleType = {2 , 2 }} = ⊤ := by
252+ rw [← map_subtype_inj, MonoidHom.map_closure]
253+ have : (alternatingGroup α).subtype '' _ = {g : Perm α | g.cycleType = {2 , 2 }} :=
254+ Subtype.coe_image_of_subset cycleType_eq_two_two_subset_alternatingGroup
255+ have := closure_cycleType_eq_two_two_eq_alternatingGroup h5
256+ aesop
257+
230258/-- A key lemma to prove $A_5$ is simple. Shows that any normal subgroup of an alternating group on
231259 at least 5 elements is the entire alternating group if it contains a 3-cycle. -/
232260theorem IsThreeCycle.alternating_normalClosure (h5 : 5 ≤ Fintype.card α) {f : Perm α}
@@ -437,6 +465,43 @@ theorem center_eq_bot (hα4 : 4 ≤ Nat.card α) :
437465 simp only [← Subgroup.mk_smul k this, ← mul_smul, hg']
438466 simp [k, hc.2 .symm, hd.2 .symm]
439467
468+ /-- The element of `alternatingGroup α` induced by an element
469+ of `alternatingGroup s`, when `s : Finset α`. -/
470+ def ofSubtype (s : Finset α) : alternatingGroup s →* alternatingGroup α where
471+ toFun x := ⟨Perm.ofSubtype (x : Perm s), by
472+ rw [mem_alternatingGroup, sign_ofSubtype, mem_alternatingGroup.mp x.prop]⟩
473+ map_mul' := by simp
474+ map_one' := by simp
475+
476+ theorem map_ofSubtype (s : Finset α) :
477+ (alternatingGroup s).map (Perm.ofSubtype : Perm s →* Perm α) =
478+ (Perm.ofSubtype : Perm s →* Perm α).range ⊓ (alternatingGroup α) := by
479+ ext k
480+ rw [Subgroup.mem_map, Subgroup.mem_inf, MonoidHom.mem_range]
481+ grind [sign_ofSubtype, mem_alternatingGroup]
482+
483+ theorem ofSubtype_comp_subtype (s : Finset α) : (alternatingGroup α).subtype.comp (ofSubtype s) =
484+ Perm.ofSubtype.comp (alternatingGroup s).subtype := by
485+ rfl
486+
487+ theorem range_ofSubtype (s : Finset α) : (ofSubtype s).range =
488+ (Perm.ofSubtype (p := (· ∈ s))).range.subgroupOf (alternatingGroup α) := by
489+ rw [← map_subtype_inj, ← MonoidHom.range_comp, ofSubtype_comp_subtype, MonoidHom.range_comp,
490+ range_subtype, subgroupOf_map_subtype, map_ofSubtype]
491+
492+ theorem mem_range_ofSubtype_iff (s : Finset α) (k : alternatingGroup α) :
493+ k ∈ (ofSubtype s).range ↔ (k : Perm α).support ⊆ s := by
494+ rw [range_ofSubtype, mem_subgroupOf, Perm.mem_range_ofSubtype_iff]
495+ simp
496+
497+ open Pointwise in
498+ theorem conj_smul_range_ofSubtype (s : Finset α) (g : alternatingGroup α) :
499+ MulAut.conj g • (ofSubtype s).range = (ofSubtype (g • s)).range := by
500+ ext k
501+ simp_rw [mem_pointwise_smul_iff_inv_smul_mem, mem_range_ofSubtype_iff, ← map_inv,
502+ MulAut.smul_def, ← ConjAct.toConjAct_smul_eq_mulAut_conj, ConjAct.coe_smul]
503+ simp [support_conj_eq_smul_support, Finset.subset_smul_finset_iff, Subgroup.smul_def]
504+
440505end alternatingGroup
441506
442507namespace Equiv.Perm
0 commit comments