@@ -24,10 +24,10 @@ by the commutators `hkh⁻¹k⁻¹`. Recall also Lean's conventions that `⊤` d
2424subgroup `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
123121variable (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.
147145def 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
328326theorem 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. -/
340337theorem lowerCentralSeries_isDescendingCentralSeries :
0 commit comments