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

tactic: induction' n with d hd
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
n : ℕ
⊢ Subgroup.map H.subtype (lowerCentralSeries (↥H) n) ≤ lowerCentralSeries G n
state_after: case zero
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
⊢ Subgroup.map H.subtype (lowerCentralSeries (↥H) 0) ≤ lowerCentralSeries G 0

case succ
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
⊢ Subgroup.map H.subtype (lowerCentralSeries (↥H) (d + 1)) ≤ lowerCentralSeries G (d + 1)

tactic: simp
state_before: case zero
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
⊢ Subgroup.map H.subtype (lowerCentralSeries (↥H) 0) ≤ lowerCentralSeries G 0
state_after: no goals

tactic: rw [lowerCentralSeries_succ, lowerCentralSeries_succ, MonoidHom.map_closure]
state_before: case succ
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
⊢ Subgroup.map H.subtype (lowerCentralSeries (↥H) (d + 1)) ≤ lowerCentralSeries G (d + 1)
state_after: case succ
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
⊢ closure (⇑H.subtype '' {x | ∃ p ∈ lowerCentralSeries (↥H) d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}) ≤
    closure {x | ∃ p ∈ lowerCentralSeries G d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}

tactic: apply Subgroup.closure_mono
state_before: case succ
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
⊢ closure (⇑H.subtype '' {x | ∃ p ∈ lowerCentralSeries (↥H) d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}) ≤
    closure {x | ∃ p ∈ lowerCentralSeries G d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}
state_after: case succ.h'
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
⊢ ⇑H.subtype '' {x | ∃ p ∈ lowerCentralSeries (↥H) d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x} ⊆
    {x | ∃ p ∈ lowerCentralSeries G d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}

tactic: rintro x1 ⟨x2, ⟨x3, hx3, x4, _hx4, rfl⟩, rfl⟩
state_before: case succ.h'
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
⊢ ⇑H.subtype '' {x | ∃ p ∈ lowerCentralSeries (↥H) d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x} ⊆
    {x | ∃ p ∈ lowerCentralSeries G d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}
state_after: case succ.h'.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
x3 : ↥H
hx3 : x3 ∈ lowerCentralSeries (↥H) d
x4 : ↥H
_hx4 : x4 ∈ ⊤
⊢ H.subtype (x3 * x4 * x3⁻¹ * x4⁻¹) ∈ {x | ∃ p ∈ lowerCentralSeries G d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}

tactic: exact ⟨x3, hd (mem_map.mpr ⟨x3, hx3, rfl⟩), x4, by simp⟩
state_before: case succ.h'.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
x3 : ↥H
hx3 : x3 ∈ lowerCentralSeries (↥H) d
x4 : ↥H
_hx4 : x4 ∈ ⊤
⊢ H.subtype (x3 * x4 * x3⁻¹ * x4⁻¹) ∈ {x | ∃ p ∈ lowerCentralSeries G d, ∃ q ∈ ⊤, p * q * p⁻¹ * q⁻¹ = x}
state_after: no goals

tactic: simp
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
d : ℕ
hd : Subgroup.map H.subtype (lowerCentralSeries (↥H) d) ≤ lowerCentralSeries G d
x3 : ↥H
hx3 : x3 ∈ lowerCentralSeries (↥H) d
x4 : ↥H
_hx4 : x4 ∈ ⊤
⊢ ↑x4 ∈ ⊤ ∧ ↑x3 * ↑x4 * (↑x3)⁻¹ * (↑x4)⁻¹ = H.subtype (x3 * x4 * x3⁻¹ * x4⁻¹)
state_after: no goals