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

tactic: obtain ⟨n, h⟩ : ∃ n, Group.nilpotencyClass G = n := ⟨_, rfl⟩
state_before: G✝ : Type ?u.314742
inst✝³ : Group G✝
H : Subgroup G✝
inst✝² : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
⊢ P G

tactic: induction' n with n ih generalizing G
state_before: case intro
G✝ : Type ?u.314742
inst✝³ : Group G✝
H : Subgroup G✝
inst✝² : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
n : ℕ
h : nilpotencyClass G = n
⊢ P G

tactic: haveI := nilpotencyClass_zero_iff_subsingleton.mp h
state_before: case intro.zero
G✝¹ : Type ?u.314742
inst✝⁵ : Group G✝¹
H : Subgroup G✝¹
inst✝⁴ : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G✝ : Type u_1
inst✝³ : Group G✝
inst✝² : Group.IsNilpotent G✝
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
n : ℕ
h✝ : nilpotencyClass G✝ = n
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
h : nilpotencyClass G = Nat.zero
⊢ P G

tactic: exact hbase _
state_before: case intro.zero
G✝¹ : Type ?u.314742
inst✝⁵ : Group G✝¹
H : Subgroup G✝¹
inst✝⁴ : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G✝ : Type u_1
inst✝³ : Group G✝
inst✝² : Group.IsNilpotent G✝
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
n : ℕ
h✝ : nilpotencyClass G✝ = n
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
h : nilpotencyClass G = Nat.zero
this : Subsingleton G
⊢ P G

tactic: have hn : Group.nilpotencyClass (G ⧸ center G) = n := by
  simp [nilpotencyClass_quotient_center, h]
state_before: case intro.succ
G✝¹ : Type ?u.314742
inst✝⁵ : Group G✝¹
H : Subgroup G✝¹
inst✝⁴ : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G✝ : Type u_1
inst✝³ : Group G✝
inst✝² : Group.IsNilpotent G✝
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
n✝ : ℕ
h✝ : nilpotencyClass G✝ = n✝
n : ℕ
ih : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], nilpotencyClass G = n → P G
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
h : nilpotencyClass G = Nat.succ n
⊢ P G

tactic: exact hstep _ (ih _ hn)
state_before: case intro.succ
G✝¹ : Type ?u.314742
inst✝⁵ : Group G✝¹
H : Subgroup G✝¹
inst✝⁴ : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G✝ : Type u_1
inst✝³ : Group G✝
inst✝² : Group.IsNilpotent G✝
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
n✝ : ℕ
h✝ : nilpotencyClass G✝ = n✝
n : ℕ
ih : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], nilpotencyClass G = n → P G
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
h : nilpotencyClass G = Nat.succ n
hn : nilpotencyClass (G ⧸ center G) = n
⊢ P G

tactic: simp [nilpotencyClass_quotient_center, h]
state_before: G✝¹ : Type ?u.314742
inst✝⁵ : Group G✝¹
H : Subgroup G✝¹
inst✝⁴ : Normal H
P : (G : Type u_1) → [inst : Group G] → [inst : Group.IsNilpotent G] → Prop
G✝ : Type u_1
inst✝³ : Group G✝
inst✝² : Group.IsNilpotent G✝
hbase : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Subsingleton G], P G
hstep : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], P (G ⧸ center G) → P G
n✝ : ℕ
h✝ : nilpotencyClass G✝ = n✝
n : ℕ
ih : ∀ (G : Type u_1) [inst : Group G] [inst_1 : Group.IsNilpotent G], nilpotencyClass G = n → P G
G : Type u_1
inst✝¹ : Group G
inst✝ : Group.IsNilpotent G
h : nilpotencyClass G = Nat.succ n
⊢ nilpotencyClass (G ⧸ center G) = n