Theorem: LinearMap.submodule_pow_eq_zero_of_pow_eq_zero
File: Mathlib/LinearAlgebra/Basic.lean

tactic: ext m
state_before: R : Type u_1
R₁ : Type ?u.155563
R₂ : Type ?u.155566
R₃ : Type ?u.155569
R₄ : Type ?u.155572
S : Type ?u.155575
K : Type ?u.155578
K₂ : Type ?u.155581
M : Type u_2
M' : Type ?u.155587
M₁ : Type ?u.155590
M₂ : Type ?u.155593
M₃ : Type ?u.155596
M₄ : Type ?u.155599
N✝ : Type ?u.155602
N₂ : Type ?u.155605
ι : Type ?u.155608
V : Type ?u.155611
V₂ : Type ?u.155614
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
inst✝¹⁴ : Semiring R₄
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : Module R₄ M₄
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₃₄ : R₃ →+* R₄
σ₁₃ : R →+* R₃
σ₂₄ : R₂ →+* R₄
σ₁₄ : R →+* R₄
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
f : M →ₛₗ[σ₁₂] M₂
g✝ : M₂ →ₛₗ[σ₂₃] M₃
N : Submodule R M
g : Module.End R { x // x ∈ N }
G : Module.End R M
h : comp G (Submodule.subtype N) = comp (Submodule.subtype N) g
k : ℕ
hG : G ^ k = 0
⊢ g ^ k = 0

tactic: have hg : N.subtype.comp (g ^ k) m = 0 := by
  rw [← commute_pow_left_of_commute h, hG, zero_comp, zero_apply]
state_before: case h.a
R : Type u_1
R₁ : Type ?u.155563
R₂ : Type ?u.155566
R₃ : Type ?u.155569
R₄ : Type ?u.155572
S : Type ?u.155575
K : Type ?u.155578
K₂ : Type ?u.155581
M : Type u_2
M' : Type ?u.155587
M₁ : Type ?u.155590
M₂ : Type ?u.155593
M₃ : Type ?u.155596
M₄ : Type ?u.155599
N✝ : Type ?u.155602
N₂ : Type ?u.155605
ι : Type ?u.155608
V : Type ?u.155611
V₂ : Type ?u.155614
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
inst✝¹⁴ : Semiring R₄
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : Module R₄ M₄
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₃₄ : R₃ →+* R₄
σ₁₃ : R →+* R₃
σ₂₄ : R₂ →+* R₄
σ₁₄ : R →+* R₄
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
f : M →ₛₗ[σ₁₂] M₂
g✝ : M₂ →ₛₗ[σ₂₃] M₃
N : Submodule R M
g : Module.End R { x // x ∈ N }
G : Module.End R M
h : comp G (Submodule.subtype N) = comp (Submodule.subtype N) g
k : ℕ
hG : G ^ k = 0
m : { x // x ∈ N }
⊢ ↑(↑(g ^ k) m) = ↑(↑0 m)

tactic: simpa using hg
state_before: case h.a
R : Type u_1
R₁ : Type ?u.155563
R₂ : Type ?u.155566
R₃ : Type ?u.155569
R₄ : Type ?u.155572
S : Type ?u.155575
K : Type ?u.155578
K₂ : Type ?u.155581
M : Type u_2
M' : Type ?u.155587
M₁ : Type ?u.155590
M₂ : Type ?u.155593
M₃ : Type ?u.155596
M₄ : Type ?u.155599
N✝ : Type ?u.155602
N₂ : Type ?u.155605
ι : Type ?u.155608
V : Type ?u.155611
V₂ : Type ?u.155614
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
inst✝¹⁴ : Semiring R₄
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : Module R₄ M₄
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₃₄ : R₃ →+* R₄
σ₁₃ : R →+* R₃
σ₂₄ : R₂ →+* R₄
σ₁₄ : R →+* R₄
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
f : M →ₛₗ[σ₁₂] M₂
g✝ : M₂ →ₛₗ[σ₂₃] M₃
N : Submodule R M
g : Module.End R { x // x ∈ N }
G : Module.End R M
h : comp G (Submodule.subtype N) = comp (Submodule.subtype N) g
k : ℕ
hG : G ^ k = 0
m : { x // x ∈ N }
hg : ↑(comp (Submodule.subtype N) (g ^ k)) m = 0
⊢ ↑(↑(g ^ k) m) = ↑(↑0 m)

tactic: rw [← commute_pow_left_of_commute h, hG, zero_comp, zero_apply]
state_before: R : Type u_1
R₁ : Type ?u.155563
R₂ : Type ?u.155566
R₃ : Type ?u.155569
R₄ : Type ?u.155572
S : Type ?u.155575
K : Type ?u.155578
K₂ : Type ?u.155581
M : Type u_2
M' : Type ?u.155587
M₁ : Type ?u.155590
M₂ : Type ?u.155593
M₃ : Type ?u.155596
M₄ : Type ?u.155599
N✝ : Type ?u.155602
N₂ : Type ?u.155605
ι : Type ?u.155608
V : Type ?u.155611
V₂ : Type ?u.155614
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
inst✝¹⁴ : Semiring R₄
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid M₁
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : AddCommMonoid M₃
inst✝⁹ : AddCommMonoid M₄
inst✝⁸ : Module R M
inst✝⁷ : Module R M₁
inst✝⁶ : Module R₂ M₂
inst✝⁵ : Module R₃ M₃
inst✝⁴ : Module R₄ M₄
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₃₄ : R₃ →+* R₄
σ₁₃ : R →+* R₃
σ₂₄ : R₂ →+* R₄
σ₁₄ : R →+* R₄
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
f : M →ₛₗ[σ₁₂] M₂
g✝ : M₂ →ₛₗ[σ₂₃] M₃
N : Submodule R M
g : Module.End R { x // x ∈ N }
G : Module.End R M
h : comp G (Submodule.subtype N) = comp (Submodule.subtype N) g
k : ℕ
hG : G ^ k = 0
m : { x // x ∈ N }
⊢ ↑(comp (Submodule.subtype N) (g ^ k)) m = 0