Theorem: LinearMap.IsSymmetric.diagonalization_apply_self_apply
File: Mathlib/Analysis/InnerProductSpace/Spectrum.lean

tactic: suffices
  ∀ w : PiLp 2 fun μ : Eigenvalues T => eigenspace T μ,
    T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => (μ : 𝕜) • w μ by
  simpa only [LinearIsometryEquiv.symm_apply_apply, LinearIsometryEquiv.apply_symm_apply] using
    congr_arg (fun w => hT.diagonalization w μ) (this (hT.diagonalization v))
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
⊢ hT.diagonalization (T v) μ = ↑T μ • hT.diagonalization v μ
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
⊢ ∀ (w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))),
    T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ

tactic: intro w
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
⊢ ∀ (w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))),
    T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))
⊢ T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ

tactic: have hwT : ∀ μ, T (w μ) = (μ : 𝕜) • w μ := fun μ => mem_eigenspace_iff.1 (w μ).2
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))
⊢ T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))
hwT : ∀ (μ : Eigenvalues T), T ↑(w μ) = ↑T μ • ↑(w μ)
⊢ T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ

tactic: simp only [hwT, diagonalization_symm_apply, map_sum, Submodule.coe_smul_of_tower]
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))
hwT : ∀ (μ : Eigenvalues T), T ↑(w μ) = ↑T μ • ↑(w μ)
⊢ T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ
state_after: no goals

tactic: simpa only [LinearIsometryEquiv.symm_apply_apply, LinearIsometryEquiv.apply_symm_apply] using
  congr_arg (fun w => hT.diagonalization w μ) (this (hT.diagonalization v))
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
inst✝ : FiniteDimensional 𝕜 E
v : E
μ : Eigenvalues T
this :
  ∀ (w : PiLp 2 fun μ => ↥(eigenspace T (↑T μ))),
    T (hT.diagonalization.symm w) = hT.diagonalization.symm fun μ => ↑T μ • w μ
⊢ hT.diagonalization (T v) μ = ↑T μ • hT.diagonalization v μ
state_after: no goals