@@ -4,16 +4,21 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Jordan Brown, Thomas Browning, Patrick Lutz
5
5
-/
6
6
import Mathlib.Algebra.Group.Subgroup.Finite
7
+ import Mathlib.Algebra.Group.Subgroup.ZPowers.Lemmas
7
8
import Mathlib.GroupTheory.Commutator.Basic
8
- import Mathlib.GroupTheory.Finiteness
9
+ import Mathlib.GroupTheory.GroupAction.Quotient
9
10
import Mathlib.GroupTheory.Index
10
11
11
12
/-!
13
+ # Extra lemmas about commutators
14
+
12
15
The commutator of a finite direct product is contained in the direct product of the commutators.
13
16
-/
14
17
18
+ open QuotientGroup
15
19
16
20
namespace Subgroup
21
+ variable {G : Type *} [Group G]
17
22
18
23
/-- The commutator of a finite direct product is contained in the direct product of the commutators.
19
24
-/
@@ -34,7 +39,34 @@ theorem commutator_pi_pi_of_finite {η : Type*} [Finite η] {Gs : η → Type*}
34
39
simpa using hx
35
40
· simp [h, one_mem]
36
41
37
- variable (G : Type *) [Group G] [Group.FG G] [Finite (commutatorSet G)]
42
+ /-- Cosets of the centralizer of an element embed into the set of commutators. -/
43
+ noncomputable def quotientCentralizerEmbedding (g : G) :
44
+ G ⧸ centralizer (zpowers (g : G)) ↪ commutatorSet G :=
45
+ ((MulAction.orbitEquivQuotientStabilizer (ConjAct G) g).trans
46
+ (quotientEquivOfEq (ConjAct.stabilizer_eq_centralizer g))).symm.toEmbedding.trans
47
+ ⟨fun x =>
48
+ ⟨x * g⁻¹,
49
+ let ⟨_, x, rfl⟩ := x
50
+ ⟨x, g, rfl⟩⟩,
51
+ fun _ _ => Subtype.ext ∘ mul_right_cancel ∘ Subtype.ext_iff.mp⟩
52
+
53
+ theorem quotientCentralizerEmbedding_apply (g : G) (x : G) :
54
+ quotientCentralizerEmbedding g x = ⟨⁅x, g⁆, x, g, rfl⟩ :=
55
+ rfl
56
+
57
+ /-- If `G` is generated by `S`, then the quotient by the center embeds into `S`-indexed sequences
58
+ of commutators. -/
59
+ noncomputable def quotientCenterEmbedding {S : Set G} (hS : closure S = ⊤) :
60
+ G ⧸ center G ↪ S → commutatorSet G :=
61
+ (quotientEquivOfEq (center_eq_infi' S hS)).toEmbedding.trans
62
+ ((quotientiInfEmbedding _).trans
63
+ (Function.Embedding.piCongrRight fun g => quotientCentralizerEmbedding (g : G)))
64
+
65
+ theorem quotientCenterEmbedding_apply {S : Set G} (hS : closure S = ⊤) (g : G) (s : S) :
66
+ quotientCenterEmbedding hS g s = ⟨⁅g, s⁆, g, s, rfl⟩ :=
67
+ rfl
68
+
69
+ variable [Group.FG G] [Finite (commutatorSet G)]
38
70
39
71
instance finiteIndex_center : FiniteIndex (center G) := by
40
72
obtain ⟨S, -, hS⟩ := Group.rank_spec G
0 commit comments