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

tactic: let pi := fun f : ∀ i, Subgroup (Gs i) => Subgroup.pi Set.univ f
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✝ : Finite η
n : ℕ
⊢ lowerCentralSeries ((i : η) → 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✝ : Finite η
n : ℕ
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n

tactic: induction' n with n ih
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✝ : Finite η
n : ℕ
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
state_after: case zero
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✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) 0 = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) 0

case succ
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✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ lowerCentralSeries ((i : η) → Gs i) (n + 1) = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) (n + 1)

tactic: simp [pi_top]
state_before: case zero
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✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) 0 = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) 0
state_after: no goals

tactic: calc
  lowerCentralSeries (∀ i, Gs i) n.succ = ⁅lowerCentralSeries (∀ i, Gs i) n, ⊤⁆ := rfl
  _ = ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆ := by rw [ih]
  _ = ⁅pi fun i => lowerCentralSeries (Gs i) n, pi fun i => ⊤⁆ := by simp [pi, pi_top]
  _ = pi fun i => ⁅lowerCentralSeries (Gs i) n, ⊤⁆ := commutator_pi_pi_of_finite _ _
  _ = pi fun i => lowerCentralSeries (Gs i) n.succ := rfl
state_before: case succ
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✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ lowerCentralSeries ((i : η) → Gs i) (n + 1) = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) (n + 1)
state_after: no goals

tactic: rw [ih]
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✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ ⁅lowerCentralSeries ((i : η) → Gs i) n, ⊤⁆ = ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆
state_after: no goals

tactic: simp [pi, pi_top]
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✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆ = ⁅pi fun i => lowerCentralSeries (Gs i) n, pi fun i => ⊤⁆
state_after: no goals