Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 1447c40

Browse files
committed
refactor(group_theory/general_commutator): Rename general_commutator to subgroup.commutator (#12308)
This PR renames `general_commutator` to `subgroup.commutator`. I'll change the file name in a followup PR, so that this PR is easier to review. (This is one of the several orthogonal changes from #12134)
1 parent 92cbcc3 commit 1447c40

File tree

4 files changed

+64
-63
lines changed

4 files changed

+64
-63
lines changed

src/group_theory/abelianization.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ lemma commutator_def : commutator G = ⁅(⊤ : subgroup G), ⊤⁆ := rfl
3838

3939
lemma commutator_eq_closure :
4040
commutator G = subgroup.closure {x | ∃ p q, p * q * p⁻¹ * q⁻¹ = x} :=
41-
by simp_rw [commutator, general_commutator_def, subgroup.mem_top, exists_true_left]
41+
by simp_rw [commutator, subgroup.commutator_def, subgroup.mem_top, exists_true_left]
4242

4343
lemma commutator_eq_normal_closure :
4444
commutator G = subgroup.normal_closure {x | ∃ p q, p * q * p⁻¹ * q⁻¹ = x} :=
45-
by simp_rw [commutator, general_commutator_def', subgroup.mem_top, exists_true_left]
45+
by simp_rw [commutator, subgroup.commutator_def', subgroup.mem_top, exists_true_left]
4646

4747
/-- The abelianization of G is the quotient of G by its commutator subgroup. -/
4848
def abelianization : Type u :=

src/group_theory/general_commutator.lean

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,33 @@ import group_theory.subgroup.basic
99
import tactic.group
1010

1111
/-!
12-
# General commutators.
12+
# Commutators of Subgroups
1313
14-
If `G` is a group and `H₁ H₂ : subgroup G` then the general commutator `⁅H₁, H₂⁆ : subgroup G`
14+
If `G` is a group and `H₁ H₂ : subgroup G` then the commutator `⁅H₁, H₂⁆ : subgroup G`
1515
is the subgroup of `G` generated by the commutators `h₁ * h₂ * h₁⁻¹ * h₂⁻¹`.
1616
1717
## Main definitions
1818
19-
* `general_commutator H₁ H₂` : the commutator of the subgroups `H₁` and `H₂`
19+
* `⁅H₁, H₂` : the commutator of the subgroups `H₁` and `H₂`.
2020
-/
2121

22-
open subgroup
22+
namespace subgroup
2323

2424
variables {G G' : Type*} [group G] [group G'] {f : G →* G'}
2525

2626
/-- The commutator of two subgroups `H₁` and `H₂`. -/
27-
instance general_commutator : has_bracket (subgroup G) (subgroup G) :=
27+
instance commutator : has_bracket (subgroup G) (subgroup G) :=
2828
⟨λ H₁ H₂, closure {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x}⟩
2929

30-
lemma general_commutator_def (H₁ H₂ : subgroup G) :
30+
lemma commutator_def (H₁ H₂ : subgroup G) :
3131
⁅H₁, H₂⁆ = closure {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x} := rfl
3232

33-
instance general_commutator_normal (H₁ H₂ : subgroup G) [h₁ : H₁.normal]
33+
instance commutator_normal (H₁ H₂ : subgroup G) [h₁ : H₁.normal]
3434
[h₂ : H₂.normal] : normal ⁅H₁, H₂⁆ :=
3535
begin
3636
let base : set G := {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x},
3737
suffices h_base : base = group.conjugates_of_set base,
38-
{ dsimp only [general_commutator_def, ←base],
38+
{ dsimp only [commutator_def, ←base],
3939
rw h_base,
4040
exact subgroup.normal_closure_normal },
4141
apply set.subset.antisymm group.subset_conjugates_of_set,
@@ -45,124 +45,125 @@ begin
4545
exact ⟨d * c * d⁻¹, h₁.conj_mem c hc d, d * e * d⁻¹, h₂.conj_mem e he d, by group⟩,
4646
end
4747

48-
lemma general_commutator_mono {H₁ H₂ K₁ K₂ : subgroup G} (h₁ : H₁ ≤ K₁) (h₂ : H₂ ≤ K₂) :
48+
lemma commutator_mono {H₁ H₂ K₁ K₂ : subgroup G} (h₁ : H₁ ≤ K₁) (h₂ : H₂ ≤ K₂) :
4949
⁅H₁, H₂⁆ ≤ ⁅K₁, K₂⁆ :=
5050
begin
5151
apply closure_mono,
5252
rintros x ⟨p, hp, q, hq, rfl⟩,
5353
exact ⟨p, h₁ hp, q, h₂ hq, rfl⟩,
5454
end
5555

56-
lemma general_commutator_def' (H₁ H₂ : subgroup G) [H₁.normal] [H₂.normal] :
56+
lemma commutator_def' (H₁ H₂ : subgroup G) [H₁.normal] [H₂.normal] :
5757
⁅H₁, H₂⁆ = normal_closure {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x} :=
58-
by rw [← normal_closure_eq_self ⁅H₁, H₂⁆, general_commutator_def,
59-
normal_closure_closure_eq_normal_closure]
58+
by rw [← normal_closure_eq_self ⁅H₁, H₂⁆, commutator_def, normal_closure_closure_eq_normal_closure]
6059

61-
lemma general_commutator_le (H₁ H₂ : subgroup G) (K : subgroup G) :
60+
lemma commutator_le (H₁ H₂ : subgroup G) (K : subgroup G) :
6261
⁅H₁, H₂⁆ ≤ K ↔ ∀ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ ∈ K :=
6362
begin
64-
rw [general_commutator, closure_le],
63+
rw [subgroup.commutator, closure_le],
6564
split,
6665
{ intros h p hp q hq,
6766
exact h ⟨p, hp, q, hq, rfl⟩, },
6867
{ rintros h x ⟨p, hp, q, hq, rfl⟩,
6968
exact h p hp q hq, }
7069
end
7170

72-
lemma general_commutator_containment (H₁ H₂ : subgroup G) {p q : G} (hp : p ∈ H₁) (hq : q ∈ H₂) :
71+
lemma commutator_containment (H₁ H₂ : subgroup G) {p q : G} (hp : p ∈ H₁) (hq : q ∈ H₂) :
7372
p * q * p⁻¹ * q⁻¹ ∈ ⁅H₁, H₂⁆ :=
74-
(general_commutator_le H₁ H₂ ⁅H₁, H₂⁆).mp (le_refl ⁅H₁, H₂⁆) p hp q hq
73+
(commutator_le H₁ H₂ ⁅H₁, H₂⁆).mp (le_refl ⁅H₁, H₂⁆) p hp q hq
7574

76-
lemma general_commutator_comm (H₁ H₂ : subgroup G) : ⁅H₁, H₂⁆ = ⁅H₂, H₁⁆ :=
75+
lemma commutator_comm (H₁ H₂ : subgroup G) : ⁅H₁, H₂⁆ = ⁅H₂, H₁⁆ :=
7776
begin
7877
suffices : ∀ H₁ H₂ : subgroup G, ⁅H₁, H₂⁆ ≤ ⁅H₂, H₁⁆, { exact le_antisymm (this _ _) (this _ _) },
7978
intros H₁ H₂,
80-
rw general_commutator_le,
79+
rw commutator_le,
8180
intros p hp q hq,
8281
have h : (p * q * p⁻¹ * q⁻¹)⁻¹ ∈ ⁅H₂, H₁⁆ := subset_closure ⟨q, hq, p, hp, by group⟩,
8382
convert inv_mem ⁅H₂, H₁⁆ h,
8483
group,
8584
end
8685

87-
lemma general_commutator_le_right (H₁ H₂ : subgroup G) [h : normal H₂] :
86+
lemma commutator_le_right (H₁ H₂ : subgroup G) [h : normal H₂] :
8887
⁅H₁, H₂⁆ ≤ H₂ :=
8988
begin
90-
rw general_commutator_le,
89+
rw commutator_le,
9190
intros p hp q hq,
9291
exact mul_mem H₂ (h.conj_mem q hq p) (inv_mem H₂ hq),
9392
end
9493

95-
lemma general_commutator_le_left (H₁ H₂ : subgroup G) [h : normal H₁] :
94+
lemma commutator_le_left (H₁ H₂ : subgroup G) [h : normal H₁] :
9695
⁅H₁, H₂⁆ ≤ H₁ :=
9796
begin
98-
rw general_commutator_comm,
99-
exact general_commutator_le_right H₂ H₁,
97+
rw commutator_comm,
98+
exact commutator_le_right H₂ H₁,
10099
end
101100

102-
@[simp] lemma general_commutator_bot (H : subgroup G) : ⁅H, ⊥⁆ = (⊥ : subgroup G) :=
103-
by { rw eq_bot_iff, exact general_commutator_le_right H ⊥ }
101+
@[simp] lemma commutator_bot (H : subgroup G) : ⁅H, ⊥⁆ = (⊥ : subgroup G) :=
102+
by { rw eq_bot_iff, exact commutator_le_right H ⊥ }
104103

105-
@[simp] lemma bot_general_commutator (H : subgroup G) : ⁅(⊥ : subgroup G), H⁆ = (⊥ : subgroup G) :=
106-
by { rw eq_bot_iff, exact general_commutator_le_left ⊥ H }
104+
@[simp] lemma bot_commutator (H : subgroup G) : ⁅(⊥ : subgroup G), H⁆ = (⊥ : subgroup G) :=
105+
by { rw eq_bot_iff, exact commutator_le_left ⊥ H }
107106

108-
lemma general_commutator_le_inf (H₁ H₂ : subgroup G) [normal H₁] [normal H₂] :
107+
lemma commutator_le_inf (H₁ H₂ : subgroup G) [normal H₁] [normal H₂] :
109108
⁅H₁, H₂⁆ ≤ H₁ ⊓ H₂ :=
110-
by simp only [general_commutator_le_left, general_commutator_le_right, le_inf_iff, and_self]
109+
by simp only [commutator_le_left, commutator_le_right, le_inf_iff, and_self]
111110

112-
lemma map_general_commutator {G₂ : Type*} [group G₂] (f : G →* G₂) (H₁ H₂ : subgroup G) :
111+
lemma map_commutator {G₂ : Type*} [group G₂] (f : G →* G₂) (H₁ H₂ : subgroup G) :
113112
map f ⁅H₁, H₂⁆ = ⁅map f H₁, map f H₂⁆ :=
114113
begin
115114
apply le_antisymm,
116-
{ rw [gc_map_comap, general_commutator_le],
115+
{ rw [gc_map_comap, commutator_le],
117116
intros p hp q hq,
118117
simp only [mem_comap, map_inv, map_mul],
119-
exact general_commutator_containment _ _ (mem_map_of_mem _ hp) (mem_map_of_mem _ hq), },
120-
{ rw [general_commutator_le],
118+
exact commutator_containment _ _ (mem_map_of_mem _ hp) (mem_map_of_mem _ hq), },
119+
{ rw [commutator_le],
121120
rintros _ ⟨p, hp, rfl⟩ _ ⟨q, hq, rfl⟩,
122121
simp only [← map_inv, ← map_mul],
123-
exact mem_map_of_mem _ (general_commutator_containment _ _ hp hq), }
122+
exact mem_map_of_mem _ (commutator_containment _ _ hp hq), }
124123
end
125124

126-
lemma general_commutator_prod_prod {G₂ : Type*} [group G₂]
125+
lemma commutator_prod_prod {G₂ : Type*} [group G₂]
127126
(H₁ K₁ : subgroup G) (H₂ K₂ : subgroup G₂) :
128127
⁅H₁.prod H₂, K₁.prod K₂⁆ = ⁅H₁, K₁⁆.prod ⁅H₂, K₂⁆ :=
129128
begin
130129
apply le_antisymm,
131-
{ rw general_commutator_le,
130+
{ rw commutator_le,
132131
rintros ⟨p₁, p₂⟩ ⟨hp₁, hp₂⟩ ⟨q₁, q₂⟩ ⟨hq₁, hq₂⟩,
133-
exact ⟨general_commutator_containment _ _ hp₁ hq₁, general_commutator_containment _ _ hp₂ hq₂⟩},
132+
exact ⟨commutator_containment _ _ hp₁ hq₁, commutator_containment _ _ hp₂ hq₂⟩},
134133
{ rw prod_le_iff, split;
135-
{ rw map_general_commutator,
136-
apply general_commutator_mono;
134+
{ rw map_commutator,
135+
apply commutator_mono;
137136
simp [le_prod_iff, map_map, monoid_hom.fst_comp_inl, monoid_hom.snd_comp_inl,
138137
monoid_hom.fst_comp_inr, monoid_hom.snd_comp_inr ], }, }
139138
end
140139

141140
/-- The commutator of direct product is contained in the direct product of the commutators.
142141
143-
See `general_commutator_pi_pi_of_fintype` for equality given `fintype η`.
142+
See `commutator_pi_pi_of_fintype` for equality given `fintype η`.
144143
-/
145-
lemma general_commutator_pi_pi_le {η : Type*} {Gs : η → Type*} [∀ i, group (Gs i)]
144+
lemma commutator_pi_pi_le {η : Type*} {Gs : η → Type*} [∀ i, group (Gs i)]
146145
(H K : Π i, subgroup (Gs i)) :
147146
⁅subgroup.pi set.univ H, subgroup.pi set.univ K⁆ ≤ subgroup.pi set.univ (λ i, ⁅H i, K i⁆) :=
148-
(general_commutator_le _ _ _).mpr $
149-
λ p hp q hq i hi, general_commutator_containment _ _ (hp i hi) (hq i hi)
147+
(commutator_le _ _ _).mpr $
148+
λ p hp q hq i hi, commutator_containment _ _ (hp i hi) (hq i hi)
150149

151150
/-- The commutator of a finite direct product is contained in the direct product of the commutators.
152151
-/
153-
lemma general_commutator_pi_pi_of_fintype {η : Type*} [fintype η] {Gs : η → Type*}
152+
lemma commutator_pi_pi_of_fintype {η : Type*} [fintype η] {Gs : η → Type*}
154153
[∀ i, group (Gs i)] (H K : Π i, subgroup (Gs i)) :
155154
⁅subgroup.pi set.univ H, subgroup.pi set.univ K⁆ = subgroup.pi set.univ (λ i, ⁅H i, K i⁆) :=
156155
begin
157156
classical,
158-
apply le_antisymm (general_commutator_pi_pi_le H K),
157+
apply le_antisymm (commutator_pi_pi_le H K),
159158
{ rw pi_le_iff, intros i hi,
160-
rw map_general_commutator,
161-
apply general_commutator_mono;
159+
rw map_commutator,
160+
apply commutator_mono;
162161
{ rw le_pi_iff,
163162
intros j hj,
164163
rintros _ ⟨_, ⟨x, hx, rfl⟩, rfl⟩,
165164
by_cases h : j = i,
166165
{ subst h, simpa using hx, },
167166
{ simp [h, one_mem] }, }, },
168167
end
168+
169+
end subgroup

src/group_theory/nilpotent.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ instance (n : ℕ) : normal (lower_central_series G n) :=
290290
begin
291291
induction n with d hd,
292292
{ exact (⊤ : subgroup G).normal_of_characteristic },
293-
{ exactI general_commutator_normal (lower_central_series G d) ⊤ },
293+
{ exactI subgroup.commutator_normal (lower_central_series G d) ⊤ },
294294
end
295295

296296
lemma lower_central_series_antitone :
@@ -313,7 +313,7 @@ theorem lower_central_series_is_descending_central_series :
313313
begin
314314
split, refl,
315315
intros x n hxn g,
316-
exact general_commutator_containment _ _ hxn (subgroup.mem_top g),
316+
exact commutator_containment _ _ hxn (mem_top g),
317317
end
318318

319319
/-- Any descending central series for a group is bounded below by the lower central series. -/
@@ -322,7 +322,7 @@ lemma descending_central_series_ge_lower (H : ℕ → subgroup G)
322322
| 0 := hH.1.symm ▸ le_refl ⊤
323323
| (n + 1) := begin
324324
specialize descending_central_series_ge_lower n,
325-
apply (general_commutator_le _ _ _).2,
325+
apply (commutator_le _ _ _).2,
326326
intros x hx q _,
327327
exact hH.2 x n (descending_central_series_ge_lower hx) q,
328328
end
@@ -671,7 +671,7 @@ end
671671

672672

673673
lemma derived_le_lower_central (n : ℕ) : derived_series G n ≤ lower_central_series G n :=
674-
by { induction n with i ih, { simp }, { apply general_commutator_mono ih, simp } }
674+
by { induction n with i ih, { simp }, { apply commutator_mono ih, simp } }
675675

676676
/-- Abelian groups are nilpotent -/
677677
@[priority 100]
@@ -715,7 +715,7 @@ begin
715715
... = ⁅(lower_central_series G₁ n).prod (lower_central_series G₂ n), (⊤ : subgroup G₁).prod ⊤⁆ :
716716
by simp
717717
... = ⁅lower_central_series G₁ n, (⊤ : subgroup G₁)⁆.prod ⁅lower_central_series G₂ n, ⊤⁆ :
718-
general_commutator_prod_prod _ _ _ _
718+
commutator_prod_prod _ _ _ _
719719
... = (lower_central_series G₁ n.succ).prod (lower_central_series G₂ n.succ) : rfl }
720720
end
721721

@@ -755,9 +755,9 @@ begin
755755
{ simp [pi_top] },
756756
{ calc lower_central_series (Π i, Gs i) n.succ
757757
= ⁅lower_central_series (Π i, Gs i) n, ⊤⁆ : rfl
758-
... ≤ ⁅pi (λ i, (lower_central_series (Gs i) n)), ⊤⁆ : general_commutator_mono ih (le_refl _)
758+
... ≤ ⁅pi (λ i, (lower_central_series (Gs i) n)), ⊤⁆ : commutator_mono ih (le_refl _)
759759
... = ⁅pi (λ i, (lower_central_series (Gs i) n)), pi (λ i, ⊤)⁆ : by simp [pi, pi_top]
760-
... ≤ pi (λ i, ⁅(lower_central_series (Gs i) n), ⊤⁆) : general_commutator_pi_pi_le _ _
760+
... ≤ pi (λ i, ⁅(lower_central_series (Gs i) n), ⊤⁆) : commutator_pi_pi_le _ _
761761
... = pi (λ i, lower_central_series (Gs i) n.succ) : rfl }
762762
end
763763

@@ -793,7 +793,7 @@ begin
793793
= ⁅lower_central_series (Π i, Gs i) n, ⊤⁆ : rfl
794794
... = ⁅pi (λ i, (lower_central_series (Gs i) n)), ⊤⁆ : by rw ih
795795
... = ⁅pi (λ i, (lower_central_series (Gs i) n)), pi (λ i, ⊤)⁆ : by simp [pi, pi_top]
796-
... = pi (λ i, ⁅(lower_central_series (Gs i) n), ⊤⁆) : general_commutator_pi_pi_of_fintype _ _
796+
... = pi (λ i, ⁅(lower_central_series (Gs i) n), ⊤⁆) : commutator_pi_pi_of_fintype _ _
797797
... = pi (λ i, lower_central_series (Gs i) n.succ) : rfl }
798798
end
799799

src/group_theory/solvable.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ lemma derived_series_normal (n : ℕ) : (derived_series G n).normal :=
4646
begin
4747
induction n with n ih,
4848
{ exact (⊤ : subgroup G).normal_of_characteristic },
49-
{ exactI general_commutator_normal (derived_series G n) (derived_series G n) }
49+
{ exactI subgroup.commutator_normal (derived_series G n) (derived_series G n) }
5050
end
5151

5252
@[simp] lemma derived_series_one : derived_series G 1 = commutator G :=
@@ -58,7 +58,7 @@ section commutator_map
5858

5959
lemma commutator_le_map_commutator {H₁ H₂ : subgroup G} {K₁ K₂ : subgroup G'} (h₁ : K₁ ≤ H₁.map f)
6060
(h₂ : K₂ ≤ H₂.map f) : ⁅K₁, K₂⁆ ≤ ⁅H₁, H₂⁆.map f :=
61-
by { rw map_general_commutator, exact general_commutator_mono h₁ h₂ }
61+
by { rw map_commutator, exact commutator_mono h₁ h₂ }
6262

6363
section derived_series_map
6464

@@ -69,7 +69,7 @@ lemma map_derived_series_le_derived_series (n : ℕ) :
6969
begin
7070
induction n with n ih,
7171
{ simp only [derived_series_zero, le_top], },
72-
{ simp only [derived_series_succ, map_general_commutator, general_commutator_mono, *], }
72+
{ simp only [derived_series_succ, map_commutator, commutator_mono, ih] }
7373
end
7474

7575
variables {f}
@@ -195,8 +195,8 @@ begin
195195
{ exact derived_series_one G },
196196
rw [derived_series_succ, ih],
197197
cases (commutator.normal G).eq_bot_or_eq_top with h h,
198-
{ rw [h, general_commutator_bot] },
199-
{ rwa [h, ←commutator_def] },
198+
{ rw [h, commutator_bot] },
199+
{ rwa h },
200200
end
201201

202202
lemma is_simple_group.comm_iff_is_solvable :
@@ -236,7 +236,7 @@ begin
236236
{ exact mem_top x },
237237
{ rw key,
238238
exact (derived_series_normal _ _).conj_mem _
239-
(general_commutator_containment _ _ ih ((derived_series_normal _ _).conj_mem _ ih _)) _ },
239+
(commutator_containment _ _ ih ((derived_series_normal _ _).conj_mem _ ih _)) _ },
240240
end
241241

242242
lemma equiv.perm.not_solvable (X : Type*) (hX : 5 ≤ cardinal.mk X) :

0 commit comments

Comments
 (0)