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

tactic: rw [nilpotent_iff_lowerCentralSeries]
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ Group.IsNilpotent ((i : η) → Gs i)
state_after: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ ∃ n, lowerCentralSeries ((i : η) → Gs i) n = ⊥

tactic: refine ⟨n, ?_⟩
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ ∃ n, lowerCentralSeries ((i : η) → Gs i) n = ⊥
state_after: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ lowerCentralSeries ((i : η) → Gs i) n = ⊥

tactic: rw [eq_bot_iff]
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ lowerCentralSeries ((i : η) → Gs i) n = ⊥
state_after: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ lowerCentralSeries ((i : η) → Gs i) n ≤ ⊥

tactic: apply le_trans (lowerCentralSeries_pi_le _)
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ lowerCentralSeries ((i : η) → Gs i) n ≤ ⊥
state_after: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ (pi Set.univ fun i => lowerCentralSeries (Gs i) n) ≤ ⊥

tactic: rw [← eq_bot_iff, pi_eq_bot_iff]
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ (pi Set.univ fun i => lowerCentralSeries (Gs i) n) ≤ ⊥
state_after: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ ∀ (i : η), lowerCentralSeries (Gs i) n = ⊥

tactic: intro i
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
⊢ ∀ (i : η), lowerCentralSeries (Gs i) n = ⊥
state_after: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
i : η
⊢ lowerCentralSeries (Gs i) n = ⊥

tactic: apply lowerCentralSeries_eq_bot_iff_nilpotencyClass_le.mpr (h i)
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.Normal
η : Type u_2
Gs : η → Type u_3
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : ∀ (i : η), Group.IsNilpotent (Gs i)
n : ℕ
h : ∀ (i : η), Group.nilpotencyClass (Gs i) ≤ n
i : η
⊢ lowerCentralSeries (Gs i) n = ⊥
state_after: no goals