@@ -4,10 +4,10 @@ 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
7
- import data.bracket
8
7
import data.matrix.notation
9
8
import group_theory.abelianization
10
9
import set_theory.cardinal
10
+ import group_theory.general_commutator
11
11
12
12
/-!
13
13
# Solvable Groups
@@ -18,106 +18,15 @@ the derived series of a group.
18
18
19
19
## Main definitions
20
20
21
- * `general_commutator H₁ H₂` : the commutator of the subgroups `H₁` and `H₂`
22
21
* `derived_series G n` : the `n`th term in the derived series of `G`, defined by iterating
23
- `general_commutator` starting with the top subgroup
22
+ `general_commutator` starting with the top subgroup
24
23
* `is_solvable G` : the group `G` is solvable
25
24
-/
26
25
27
26
open subgroup
28
27
29
28
variables {G G' : Type *} [group G] [group G'] {f : G →* G'}
30
29
31
- section general_commutator
32
-
33
- /-- The commutator of two subgroups `H₁` and `H₂`. -/
34
- instance general_commutator : has_bracket (subgroup G) (subgroup G) :=
35
- ⟨λ H₁ H₂, closure {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x}⟩
36
-
37
- lemma general_commutator_def (H₁ H₂ : subgroup G) :
38
- ⁅H₁, H₂⁆ = closure {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x} := rfl
39
-
40
- instance general_commutator_normal (H₁ H₂ : subgroup G) [h₁ : H₁.normal]
41
- [h₂ : H₂.normal] : normal ⁅H₁, H₂⁆ :=
42
- begin
43
- let base : set G := {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x},
44
- suffices h_base : base = group.conjugates_of_set base,
45
- { dsimp only [general_commutator_def, ←base],
46
- rw h_base,
47
- exact subgroup.normal_closure_normal },
48
- apply set.subset.antisymm group.subset_conjugates_of_set,
49
- intros a h,
50
- simp_rw [group.mem_conjugates_of_set_iff, is_conj_iff] at h,
51
- rcases h with ⟨b, ⟨c, hc, e, he, rfl⟩, d, rfl⟩,
52
- exact ⟨d * c * d⁻¹, h₁.conj_mem c hc d, d * e * d⁻¹, h₂.conj_mem e he d, by group⟩,
53
- end
54
-
55
- lemma general_commutator_mono {H₁ H₂ K₁ K₂ : subgroup G} (h₁ : H₁ ≤ K₁) (h₂ : H₂ ≤ K₂) :
56
- ⁅H₁, H₂⁆ ≤ ⁅K₁, K₂⁆ :=
57
- begin
58
- apply closure_mono,
59
- rintros x ⟨p, hp, q, hq, rfl⟩,
60
- exact ⟨p, h₁ hp, q, h₂ hq, rfl⟩,
61
- end
62
-
63
- lemma general_commutator_def' (H₁ H₂ : subgroup G) [H₁.normal] [H₂.normal] :
64
- ⁅H₁, H₂⁆ = normal_closure {x | ∃ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ = x} :=
65
- by rw [← normal_closure_eq_self ⁅H₁, H₂⁆, general_commutator_def,
66
- normal_closure_closure_eq_normal_closure]
67
-
68
- lemma general_commutator_le (H₁ H₂ : subgroup G) (K : subgroup G) :
69
- ⁅H₁, H₂⁆ ≤ K ↔ ∀ (p ∈ H₁) (q ∈ H₂), p * q * p⁻¹ * q⁻¹ ∈ K :=
70
- begin
71
- rw [general_commutator, closure_le],
72
- split,
73
- { intros h p hp q hq,
74
- exact h ⟨p, hp, q, hq, rfl⟩, },
75
- { rintros h x ⟨p, hp, q, hq, rfl⟩,
76
- exact h p hp q hq, }
77
- end
78
-
79
- lemma general_commutator_containment (H₁ H₂ : subgroup G) {p q : G} (hp : p ∈ H₁) (hq : q ∈ H₂) :
80
- p * q * p⁻¹ * q⁻¹ ∈ ⁅H₁, H₂⁆ :=
81
- (general_commutator_le H₁ H₂ ⁅H₁, H₂⁆).mp (le_refl ⁅H₁, H₂⁆) p hp q hq
82
-
83
- lemma general_commutator_comm (H₁ H₂ : subgroup G) : ⁅H₁, H₂⁆ = ⁅H₂, H₁⁆ :=
84
- begin
85
- suffices : ∀ H₁ H₂ : subgroup G, ⁅H₁, H₂⁆ ≤ ⁅H₂, H₁⁆, { exact le_antisymm (this _ _) (this _ _) },
86
- intros H₁ H₂,
87
- rw general_commutator_le,
88
- intros p hp q hq,
89
- have h : (p * q * p⁻¹ * q⁻¹)⁻¹ ∈ ⁅H₂, H₁⁆ := subset_closure ⟨q, hq, p, hp, by group⟩,
90
- convert inv_mem ⁅H₂, H₁⁆ h,
91
- group,
92
- end
93
-
94
- lemma general_commutator_le_right (H₁ H₂ : subgroup G) [h : normal H₂] :
95
- ⁅H₁, H₂⁆ ≤ H₂ :=
96
- begin
97
- rw general_commutator_le,
98
- intros p hp q hq,
99
- exact mul_mem H₂ (h.conj_mem q hq p) (inv_mem H₂ hq),
100
- end
101
-
102
- lemma general_commutator_le_left (H₁ H₂ : subgroup G) [h : normal H₁] :
103
- ⁅H₁, H₂⁆ ≤ H₁ :=
104
- begin
105
- rw general_commutator_comm,
106
- exact general_commutator_le_right H₂ H₁,
107
- end
108
-
109
- @[simp] lemma general_commutator_bot (H : subgroup G) : ⁅H, ⊥⁆ = (⊥ : subgroup G) :=
110
- by { rw eq_bot_iff, exact general_commutator_le_right H ⊥ }
111
-
112
- @[simp] lemma bot_general_commutator (H : subgroup G) : ⁅(⊥ : subgroup G), H⁆ = (⊥ : subgroup G) :=
113
- by { rw eq_bot_iff, exact general_commutator_le_left ⊥ H }
114
-
115
- lemma general_commutator_le_inf (H₁ H₂ : subgroup G) [normal H₁] [normal H₂] :
116
- ⁅H₁, H₂⁆ ≤ H₁ ⊓ H₂ :=
117
- by simp only [general_commutator_le_left, general_commutator_le_right, le_inf_iff, and_self]
118
-
119
- end general_commutator
120
-
121
30
section derived_series
122
31
123
32
variables (G)
0 commit comments