Theorem: LieModule.trace_comp_toEnd_weightSpace_eq
File: Mathlib/Algebra/Lie/Weights/Linear.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
⊢ ⇑(LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) = finrank R ↥↑(weightSpace M χ) • χ
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
tactic: ext x
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
tactic: let n := toEnd R L (weightSpace M χ) x - χ x • LinearMap.id
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
h₁ : (toEnd R L ↥↑(weightSpace M χ)) x = n + χ x • LinearMap.id
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
tactic: have h₁ : toEnd R L (weightSpace M χ) x = n + χ x • LinearMap.id := eq_add_of_sub_eq rfl
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
h₁ : (toEnd R L ↥↑(weightSpace M χ)) x = n + χ x • LinearMap.id
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
h₁ : (toEnd R L ↥↑(weightSpace M χ)) x = n + χ x • LinearMap.id
h₂ : (LinearMap.trace R ↥↑(weightSpace M χ)) n = 0
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
tactic: have h₂ : LinearMap.trace R _ n = 0 := IsReduced.eq_zero _ <|
    LinearMap.isNilpotent_trace_of_isNilpotent <| isNilpotent_toEnd_sub_algebraMap M χ x
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
h₁ : (toEnd R L ↥↑(weightSpace M χ)) x = n + χ x • LinearMap.id
h₂ : (LinearMap.trace R ↥↑(weightSpace M χ)) n = 0
⊢ (LinearMap.trace R ↥↑(weightSpace M χ) ∘ₗ ↑(toEnd R L ↥↑(weightSpace M χ))) x = (finrank R ↥↑(weightSpace M χ) • χ) x
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
h₁ : (toEnd R L ↥↑(weightSpace M χ)) x = n + χ x • LinearMap.id
h₂ : (LinearMap.trace R ↥↑(weightSpace M χ)) n = 0
⊢ 0 + (LinearMap.trace R ↥↑(weightSpace M χ)) (χ x • LinearMap.id) = (finrank R ↥↑(weightSpace M χ) • χ) x
tactic: rw [LinearMap.comp_apply, LieHom.coe_toLinearMap, h₁, map_add, h₂]
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
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
inst✝⁴ : IsDomain R
inst✝³ : IsPrincipalIdealRing R
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
inst✝ : LieAlgebra.IsNilpotent R L
χ : L → R
x : L
n : Module.End R ↥↑(weightSpace M χ) := (toEnd R L ↥↑(weightSpace M χ)) x - χ x • LinearMap.id
h₁ : (toEnd R L ↥↑(weightSpace M χ)) x = n + χ x • LinearMap.id
h₂ : (LinearMap.trace R ↥↑(weightSpace M χ)) n = 0
⊢ 0 + (LinearMap.trace R ↥↑(weightSpace M χ)) (χ x • LinearMap.id) = (finrank R ↥↑(weightSpace M χ) • χ) x
state_after: no goals
tactic: simp [mul_comm (χ x)]