Theorem: ContinuousLinearMap.image_rayleigh_eq_image_rayleigh_sphere
File: Mathlib/Analysis/InnerProductSpace/Rayleigh.lean

tactic: ext a
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
⊢ T.rayleighQuotient '' {0}ᶜ = T.rayleighQuotient '' sphere 0 r
state_after: case h
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ T.rayleighQuotient '' {0}ᶜ ↔ a ∈ T.rayleighQuotient '' sphere 0 r

tactic: constructor
state_before: case h
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ T.rayleighQuotient '' {0}ᶜ ↔ a ∈ T.rayleighQuotient '' sphere 0 r
state_after: case h.mp
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ T.rayleighQuotient '' {0}ᶜ → a ∈ T.rayleighQuotient '' sphere 0 r

case h.mpr
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ T.rayleighQuotient '' sphere 0 r → a ∈ T.rayleighQuotient '' {0}ᶜ

tactic: rintro ⟨x, hx : x ≠ 0, hxT⟩
state_before: case h.mp
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ T.rayleighQuotient '' {0}ᶜ → a ∈ T.rayleighQuotient '' sphere 0 r
state_after: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
⊢ a ∈ T.rayleighQuotient '' sphere 0 r

tactic: have : ‖x‖ ≠ 0 := by simp [hx]
state_before: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
⊢ a ∈ T.rayleighQuotient '' sphere 0 r
state_after: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this : ‖x‖ ≠ 0
⊢ a ∈ T.rayleighQuotient '' sphere 0 r

tactic: let c : 𝕜 := ↑‖x‖⁻¹ * r
state_before: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this : ‖x‖ ≠ 0
⊢ a ∈ T.rayleighQuotient '' sphere 0 r
state_after: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
⊢ a ∈ T.rayleighQuotient '' sphere 0 r

tactic: have : c ≠ 0 := by simp [c, hx, hr.ne']
state_before: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
⊢ a ∈ T.rayleighQuotient '' sphere 0 r
state_after: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ a ∈ T.rayleighQuotient '' sphere 0 r

tactic: refine ⟨c • x, ?_, ?_⟩
state_before: case h.mp.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ a ∈ T.rayleighQuotient '' sphere 0 r
state_after: case h.mp.intro.intro.refine_1
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ c • x ∈ sphere 0 r

case h.mp.intro.intro.refine_2
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ T.rayleighQuotient (c • x) = a

tactic: simp [hx]
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
⊢ ‖x‖ ≠ 0
state_after: no goals

tactic: simp [c, hx, hr.ne']
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
⊢ c ≠ 0
state_after: no goals

tactic: field_simp [c, norm_smul, abs_of_pos hr]
state_before: case h.mp.intro.intro.refine_1
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ c • x ∈ sphere 0 r
state_after: no goals

tactic: rw [T.rayleigh_smul x this]
state_before: case h.mp.intro.intro.refine_2
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ T.rayleighQuotient (c • x) = a
state_after: case h.mp.intro.intro.refine_2
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ T.rayleighQuotient x = a

tactic: exact hxT
state_before: case h.mp.intro.intro.refine_2
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
this✝ : ‖x‖ ≠ 0
c : 𝕜 := ↑‖x‖⁻¹ * ↑r
this : c ≠ 0
⊢ T.rayleighQuotient x = a
state_after: no goals

tactic: rintro ⟨x, hx, hxT⟩
state_before: case h.mpr
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace 𝕜 E
T : E →L[𝕜] E
r : ℝ
hr : 0 < r
a : ℝ
⊢ a ∈ T.rayleighQuotient '' sphere 0 r → a ∈ T.rayleighQuotient '' {0}ᶜ
state_after: case h.mpr.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
⊢ a ∈ T.rayleighQuotient '' {0}ᶜ

tactic: exact ⟨x, ne_zero_of_mem_sphere hr.ne' ⟨x, hx⟩, hxT⟩
state_before: case h.mpr.intro.intro
𝕜 : Type u_1
inst✝² : RCLike 𝕜
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 : T.rayleighQuotient x = a
⊢ a ∈ T.rayleighQuotient '' {0}ᶜ
state_after: no goals