Theorem: nilpotencyClass_quotient_center
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: generalize hn : Group.nilpotencyClass G = n
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
⊢ nilpotencyClass (G ⧸ center G) = nilpotencyClass G - 1

tactic: rcases n with (rfl | n)
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = n
⊢ nilpotencyClass (G ⧸ center G) = n - 1

tactic: simp [nilpotencyClass_zero_iff_subsingleton] at *
state_before: case zero
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
hn : nilpotencyClass G = Nat.zero
⊢ nilpotencyClass (G ⧸ center G) = Nat.zero - 1

tactic: exact Quotient.instSubsingletonQuotient (leftRel (center G))
state_before: case zero
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
hn : Subsingleton G
⊢ Subsingleton (G ⧸ center G)

tactic: suffices Group.nilpotencyClass (G ⧸ center G) = n by simpa
state_before: case succ
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ nilpotencyClass (G ⧸ center G) = Nat.succ n - 1

tactic: apply le_antisymm
state_before: case succ
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ nilpotencyClass (G ⧸ center G) = n

tactic: simpa
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
this : nilpotencyClass (G ⧸ center G) = n
⊢ nilpotencyClass (G ⧸ center G) = Nat.succ n - 1

tactic: apply upperCentralSeries_eq_top_iff_nilpotencyClass_le.mp
state_before: case succ.a
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ nilpotencyClass (G ⧸ center G) ≤ n

tactic: apply @comap_injective G _ _ _ (mk' (center G)) (surjective_quot_mk _)
state_before: case succ.a
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ upperCentralSeries (G ⧸ center G) n = ⊤

tactic: rw [comap_upperCentralSeries_quotient_center, comap_top, ← hn]
state_before: case succ.a.a
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ comap (mk' (center G)) (upperCentralSeries (G ⧸ center G) n) = comap (mk' (center G)) ⊤

tactic: exact upperCentralSeries_nilpotencyClass
state_before: case succ.a.a
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ upperCentralSeries G (nilpotencyClass G) = ⊤

tactic: apply le_of_add_le_add_right
state_before: case succ.a
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ n ≤ nilpotencyClass (G ⧸ center G)

tactic: calc
  n + 1 = n.succ := rfl
  _ = Group.nilpotencyClass G := (symm hn)
  _ ≤ Group.nilpotencyClass (G ⧸ center G) + 1 :=
    nilpotencyClass_le_of_ker_le_center _ (le_of_eq (ker_mk' _)) _
state_before: case succ.a.bc
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ n + ?succ.a.a ≤ nilpotencyClass (G ⧸ center G) + ?succ.a.a

case succ.a.a
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hH : Group.IsNilpotent G
n : ℕ
hn : nilpotencyClass G = Nat.succ n
⊢ ℕ