Theorem: Function.Surjective.lieModuleIsNilpotent
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: obtain ⟨k, hk⟩ := id (by infer_instance : IsNilpotent R L M)
state_before: R : Type u
L : Type v
M : Type w
inst✝¹³ : CommRing R
inst✝¹² : LieRing L
inst✝¹¹ : LieAlgebra R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
inst✝⁸ : LieRingModule L M
inst✝⁷ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
L₂ : Type u_1
M₂ : Type u_2
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L₂ M₂
inst✝¹ : LieModule R L₂ M₂
f : L →ₗ⁅R⁆ L₂
g : M →ₗ[R] M₂
hf : Surjective ↑f
hg : Surjective ↑g
hfg : ∀ (x : L) (m : M), ⁅↑f x, ↑g m⁆ = ↑g ⁅x, m⁆
inst✝ : LieModule.IsNilpotent R L M
⊢ LieModule.IsNilpotent R L₂ M₂

tactic: use k
state_before: case mk.intro
R : Type u
L : Type v
M : Type w
inst✝¹³ : CommRing R
inst✝¹² : LieRing L
inst✝¹¹ : LieAlgebra R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
inst✝⁸ : LieRingModule L M
inst✝⁷ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
L₂ : Type u_1
M₂ : Type u_2
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L₂ M₂
inst✝¹ : LieModule R L₂ M₂
f : L →ₗ⁅R⁆ L₂
g : M →ₗ[R] M₂
hf : Surjective ↑f
hg : Surjective ↑g
hfg : ∀ (x : L) (m : M), ⁅↑f x, ↑g m⁆ = ↑g ⁅x, m⁆
inst✝ : LieModule.IsNilpotent R L M
k : ℕ
hk : lowerCentralSeries R L M k = ⊥
⊢ LieModule.IsNilpotent R L₂ M₂

tactic: rw [← LieSubmodule.coe_toSubmodule_eq_iff] at hk ⊢
state_before: case mk.intro
R : Type u
L : Type v
M : Type w
inst✝¹³ : CommRing R
inst✝¹² : LieRing L
inst✝¹¹ : LieAlgebra R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
inst✝⁸ : LieRingModule L M
inst✝⁷ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
L₂ : Type u_1
M₂ : Type u_2
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L₂ M₂
inst✝¹ : LieModule R L₂ M₂
f : L →ₗ⁅R⁆ L₂
g : M →ₗ[R] M₂
hf : Surjective ↑f
hg : Surjective ↑g
hfg : ∀ (x : L) (m : M), ⁅↑f x, ↑g m⁆ = ↑g ⁅x, m⁆
inst✝ : LieModule.IsNilpotent R L M
k : ℕ
hk : lowerCentralSeries R L M k = ⊥
⊢ lowerCentralSeries R L₂ M₂ k = ⊥

tactic: simp [← hf.lieModule_lcs_map_eq hg hfg k, hk]
state_before: case mk.intro
R : Type u
L : Type v
M : Type w
inst✝¹³ : CommRing R
inst✝¹² : LieRing L
inst✝¹¹ : LieAlgebra R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
inst✝⁸ : LieRingModule L M
inst✝⁷ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
L₂ : Type u_1
M₂ : Type u_2
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L₂ M₂
inst✝¹ : LieModule R L₂ M₂
f : L →ₗ⁅R⁆ L₂
g : M →ₗ[R] M₂
hf : Surjective ↑f
hg : Surjective ↑g
hfg : ∀ (x : L) (m : M), ⁅↑f x, ↑g m⁆ = ↑g ⁅x, m⁆
inst✝ : LieModule.IsNilpotent R L M
k : ℕ
hk : ↑(lowerCentralSeries R L M k) = ↑⊥
⊢ ↑(lowerCentralSeries R L₂ M₂ k) = ↑⊥

tactic: infer_instance
state_before: R : Type u
L : Type v
M : Type w
inst✝¹³ : CommRing R
inst✝¹² : LieRing L
inst✝¹¹ : LieAlgebra R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
inst✝⁸ : LieRingModule L M
inst✝⁷ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
L₂ : Type u_1
M₂ : Type u_2
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L₂ M₂
inst✝¹ : LieModule R L₂ M₂
f : L →ₗ⁅R⁆ L₂
g : M →ₗ[R] M₂
hf : Surjective ↑f
hg : Surjective ↑g
hfg : ∀ (x : L) (m : M), ⁅↑f x, ↑g m⁆ = ↑g ⁅x, m⁆
inst✝ : LieModule.IsNilpotent R L M
⊢ LieModule.IsNilpotent R L M