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

Commit ffc2bdf

Browse files
committed
refactor(group_theory/abelianization): Define commutator in terms of general_commutator (#11949)
It seems reasonable to define `commutator` in terms of `general_commutator`.
1 parent 018c728 commit ffc2bdf

File tree

3 files changed

+23
-34
lines changed

3 files changed

+23
-34
lines changed

src/group_theory/abelianization.lean

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Kenny Lau, Michael Howes
55
-/
6+
import group_theory.general_commutator
67
import group_theory.quotient_group
7-
import tactic.group
88

99
/-!
1010
# The abelianization of a group
@@ -32,7 +32,17 @@ variables (G : Type u) [group G]
3232
generated by the commutators [p,q]=`p*q*p⁻¹*q⁻¹`. -/
3333
@[derive subgroup.normal]
3434
def commutator : subgroup G :=
35-
subgroup.normal_closure {x | ∃ p q, p * q * p⁻¹ * q⁻¹ = x}
35+
⁅(⊤ : subgroup G), ⊤⁆
36+
37+
lemma commutator_def : commutator G = ⁅(⊤ : subgroup G), ⊤⁆ := rfl
38+
39+
lemma commutator_eq_closure :
40+
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]
42+
43+
lemma commutator_eq_normal_closure :
44+
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]
3646

3747
/-- The abelianization of G is the quotient of G by its commutator subgroup. -/
3848
def abelianization : Type u :=
@@ -43,13 +53,8 @@ namespace abelianization
4353
local attribute [instance] quotient_group.left_rel
4454

4555
instance : comm_group (abelianization G) :=
46-
{ mul_comm := λ x y, quotient.induction_on₂' x y $ λ a b,
47-
begin
48-
apply quotient.sound,
49-
apply subgroup.subset_normal_closure,
50-
use b⁻¹, use a⁻¹,
51-
group,
52-
end,
56+
{ mul_comm := λ x y, quotient.induction_on₂' x y $ λ a b, quotient.sound' $
57+
subgroup.subset_closure ⟨b⁻¹, subgroup.mem_top b⁻¹, a⁻¹, subgroup.mem_top a⁻¹, by group⟩,
5358
.. quotient_group.quotient.group _ }
5459

5560
instance : inhabited (abelianization G) := ⟨1
@@ -77,7 +82,7 @@ variables {A : Type v} [comm_group A] (f : G →* A)
7782

7883
lemma commutator_subset_ker : commutator G ≤ f.ker :=
7984
begin
80-
apply subgroup.normal_closure_le_normal,
85+
rw [commutator_eq_closure, subgroup.closure_le],
8186
rintros x ⟨p, q, rfl⟩,
8287
simp [monoid_hom.mem_ker, mul_right_comm (f p) (f q)],
8388
end

src/group_theory/nilpotent.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,7 @@ variable {G}
269269

270270
@[simp] lemma lower_central_series_zero : lower_central_series G 0 = ⊤ := rfl
271271

272-
@[simp] lemma lower_central_series_one : lower_central_series G 1 = commutator G :=
273-
by simp [lower_central_series]
272+
@[simp] lemma lower_central_series_one : lower_central_series G 1 = commutator G := rfl
274273

275274
lemma mem_lower_central_series_succ_iff (n : ℕ) (q : G) :
276275
q ∈ lower_central_series G (n + 1) ↔

src/group_theory/solvable.lean

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,8 @@ begin
4949
{ exactI general_commutator_normal (derived_series G n) (derived_series G n) }
5050
end
5151

52-
@[simp] lemma general_commutator_eq_commutator :
53-
⁅(⊤ : subgroup G), (⊤ : subgroup G)⁆ = commutator G :=
54-
begin
55-
rw [commutator, general_commutator_def'],
56-
apply le_antisymm; apply normal_closure_mono,
57-
{ exact λ x ⟨p, _, q, _, h⟩, ⟨p, q, h⟩, },
58-
{ exact λ x ⟨p, q, h⟩, ⟨p, mem_top p, q, mem_top q, h⟩, }
59-
end
60-
61-
lemma commutator_def' : commutator G = subgroup.closure {x : G | ∃ p q, p * q * p⁻¹ * q⁻¹ = x} :=
62-
begin
63-
rw [← general_commutator_eq_commutator, general_commutator],
64-
apply le_antisymm; apply closure_mono,
65-
{ exact λ x ⟨p, _, q, _, h⟩, ⟨p, q, h⟩ },
66-
{ exact λ x ⟨p, q, h⟩, ⟨p, mem_top p, q, mem_top q, h⟩ }
67-
end
68-
6952
@[simp] lemma derived_series_one : derived_series G 1 = commutator G :=
70-
general_commutator_eq_commutator G
53+
rfl
7154

7255
end derived_series
7356

@@ -220,9 +203,11 @@ variable [is_simple_group G]
220203
lemma is_simple_group.derived_series_succ {n : ℕ} : derived_series G n.succ = commutator G :=
221204
begin
222205
induction n with n ih,
223-
{ exact derived_series_one _ },
206+
{ exact derived_series_one G },
224207
rw [derived_series_succ, ih],
225-
cases (commutator.normal G).eq_bot_or_eq_top with h h; simp [h]
208+
cases (commutator.normal G).eq_bot_or_eq_top with h h,
209+
{ rw [h, general_commutator_bot] },
210+
{ rwa [h, ←commutator_def] },
226211
end
227212

228213
lemma is_simple_group.comm_iff_is_solvable :
@@ -236,8 +221,8 @@ lemma is_simple_group.comm_iff_is_solvable :
236221
exact mem_top _ } },
237222
{ rw is_simple_group.derived_series_succ at hn,
238223
intros a b,
239-
rw [← mul_inv_eq_one, mul_inv_rev, ← mul_assoc, ← mem_bot, ← hn],
240-
exact subset_normal_closure ⟨a, b, rfl⟩ }
224+
rw [← mul_inv_eq_one, mul_inv_rev, ← mul_assoc, ← mem_bot, ← hn, commutator_eq_closure],
225+
exact subset_closure ⟨a, b, rfl⟩ }
241226
end
242227

243228
end is_simple_group

0 commit comments

Comments
 (0)