Skip to content

Commit d048652

Browse files
feat(GroupTheory): each term in a upper(lower) central series is a characteristic subgroup (leanprover-community#34890)
The main lemma proved in this PR is `Subgroup.Characteristic.quotient`, which says that if `H` is a characteristic subgroup of `G`, and `K` is a characteristic subgroup of `G / H`, then the preimage of `K` under the projection map is a characteristic subgroup of `G`. As a corollary, I proved that each term in the upper central series is a characteristic subgroup. I deleted the instances related to normality as normality can be inferred from being characteristic. Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 4c9ff10 commit d048652

3 files changed

Lines changed: 24 additions & 19 deletions

File tree

Mathlib/Algebra/Group/Subgroup/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,8 @@ namespace Subgroup
270270
instance normal_top : (⊤ : Subgroup G).Normal where
271271
conj_mem _ a _ := a
272272

273-
/-- The trivial subgroup `{1}`is normal. -/
274-
@[to_additive (attr := simp) /-- The trivial subgroup `{0}`is normal. -/]
273+
/-- The trivial subgroup `{1}` is normal. -/
274+
@[to_additive (attr := simp) /-- The trivial subgroup `{0}` is normal. -/]
275275
instance normal_bot : (⊥ : Subgroup G).Normal where
276276
conj_mem := by simp
277277

Mathlib/GroupTheory/Nilpotent.lean

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ by the commutators `hkh⁻¹k⁻¹`. Recall also Lean's conventions that `⊤` d
2424
subgroup `G` of `G`, and `⊥` denotes the trivial subgroup `{1}`.
2525
2626
* `upperCentralSeries G : ℕ → Subgroup G` : the upper central series of a group `G`.
27-
This is an increasing sequence of normal subgroups `H n` of `G` with `H 0 = ⊥` and
27+
This is an increasing sequence of characteristic subgroups `H n` of `G` with `H 0 = ⊥` and
2828
`H (n + 1) / H n` is the centre of `G / H n`.
2929
* `lowerCentralSeries G : ℕ → Subgroup G` : the lower central series of a group `G`.
30-
This is a decreasing sequence of normal subgroups `H n` of `G` with `H 0 = ⊤` and
30+
This is a decreasing sequence of characteristic subgroups `H n` of `G` with `H 0 = ⊤` and
3131
`H (n + 1) = ⁅H n, G⁆`.
3232
* `IsNilpotent` : A group G is nilpotent if its upper central series reaches `⊤`, or
3333
equivalently if its lower central series reaches `⊥`.
@@ -111,24 +111,22 @@ theorem upperCentralSeriesStep_eq_comap_center :
111111
upperCentralSeriesStep H = Subgroup.comap (mk' H) (center (G ⧸ H)) := by
112112
ext
113113
rw [mem_comap, mem_center_iff, forall_mk]
114-
apply forall_congr'
115-
intro y
114+
refine forall_congr' fun y => ?_
116115
rw [coe_mk', ← QuotientGroup.mk_mul, ← QuotientGroup.mk_mul, eq_comm, eq_iff_div_mem,
117116
div_eq_mul_inv, mul_inv_rev, mul_assoc]
118117

119-
instance : Normal (upperCentralSeriesStep H) := by
120-
rw [upperCentralSeriesStep_eq_comap_center]
121-
infer_instance
118+
instance [H.Characteristic] : Characteristic (upperCentralSeriesStep H) :=
119+
(upperCentralSeriesStep_eq_comap_center H) ▸ Characteristic.comap_quotient_mk centerCharacteristic
122120

123121
variable (G)
124122

125123
/-- An auxiliary type-theoretic definition defining both the upper central series of
126-
a group, and a proof that it is normal, all in one go. -/
127-
def upperCentralSeriesAux : ℕ → Σ' H : Subgroup G, Normal H
124+
a group, and a proof that it is characteristic, all in one go. -/
125+
def upperCentralSeriesAux : ℕ → Σ' H : Subgroup G, Characteristic H
128126
| 0 => ⟨⊥, inferInstance⟩
129127
| n + 1 =>
130128
let un := upperCentralSeriesAux n
131-
let _un_normal := un.2
129+
let _un_characteristic := un.2
132130
⟨upperCentralSeriesStep un.1, inferInstance⟩
133131

134132
/-- `upperCentralSeries G n` is the `n`th term in the upper central series of `G`.
@@ -147,7 +145,7 @@ hold.
147145
def upperCentralSeries (n : ℕ) : Subgroup G :=
148146
(upperCentralSeriesAux G n).1
149147

150-
instance upperCentralSeries_normal (n : ℕ) : Normal (upperCentralSeries G n) :=
148+
instance (n : ℕ) : Characteristic (upperCentralSeries G n) :=
151149
(upperCentralSeriesAux G n).2
152150

153151
@[simp]
@@ -239,7 +237,7 @@ theorem upperCentralSeries_mono : Monotone (upperCentralSeries G) := by
239237
refine monotone_nat_of_le_succ ?_
240238
intro n x hx y
241239
rw [mul_assoc, mul_assoc, ← mul_assoc y x⁻¹ y⁻¹]
242-
exact mul_mem hx (Normal.conj_mem (upperCentralSeries_normal G n) x⁻¹ (inv_mem hx) y)
240+
exact mul_mem hx (Normal.conj_mem inferInstance x⁻¹ (inv_mem hx) y)
243241

244242
/-- A group `G` is nilpotent iff there exists an ascending central series which reaches `G` in
245243
finitely many steps. -/
@@ -320,10 +318,10 @@ theorem lowerCentralSeries_succ (n : ℕ) :
320318
closure { x | ∃ p ∈ lowerCentralSeries G n, ∃ q ∈ (⊤ : Subgroup G), p * q * p⁻¹ * q⁻¹ = x } :=
321319
rfl
322320

323-
instance lowerCentralSeries_normal (n : ℕ) : Normal (lowerCentralSeries G n) := by
321+
instance (n : ℕ) : Characteristic (lowerCentralSeries G n) := by
324322
induction n with
325-
| zero => exact (⊤ : Subgroup G).normal_of_characteristic
326-
| succ d hd => exact @Subgroup.commutator_normal _ _ (lowerCentralSeries G d) ⊤ hd _
323+
| zero => simp [topCharacteristic]
324+
| succ d hd => unfold lowerCentralSeries; infer_instance
327325

328326
theorem lowerCentralSeries_antitone : Antitone (lowerCentralSeries G) := by
329327
refine antitone_nat_of_succ_le fun n x hx => ?_
@@ -333,8 +331,7 @@ theorem lowerCentralSeries_antitone : Antitone (lowerCentralSeries G) := by
333331
closure_induction ?_ (Subgroup.one_mem _) (fun _ _ _ _ ↦ mul_mem) (fun _ _ ↦ inv_mem) hx
334332
rintro y ⟨z, hz, a, ha⟩
335333
rw [← ha, mul_assoc, mul_assoc, ← mul_assoc a z⁻¹ a⁻¹]
336-
exact mul_mem hz (Normal.conj_mem (lowerCentralSeries_normal n) z⁻¹ (inv_mem hz) a)
337-
334+
exact mul_mem hz (Normal.conj_mem inferInstance z⁻¹ (inv_mem hz) a)
338335

339336
/-- The lower central series of a group is a descending central series. -/
340337
theorem lowerCentralSeries_isDescendingCentralSeries :

Mathlib/GroupTheory/QuotientGroup/Basic.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,14 @@ theorem comap_comap_center {H₁ : Subgroup G} [H₁.Normal] {H₂ : Subgroup (G
390390
simp only [mk'_apply, Subgroup.mem_comap, Subgroup.mem_center_iff, forall_mk, ← mk_mul,
391391
eq_iff_div_mem, mk_div]
392392

393+
open Subgroup in
394+
@[to_additive]
395+
theorem _root_.Subgroup.Characteristic.comap_quotient_mk {H : Subgroup G} [hH : H.Characteristic]
396+
{K : Subgroup (G ⧸ H)} (hK : K.Characteristic) :
397+
Characteristic (K.comap (mk' H)) :=
398+
characteristic_iff_comap_eq.mpr fun φ ↦ congr_arg (comap (mk' H))
399+
(characteristic_iff_comap_eq.mp hK (congr H H φ (characteristic_iff_map_eq.mp hH φ)))
400+
393401
/--
394402
The `MulEquiv` between the kernel of the restriction map to a normal subgroup `H` of homomorphisms
395403
of type `G →* A` and the group of homomorphisms `G ⧸ H →* A`.

0 commit comments

Comments
 (0)