[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
⊢ rayleighQuotient T (c • x) = rayleighQuotient T x
[PROOFSTEP]
by_cases hx : x = 0
[GOAL]
case pos
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : x = 0
⊢ rayleighQuotient T (c • x) = rayleighQuotient T x
[PROOFSTEP]
simp [hx]
[GOAL]
case neg
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : ¬x = 0
⊢ rayleighQuotient T (c • x) = rayleighQuotient T x
[PROOFSTEP]
have : ‖c‖ ≠ 0 := by simp [hc]
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : ¬x = 0
⊢ ‖c‖ ≠ 0
[PROOFSTEP]
simp [hc]
[GOAL]
case neg
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : ¬x = 0
this : ‖c‖ ≠ 0
⊢ rayleighQuotient T (c • x) = rayleighQuotient T x
[PROOFSTEP]
have : ‖x‖ ≠ 0 := by simp [hx]
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : ¬x = 0
this : ‖c‖ ≠ 0
⊢ ‖x‖ ≠ 0
[PROOFSTEP]
simp [hx]
[GOAL]
case neg
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : ¬x = 0
this✝ : ‖c‖ ≠ 0
this : ‖x‖ ≠ 0
⊢ rayleighQuotient T (c • x) = rayleighQuotient T x
[PROOFSTEP]
field_simp [norm_smul, T.reApplyInnerSelf_smul]
[GOAL]
case neg
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
x : E
c : 𝕜
hc : c ≠ 0
hx : ¬x = 0
this✝ : ‖c‖ ≠ 0
this : ‖x‖ ≠ 0
⊢ ‖c‖ ^ 2 * reApplyInnerSelf T x * ‖x‖ ^ 2 = reApplyInnerSelf T x * (‖c‖ * ‖x‖) ^ 2
[PROOFSTEP]
ring
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
⊢ rayleighQuotient T '' {0}ᶜ = rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
ext a
[GOAL]
case h
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ rayleighQuotient T '' {0}ᶜ ↔ a ∈ rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
constructor
[GOAL]
case h.mp
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ rayleighQuotient T '' {0}ᶜ → a ∈ rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
rintro ⟨x, hx : x ≠ 0, hxT⟩
[GOAL]
case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
⊢ a ∈ rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
have : ‖x‖ ≠ 0 := by simp [hx]
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
⊢ ‖x‖ ≠ 0
[PROOFSTEP]
simp [hx]
[GOAL]
case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this : ‖x‖ ≠ 0
⊢ a ∈ rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
let c : 𝕜 := ↑‖x‖⁻¹ * r
[GOAL]
case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
⊢ a ∈ rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
have : c ≠ 0 := by simp [hx, hr.ne']
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
⊢ c ≠ 0
[PROOFSTEP]
simp [hx, hr.ne']
[GOAL]
case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ a ∈ rayleighQuotient T '' sphere 0 r
[PROOFSTEP]
refine' ⟨c • x, _, _⟩
[GOAL]
case h.mp.intro.intro.refine'_1
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ c • x ∈ sphere 0 r
[PROOFSTEP]
field_simp [norm_smul, abs_of_pos hr]
[GOAL]
case h.mp.intro.intro.refine'_2
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ rayleighQuotient T (c • x) = a
[PROOFSTEP]
rw [T.rayleigh_smul x this]
[GOAL]
case h.mp.intro.intro.refine'_2
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ≠ 0
hxT : rayleighQuotient T x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ rayleighQuotient T x = a
[PROOFSTEP]
exact hxT
[GOAL]
case h.mpr
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ rayleighQuotient T '' sphere 0 r → a ∈ rayleighQuotient T '' {0}ᶜ
[PROOFSTEP]
rintro ⟨x, hx, hxT⟩
[GOAL]
case h.mpr.intro.intro
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
x : E
hx : x ∈ sphere 0 r
hxT : rayleighQuotient T x = a
⊢ a ∈ rayleighQuotient T '' {0}ᶜ
[PROOFSTEP]
exact ⟨x, ne_zero_of_mem_sphere hr.ne' ⟨x, hx⟩, hxT⟩
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
⊢ ⨆ (x : ↑{0}ᶜ), rayleighQuotient T ↑x = ⨆ (x : ↑(sphere 0 r)), rayleighQuotient T ↑x
[PROOFSTEP]
simp only [← @sSup_image' _ _ _ _ (rayleighQuotient T), T.image_rayleigh_eq_image_rayleigh_sphere hr]
[GOAL]
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
⊢ ⨅ (x : ↑{0}ᶜ), rayleighQuotient T ↑x = ⨅ (x : ↑(sphere 0 r)), rayleighQuotient T ↑x
[PROOFSTEP]
simp only [← @sInf_image' _ _ _ _ (rayleighQuotient T), T.image_rayleigh_eq_image_rayleigh_sphere hr]
[GOAL]
𝕜 : Type u_1
inst✝⁴ : IsROrC 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
T : F →L[ℝ] F
hT : LinearMap.IsSymmetric ↑T
x₀ : F
⊢ HasStrictFDerivAt (ContinuousLinearMap.reApplyInnerSelf T) (2 • ↑(innerSL ℝ) (↑T x₀)) x₀
[PROOFSTEP]
convert T.hasStrictFDerivAt.inner ℝ (hasStrictFDerivAt_id x₀) using 1
[GOAL]
case h.e'_10.h.h
𝕜 : Type u_1
inst✝⁴ : IsROrC 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
T : F →L[ℝ] F
hT : LinearMap.IsSymmetric ↑T
x₀ : F
e_7✝ : Real.normedAddCommGroup = NonUnitalNormedRing.toNormedAddCommGroup
he✝ : InnerProductSpace.toNormedSpace = NormedAlgebra.toNormedSpace'
⊢ 2 • ↑(innerSL ℝ) (↑T x₀) =
    ContinuousLinearMap.comp (fderivInnerClm ℝ (↑T x₀, id x₀)) (ContinuousLinearMap.prod T (ContinuousLinearMap.id ℝ F))
[PROOFSTEP]
ext y
[GOAL]
case h.e'_10.h.h.h
𝕜 : Type u_1
inst✝⁴ : IsROrC 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
T : F →L[ℝ] F
hT : LinearMap.IsSymmetric ↑T
x₀ : F
e_7✝ : Real.normedAddCommGroup = NonUnitalNormedRing.toNormedAddCommGroup
he✝ : InnerProductSpace.toNormedSpace = NormedAlgebra.toNormedSpace'
y : (fun x => F) x₀
⊢ ↑(2 • ↑(innerSL ℝ) (↑T x₀)) y =
    ↑(ContinuousLinearMap.comp (fderivInnerClm ℝ (↑T x₀, id x₀))
          (ContinuousLinearMap.prod T (ContinuousLinearMap.id ℝ F)))
      y
[PROOFSTEP]
rw [ContinuousLinearMap.smul_apply, ContinuousLinearMap.comp_apply, fderivInnerClm_apply,
  ContinuousLinearMap.prod_apply, innerSL_apply, id.def, ContinuousLinearMap.id_apply, hT.apply_clm x₀ y,
  real_inner_comm _ x₀, two_smul]
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ ∃ a b, (a, b) ≠ 0 ∧ a • x₀ + b • ↑T x₀ = 0
[PROOFSTEP]
have H : IsLocalExtrOn T.reApplyInnerSelf {x : F | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀ :=
  by
  convert hextr
  ext x
  simp [dist_eq_norm]
    -- find Lagrange multipliers for the function `T.re_apply_inner_self` and the
      -- hypersurface-defining function `λ x, ‖x‖ ^ 2`
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
[PROOFSTEP]
convert hextr
[GOAL]
case h.e'_6
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} = sphere 0 ‖x₀‖
[PROOFSTEP]
ext x
[GOAL]
case h.e'_6.h
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
x : F
⊢ x ∈ {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} ↔ x ∈ sphere 0 ‖x₀‖
[PROOFSTEP]
simp [dist_eq_norm]
  -- find Lagrange multipliers for the function `T.re_apply_inner_self` and the
    -- hypersurface-defining function `λ x, ‖x‖ ^ 2`
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
⊢ ∃ a b, (a, b) ≠ 0 ∧ a • x₀ + b • ↑T x₀ = 0
[PROOFSTEP]
obtain ⟨a, b, h₁, h₂⟩ :=
  IsLocalExtrOn.exists_multipliers_of_hasStrictFDerivAt_1d H (hasStrictFDerivAt_norm_sq x₀)
    (hT.isSymmetric.hasStrictFDerivAt_reApplyInnerSelf x₀)
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ ∃ a b, (a, b) ≠ 0 ∧ a • x₀ + b • ↑T x₀ = 0
[PROOFSTEP]
refine' ⟨a, b, h₁, _⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ a • x₀ + b • ↑T x₀ = 0
[PROOFSTEP]
apply (InnerProductSpace.toDualMap ℝ F).injective
[GOAL]
case intro.intro.intro.a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ ↑(InnerProductSpace.toDualMap ℝ F) (a • x₀ + b • ↑T x₀) = ↑(InnerProductSpace.toDualMap ℝ F) 0
[PROOFSTEP]
simp only [LinearIsometry.map_add, LinearIsometry.map_smul, LinearIsometry.map_zero]
[GOAL]
case intro.intro.intro.a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ ↑(InnerProductSpace.toDualMap ℝ F) (a • x₀) + ↑(InnerProductSpace.toDualMap ℝ F) (b • ↑T x₀) = 0
[PROOFSTEP]
simp only [map_smulₛₗ, IsROrC.conj_to_real]
[GOAL]
case intro.intro.intro.a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ a • ↑(InnerProductSpace.toDualMap ℝ F) x₀ + b • ↑(InnerProductSpace.toDualMap ℝ F) (↑T x₀) = 0
[PROOFSTEP]
change a • innerSL ℝ x₀ + b • innerSL ℝ (T x₀) = 0
[GOAL]
case intro.intro.intro.a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ a • ↑(innerSL ℝ) x₀ + b • ↑(innerSL ℝ) (↑T x₀) = 0
[PROOFSTEP]
apply smul_right_injective (F →L[ℝ] ℝ) (two_ne_zero : (2 : ℝ) ≠ 0)
[GOAL]
case intro.intro.intro.a.a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
H : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) {x | ‖x‖ ^ 2 = ‖x₀‖ ^ 2} x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • 2 • ↑(innerSL ℝ) x₀ + b • 2 • ↑(innerSL ℝ) (↑T x₀) = 0
⊢ (fun x x_1 => x • x_1) 2 (a • ↑(innerSL ℝ) x₀ + b • ↑(innerSL ℝ) (↑T x₀)) = (fun x x_1 => x • x_1) 2 0
[PROOFSTEP]
simpa only [two_smul, smul_add, add_smul, add_zero] using h₂
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
obtain ⟨a, b, h₁, h₂⟩ := hT.linearly_dependent_of_isLocalExtrOn hextr
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
by_cases hx₀ : x₀ = 0
[GOAL]
case pos
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : x₀ = 0
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
simp [hx₀]
[GOAL]
case neg
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
by_cases hb : b = 0
[GOAL]
case pos
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : b = 0
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
have : a ≠ 0 := by simpa [hb] using h₁
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : b = 0
⊢ a ≠ 0
[PROOFSTEP]
simpa [hb] using h₁
[GOAL]
case pos
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : b = 0
this : a ≠ 0
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
refine' absurd _ hx₀
[GOAL]
case pos
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : b = 0
this : a ≠ 0
⊢ x₀ = 0
[PROOFSTEP]
apply smul_right_injective F this
[GOAL]
case pos.a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : b = 0
this : a ≠ 0
⊢ (fun x x_1 => x • x_1) a x₀ = (fun x x_1 => x • x_1) a 0
[PROOFSTEP]
simpa [hb] using h₂
[GOAL]
case neg
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
let c : ℝ := -b⁻¹ * a
[GOAL]
case neg
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
have hc : T x₀ = c • x₀ := by
  have : b * (b⁻¹ * a) = a := by field_simp [mul_comm]
  apply smul_right_injective F hb
  simp [eq_neg_of_add_eq_zero_left h₂, ← mul_smul, this]
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
⊢ ↑T x₀ = c • x₀
[PROOFSTEP]
have : b * (b⁻¹ * a) = a := by field_simp [mul_comm]
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
⊢ b * (b⁻¹ * a) = a
[PROOFSTEP]
field_simp [mul_comm]
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
this : b * (b⁻¹ * a) = a
⊢ ↑T x₀ = c • x₀
[PROOFSTEP]
apply smul_right_injective F hb
[GOAL]
case a
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
this : b * (b⁻¹ * a) = a
⊢ (fun x x_1 => x • x_1) b (↑T x₀) = (fun x x_1 => x • x_1) b (c • x₀)
[PROOFSTEP]
simp [eq_neg_of_add_eq_zero_left h₂, ← mul_smul, this]
[GOAL]
case neg
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
hc : ↑T x₀ = c • x₀
⊢ ↑T x₀ = ContinuousLinearMap.rayleighQuotient T x₀ • x₀
[PROOFSTEP]
convert hc
[GOAL]
case h.e'_3.h.e'_5
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
hc : ↑T x₀ = c • x₀
⊢ ContinuousLinearMap.rayleighQuotient T x₀ = c
[PROOFSTEP]
have : ‖x₀‖ ≠ 0 := by simp [hx₀]
[GOAL]
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
hc : ↑T x₀ = c • x₀
⊢ ‖x₀‖ ≠ 0
[PROOFSTEP]
simp [hx₀]
[GOAL]
case h.e'_3.h.e'_5
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
hc : ↑T x₀ = c • x₀
this : ‖x₀‖ ≠ 0
⊢ ContinuousLinearMap.rayleighQuotient T x₀ = c
[PROOFSTEP]
have := congr_arg (fun x => ⟪x, x₀⟫_ℝ) hc
[GOAL]
case h.e'_3.h.e'_5
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
hc : ↑T x₀ = c • x₀
this✝ : ‖x₀‖ ≠ 0
this : (fun x => inner x x₀) (↑T x₀) = (fun x => inner x x₀) (c • x₀)
⊢ ContinuousLinearMap.rayleighQuotient T x₀ = c
[PROOFSTEP]
field_simp [inner_smul_left, real_inner_self_eq_norm_mul_norm, sq] at this ⊢
[GOAL]
case h.e'_3.h.e'_5
𝕜 : Type u_1
inst✝⁵ : IsROrC 𝕜
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
T : F →L[ℝ] F
hT : IsSelfAdjoint T
x₀ : F
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
a b : ℝ
h₁ : (a, b) ≠ 0
h₂ : a • x₀ + b • ↑T x₀ = 0
hx₀ : ¬x₀ = 0
hb : ¬b = 0
c : ℝ := -b⁻¹ * a
hc : ↑T x₀ = c • x₀
this✝ : ‖x₀‖ ≠ 0
this : inner (↑T x₀) x₀ * b = -(a * (‖x₀‖ * ‖x₀‖))
⊢ ContinuousLinearMap.reApplyInnerSelf T x₀ * b = -(a * (‖x₀‖ * ‖x₀‖))
[PROOFSTEP]
exact this
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ ↑T x₀ = ↑(ContinuousLinearMap.rayleighQuotient T x₀) • x₀
[PROOFSTEP]
letI := InnerProductSpace.isROrCToReal 𝕜 E
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
this : InnerProductSpace ℝ E := InnerProductSpace.isROrCToReal 𝕜 E
⊢ ↑T x₀ = ↑(ContinuousLinearMap.rayleighQuotient T x₀) • x₀
[PROOFSTEP]
let hSA := hT.isSymmetric.restrictScalars.toSelfAdjoint.prop
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
this : InnerProductSpace ℝ E := InnerProductSpace.isROrCToReal 𝕜 E
hSA : ↑(LinearMap.IsSymmetric.toSelfAdjoint (_ : LinearMap.IsSymmetric (↑ℝ ↑T))) ∈ selfAdjoint (E →L[ℝ] E) :=
  Subtype.prop (LinearMap.IsSymmetric.toSelfAdjoint (LinearMap.IsSymmetric.restrictScalars (isSymmetric hT)))
⊢ ↑T x₀ = ↑(ContinuousLinearMap.rayleighQuotient T x₀) • x₀
[PROOFSTEP]
exact hSA.eq_smul_self_of_isLocalExtrOn_real hextr
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ HasEigenvector (↑T) (↑(ContinuousLinearMap.rayleighQuotient T x₀)) x₀
[PROOFSTEP]
refine' ⟨_, hx₀⟩
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ x₀ ∈ eigenspace ↑T ↑(ContinuousLinearMap.rayleighQuotient T x₀)
[PROOFSTEP]
rw [Module.End.mem_eigenspace_iff]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsLocalExtrOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ ↑↑T x₀ = ↑(ContinuousLinearMap.rayleighQuotient T x₀) • x₀
[PROOFSTEP]
exact hT.eq_smul_self_of_isLocalExtrOn hextr
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ HasEigenvector (↑T) (↑(⨆ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x)) x₀
[PROOFSTEP]
convert hT.hasEigenvector_of_isLocalExtrOn hx₀ (Or.inr hextr.localize)
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ ⨆ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
have hx₀' : 0 < ‖x₀‖ := by simp [hx₀]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ 0 < ‖x₀‖
[PROOFSTEP]
simp [hx₀]
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
⊢ ⨆ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
have hx₀'' : x₀ ∈ sphere (0 : E) ‖x₀‖ := by simp
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
⊢ x₀ ∈ sphere 0 ‖x₀‖
[PROOFSTEP]
simp
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
⊢ ⨆ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
rw [T.iSup_rayleigh_eq_iSup_rayleigh_sphere hx₀']
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
⊢ ⨆ (x : ↑(sphere 0 ‖x₀‖)), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
refine' IsMaxOn.iSup_eq hx₀'' _
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
⊢ IsMaxOn (ContinuousLinearMap.rayleighQuotient T) (sphere 0 ‖x₀‖) x₀
[PROOFSTEP]
intro x hx
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
⊢ x ∈ {x | (fun x => ContinuousLinearMap.rayleighQuotient T x ≤ ContinuousLinearMap.rayleighQuotient T x₀) x}
[PROOFSTEP]
dsimp
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
⊢ ContinuousLinearMap.rayleighQuotient T x ≤ ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
have : ‖x‖ = ‖x₀‖ := by simpa using hx
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
⊢ ‖x‖ = ‖x₀‖
[PROOFSTEP]
simpa using hx
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.rayleighQuotient T x ≤ ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
simp only [ContinuousLinearMap.rayleighQuotient]
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.reApplyInnerSelf T x / ‖x‖ ^ 2 ≤ ContinuousLinearMap.reApplyInnerSelf T x₀ / ‖x₀‖ ^ 2
[PROOFSTEP]
rw [this]
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.reApplyInnerSelf T x / ‖x₀‖ ^ 2 ≤ ContinuousLinearMap.reApplyInnerSelf T x₀ / ‖x₀‖ ^ 2
[PROOFSTEP]
gcongr
[GOAL]
case h.e'_7.h.e'_3.h
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.reApplyInnerSelf T x ≤ ContinuousLinearMap.reApplyInnerSelf T x₀
[PROOFSTEP]
exact hextr hx
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ HasEigenvector (↑T) (↑(⨅ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x)) x₀
[PROOFSTEP]
convert hT.hasEigenvector_of_isLocalExtrOn hx₀ (Or.inl hextr.localize)
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ ⨅ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
have hx₀' : 0 < ‖x₀‖ := by simp [hx₀]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
⊢ 0 < ‖x₀‖
[PROOFSTEP]
simp [hx₀]
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
⊢ ⨅ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
have hx₀'' : x₀ ∈ sphere (0 : E) ‖x₀‖ := by simp
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
⊢ x₀ ∈ sphere 0 ‖x₀‖
[PROOFSTEP]
simp
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
⊢ ⨅ (x : { x // x ≠ 0 }), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
rw [T.iInf_rayleigh_eq_iInf_rayleigh_sphere hx₀']
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
⊢ ⨅ (x : ↑(sphere 0 ‖x₀‖)), ContinuousLinearMap.rayleighQuotient T ↑x = ContinuousLinearMap.rayleighQuotient T x₀
[PROOFSTEP]
refine' IsMinOn.iInf_eq hx₀'' _
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
⊢ IsMinOn (ContinuousLinearMap.rayleighQuotient T) (sphere 0 ‖x₀‖) x₀
[PROOFSTEP]
intro x hx
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
⊢ x ∈ {x | (fun x => ContinuousLinearMap.rayleighQuotient T x₀ ≤ ContinuousLinearMap.rayleighQuotient T x) x}
[PROOFSTEP]
dsimp
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
⊢ ContinuousLinearMap.rayleighQuotient T x₀ ≤ ContinuousLinearMap.rayleighQuotient T x
[PROOFSTEP]
have : ‖x‖ = ‖x₀‖ := by simpa using hx
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
⊢ ‖x‖ = ‖x₀‖
[PROOFSTEP]
simpa using hx
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.rayleighQuotient T x₀ ≤ ContinuousLinearMap.rayleighQuotient T x
[PROOFSTEP]
simp only [ContinuousLinearMap.rayleighQuotient]
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.reApplyInnerSelf T x₀ / ‖x₀‖ ^ 2 ≤ ContinuousLinearMap.reApplyInnerSelf T x / ‖x‖ ^ 2
[PROOFSTEP]
rw [this]
[GOAL]
case h.e'_7.h.e'_3
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.reApplyInnerSelf T x₀ / ‖x₀‖ ^ 2 ≤ ContinuousLinearMap.reApplyInnerSelf T x / ‖x₀‖ ^ 2
[PROOFSTEP]
gcongr
[GOAL]
case h.e'_7.h.e'_3.h
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : CompleteSpace E
T : E →L[𝕜] E
hT : IsSelfAdjoint T
x₀ : E
hx₀ : x₀ ≠ 0
hextr : IsMinOn (ContinuousLinearMap.reApplyInnerSelf T) (sphere 0 ‖x₀‖) x₀
hx₀' : 0 < ‖x₀‖
hx₀'' : x₀ ∈ sphere 0 ‖x₀‖
x : E
hx : x ∈ sphere 0 ‖x₀‖
this : ‖x‖ = ‖x₀‖
⊢ ContinuousLinearMap.reApplyInnerSelf T x₀ ≤ ContinuousLinearMap.reApplyInnerSelf T x
[PROOFSTEP]
exact hextr hx
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
haveI := FiniteDimensional.proper_isROrC 𝕜 E
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
let T' := hT.toSelfAdjoint
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
obtain ⟨x, hx⟩ : ∃ x : E, x ≠ 0 := exists_ne 0
[GOAL]
case intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have H₁ : IsCompact (sphere (0 : E) ‖x‖) := isCompact_sphere _ _
[GOAL]
case intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have H₂ : (sphere (0 : E) ‖x‖).Nonempty :=
  ⟨x, by simp⟩
    -- key point: in finite dimension, a continuous function on the sphere has a max
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
⊢ x ∈ sphere 0 ‖x‖
[PROOFSTEP]
simp
[GOAL]
case intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
obtain ⟨x₀, hx₀', hTx₀⟩ := H₁.exists_forall_ge H₂ T'.val.reApplyInnerSelf_continuous.continuousOn
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have hx₀ : ‖x₀‖ = ‖x‖ := by simpa using hx₀'
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
⊢ ‖x₀‖ = ‖x‖
[PROOFSTEP]
simpa using hx₀'
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have : IsMaxOn T'.val.reApplyInnerSelf (sphere 0 ‖x₀‖) x₀ := by simpa only [← hx₀] using hTx₀
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
⊢ IsMaxOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
[PROOFSTEP]
simpa only [← hx₀] using hTx₀
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
this : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have hx₀_ne : x₀ ≠ 0 :=
  by
  have : ‖x₀‖ ≠ 0 := by simp only [hx₀, norm_eq_zero, hx, Ne.def, not_false_iff]
  simpa [← norm_eq_zero, Ne.def]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
this : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
⊢ x₀ ≠ 0
[PROOFSTEP]
have : ‖x₀‖ ≠ 0 := by simp only [hx₀, norm_eq_zero, hx, Ne.def, not_false_iff]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
this : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
⊢ ‖x₀‖ ≠ 0
[PROOFSTEP]
simp only [hx₀, norm_eq_zero, hx, Ne.def, not_false_iff]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝¹ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
this✝ : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
this : ‖x₀‖ ≠ 0
⊢ x₀ ≠ 0
[PROOFSTEP]
simpa [← norm_eq_zero, Ne.def]
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') y ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') x₀
hx₀ : ‖x₀‖ = ‖x‖
this : IsMaxOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
hx₀_ne : x₀ ≠ 0
⊢ HasEigenvalue T ↑(⨆ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
exact hasEigenvalue_of_hasEigenvector (T'.prop.hasEigenvector_of_isMaxOn hx₀_ne this)
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
haveI := FiniteDimensional.proper_isROrC 𝕜 E
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
let T' := hT.toSelfAdjoint
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
obtain ⟨x, hx⟩ : ∃ x : E, x ≠ 0 := exists_ne 0
[GOAL]
case intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have H₁ : IsCompact (sphere (0 : E) ‖x‖) := isCompact_sphere _ _
[GOAL]
case intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have H₂ : (sphere (0 : E) ‖x‖).Nonempty :=
  ⟨x, by simp⟩
    -- key point: in finite dimension, a continuous function on the sphere has a min
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
⊢ x ∈ sphere 0 ‖x‖
[PROOFSTEP]
simp
[GOAL]
case intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
obtain ⟨x₀, hx₀', hTx₀⟩ := H₁.exists_forall_le H₂ T'.val.reApplyInnerSelf_continuous.continuousOn
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have hx₀ : ‖x₀‖ = ‖x‖ := by simpa using hx₀'
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
⊢ ‖x₀‖ = ‖x‖
[PROOFSTEP]
simpa using hx₀'
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have : IsMinOn T'.val.reApplyInnerSelf (sphere 0 ‖x₀‖) x₀ := by simpa only [← hx₀] using hTx₀
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
⊢ IsMinOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
[PROOFSTEP]
simpa only [← hx₀] using hTx₀
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
this : IsMinOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
have hx₀_ne : x₀ ≠ 0 :=
  by
  have : ‖x₀‖ ≠ 0 := by simp only [hx₀, norm_eq_zero, hx, Ne.def, not_false_iff]
  simpa [← norm_eq_zero, Ne.def]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
this : IsMinOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
⊢ x₀ ≠ 0
[PROOFSTEP]
have : ‖x₀‖ ≠ 0 := by simp only [hx₀, norm_eq_zero, hx, Ne.def, not_false_iff]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
this : IsMinOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
⊢ ‖x₀‖ ≠ 0
[PROOFSTEP]
simp only [hx₀, norm_eq_zero, hx, Ne.def, not_false_iff]
[GOAL]
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝¹ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
this✝ : IsMinOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
this : ‖x₀‖ ≠ 0
⊢ x₀ ≠ 0
[PROOFSTEP]
simpa [← norm_eq_zero, Ne.def]
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
inst✝³ : IsROrC 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
_i : Nontrivial E
T : E →ₗ[𝕜] E
hT : IsSymmetric T
this✝ : ProperSpace E
T' : { x // x ∈ selfAdjoint (E →L[𝕜] E) } := toSelfAdjoint hT
x : E
hx : x ≠ 0
H₁ : IsCompact (sphere 0 ‖x‖)
H₂ : Set.Nonempty (sphere 0 ‖x‖)
x₀ : E
hx₀' : x₀ ∈ sphere 0 ‖x‖
hTx₀ :
  ∀ (y : E),
    y ∈ sphere 0 ‖x‖ → ContinuousLinearMap.reApplyInnerSelf (↑T') x₀ ≤ ContinuousLinearMap.reApplyInnerSelf (↑T') y
hx₀ : ‖x₀‖ = ‖x‖
this : IsMinOn (ContinuousLinearMap.reApplyInnerSelf ↑T') (sphere 0 ‖x₀‖) x₀
hx₀_ne : x₀ ≠ 0
⊢ HasEigenvalue T ↑(⨅ (x : { x // x ≠ 0 }), ↑IsROrC.re (inner (↑T ↑x) ↑x) / ‖↑x‖ ^ 2)
[PROOFSTEP]
exact hasEigenvalue_of_hasEigenvector (T'.prop.hasEigenvector_of_isMinOn hx₀_ne this)