Imports
/-
Copyright (c) 2026 Gregory J. Loges. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Adam Bornemann, Gregory J. Loges
-/
module
public import Physlib.QuantumMechanics.Operators.SpectralTheory.BasicSpectral theory for symmetric operators
i. Overview
In this module we develop the spectral theory for symmetric operators.
The numerical range of an operator, Θ T = {⟪x, T x⟫_ℂ | x ∈ T.domain ∧ ‖x‖ = 1}, is a subset of ℂ.
For symmetric operators the numerical range consists only of real numbers and it is meaningful
to discuss its upper/lower bounds. To facilitate this, we define LinearPMap.realNumericalRange
as the projection of LinearPMap.numericalRange onto the real axis. For symmetric operators this
simply reinterprets the numerical range as a subset of ℝ.
ii. Key results
realNumericalRange (Θᵣₑ) : The projection of the numerical range onto the real axis.
compl_ofReal_subset_regularityDomain : The regularity domain of a symmetric operator contains
all complex numbers with non-zero imaginary part.
regularityDomain_isConnected_iff : The regularity domain of a symmetric operator is connected
if and only if it contains a real number.
IsSymmetric.isEssentiallySelfAdjoint_of_defectNumber_eq_zero : The basic criterion for
essential self-adjointness: symmetric + densely defined + vanishing defect numbers at ± i.
iii. Table of contents
A. Numerical range
B. Regularity domain
C. Point spectrum
D. Essential self-adjointness
iv. References
@[expose] public sectionA. Numerical range
The projection of the numerical range onto the real axis.
def realNumericalRange (T : H →ₗ.[ℂ] H) : Set ℝ := re '' (Θ T)@[inherit_doc realNumericalRange]
local notation "Θᵣₑ" => realNumericalRangelemma realNumericalRange_eq (T : H →ₗ.[ℂ] H) : Θᵣₑ T = re '' Θ T := rfl@[simp]
lemma realNumericalRange_neg (T : H →ₗ.[ℂ] H) : Θᵣₑ (-T) = -Θᵣₑ T := H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] H⊢ Θᵣₑ (-T) = -Θᵣₑ T
H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] Hx✝:ℝ⊢ x✝ ∈ Θᵣₑ (-T) ↔ x✝ ∈ -Θᵣₑ T
All goals completed! 🐙include hTThe numerical range of a symmetric operator is contained in the real axis.
lemma im_eq_zero_of_mem_numericalRange {z : ℂ} (hz : z ∈ Θ T) : z.im = 0 := H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ Θ T⊢ z.im = 0
H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂx:↥T.domainhx:x ∈ {x | ‖x‖ = 1}hxz:(fun x => ⟪↑x, ↑T x⟫_ℂ) x = z⊢ z.im = 0
H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂx:↥T.domainhx:x ∈ {x | ‖x‖ = 1}hxz:⟪↑T x, ↑x⟫_ℂ = z⊢ z.im = 0
All goals completed! 🐙The numerical range of a symmetric operator is contained in the real axis.
lemma numericalRange_subset : Θ T ⊆ range ofReal :=
fun z hz ↦ ⟨z.re, Complex.ext rfl (hT.im_eq_zero_of_mem_numericalRange hz).symm⟩The numerical range of a symmetric operator is equal to its projection onto the real axis.
H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ Θ T = ofReal ∘ re '' Θ T
exact (image_id _).symm.trans
(image_congr fun z hz ↦ Complex.ext rfl (hT.im_eq_zero_of_mem_numericalRange hz)) All goals completed! 🐙lemma closure_numericalRange_subset : _root_.closure (Θ T) ⊆ range ofReal :=
(closure_mono hT.numericalRange_subset).trans
Complex.isometry_ofReal.isClosedEmbedding.isClosed_range.closure_subsetB. Regularity domain
The regularity domain of a symmetric operator contains all complex numbers with non-zero imaginary part.
lemma mem_regularityDomain_of_im_ne_zero {z : ℂ} (hz : z.im ≠ 0) : z ∈ T.regularityDomain := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z.im ≠ 0⊢ z ∈ T.regularityDomain
apply T.compl_closure_numericalRange_subset_regularityDomain H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z.im ≠ 0⊢ z ∈ (_root_.closure (Θ T))ᶜ
refine (mem_compl_iff _ _).mpr fun h ↦ hz ?_ H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z.im ≠ 0h:z ∈ _root_.closure (Θ T)⊢ z.im = 0
obtain ⟨r, _, rfl⟩ := hT.closure_numericalRange_subset h H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhz:(↑r).im ≠ 0h:↑r ∈ _root_.closure (Θ T)⊢ (↑r).im = 0
exact ofReal_im r All goals completed! 🐙The regularity domain of a symmetric operator contains all complex numbers with non-zero imaginary part.
lemma compl_ofReal_subset_regularityDomain : (range ofReal)ᶜ ⊆ T.regularityDomain :=
fun z hz ↦ hT.mem_regularityDomain_of_im_ne_zero fun h ↦ hz ⟨z.re, Eq.symm (Complex.ext rfl h)⟩
If m is a lower bound on the numerical range then the regularity domain contains (-∞,m).
lemma Iio_subset_regularityDomain {m : ℝ} (h : m ∈ lowerBounds (Θᵣₑ T)) :
ofReal '' Iio m ⊆ T.regularityDomain := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)⊢ ofReal '' Iio m ⊆ T.regularityDomain
intro z ⟨r, hr, hrz⟩ H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = z⊢ z ∈ T.regularityDomain
refine ⟨m - r, sub_pos.mpr hr, fun x ↦ ?_⟩ H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domain⊢ (m - r) * ‖x‖ ≤ ‖↑T x - z • ↑x‖
rcases eq_zero_or_neZero x with rfl | hx inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = z⊢ (m - r) * ‖0‖ ≤ ‖↑T 0 - z • ↑0‖inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero x⊢ (m - r) * ‖x‖ ≤ ‖↑T x - z • ↑x‖
· inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = z⊢ (m - r) * ‖0‖ ≤ ‖↑T 0 - z • ↑0‖ simp All goals completed! 🐙
· inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero x⊢ (m - r) * ‖x‖ ≤ ‖↑T x - z • ↑x‖ obtain ⟨s, hs, hs'⟩ := hT.numericalRange_eq ▸ mem_numericalRange hx.ne inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs:s ∈ Θᵣₑ Ths':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂ⊢ (m - r) * ‖x‖ ≤ ‖↑T x - z • ↑x‖
apply h at hs inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ s⊢ (m - r) * ‖x‖ ≤ ‖↑T x - z • ↑x‖
have hsr : r < s := lt_of_lt_of_le hr hs inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (m - r) * ‖x‖ ≤ ‖↑T x - z • ↑x‖
refine le_of_mul_le_mul_right ?_ (norm_pos_iff.mpr hx.ne) inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (m - r) * ‖x‖ * ‖x‖ ≤ ‖↑T x - z • ↑x‖ * ‖x‖
calc
_ = (m - r) * ‖x‖ ^ 2 := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (m - r) * ‖x‖ * ‖x‖ = (m - r) * ‖x‖ ^ 2 rw [mul_assoc, H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (m - r) * (‖x‖ * ‖x‖) = (m - r) * ‖x‖ ^ 2 All goals completed! 🐙 pow_two H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (m - r) * (‖x‖ * ‖x‖) = (m - r) * (‖x‖ * ‖x‖) All goals completed! 🐙] All goals completed! 🐙
_ ≤ (s - r) * ‖x‖ ^ 2 := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (m - r) * ‖x‖ ^ 2 ≤ (s - r) * ‖x‖ ^ 2 nlinarith All goals completed! 🐙
_ = ‖s * ‖x‖ ^ 2 - r * ‖x‖ ^ 2‖ := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ (s - r) * ‖x‖ ^ 2 = ‖s * ‖x‖ ^ 2 - r * ‖x‖ ^ 2‖ simp [← sub_mul, abs_of_pos, sub_pos, hsr] All goals completed! 🐙
_ = ‖(s : ℂ) * ‖x‖ ^ 2 - r * ‖x‖ ^ 2‖ := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ ‖s * ‖x‖ ^ 2 - r * ‖x‖ ^ 2‖ = ‖↑s * ↑‖x‖ ^ 2 - ↑r * ↑‖x‖ ^ 2‖ simp [← ofReal_pow, ← ofReal_mul, ← ofReal_sub] All goals completed! 🐙
_ = ‖⟪↑x, T x⟫_ℂ - r * ‖x‖ ^ 2‖ := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ ‖↑s * ↑‖x‖ ^ 2 - ↑r * ↑‖x‖ ^ 2‖ = ‖⟪↑x, ↑T x⟫_ℂ - ↑r * ↑‖x‖ ^ 2‖ simp [hs', mul_comm, hx.ne] All goals completed! 🐙
_ = ‖⟪↑x, T x - z • x⟫_ℂ‖ := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ lowerBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Iio mhrz:↑r = zx:↥T.domainhx:NeZero xs:ℝhs':↑s = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T x⟫_ℂhs:m ≤ shsr:r < s⊢ ‖⟪↑x, ↑T x⟫_ℂ - ↑r * ↑‖x‖ ^ 2‖ = ‖⟪↑x, ↑T x - z • ↑x⟫_ℂ‖ simp [inner_sub_right, inner_smul_right, hrz] All goals completed! 🐙
_ ≤ ‖T x - z • x‖ * ‖x‖ := mul_comm _ ‖x‖ ▸ norm_inner_le_norm _ _
If m is an upper bound on the numerical range then the regularity domain contains (m,∞).
lemma Ioi_subset_regularityDomain {m : ℝ} (h : m ∈ upperBounds (Θᵣₑ T)) :
ofReal '' Ioi m ⊆ T.regularityDomain := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)⊢ ofReal '' Ioi m ⊆ T.regularityDomain
intro z ⟨r, hr, hrz⟩ H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ z ∈ T.regularityDomain
rw [← neg_mem_neg, H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ -T.regularityDomain H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ (-T).regularityDomain ← regularityDomain_neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ (-T).regularityDomain H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ (-T).regularityDomain] H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ (-T).regularityDomain
refine hT.neg.Iio_subset_regularityDomain (m := -m) ?_ ?_ refine_1 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -m ∈ lowerBounds (Θᵣₑ (-T))refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ ofReal '' Iio (-m)
· refine_1 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -m ∈ lowerBounds (Θᵣₑ (-T)) exact fun _ _ ↦ by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = zx✝¹:ℝx✝:x✝¹ ∈ Θᵣₑ (-T)⊢ -m ≤ x✝¹ simp_all [neg_le.mp, upperBounds] All goals completed! 🐙
· refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -z ∈ ofReal '' Iio (-m) exact ⟨-r, by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ -r ∈ Iio (-m) simp [mem_Ioi.mp hr] All goals completed! 🐙, by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝh:m ∈ upperBounds (Θᵣₑ T)z:ℂr:ℝhr:r ∈ Ioi mhrz:↑r = z⊢ ↑(-r) = -z simp [hrz] All goals completed! 🐙⟩The regularity domain of a symmetric operator is connected iff it contains a real number.
lemma regularityDomain_isConnected_iff :
IsConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty
rw [T.regularityDomain_isOpen.isConnected_iff_isPathConnected H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsPathConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsPathConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty] H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsPathConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty
constructor mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsPathConnected T.regularityDomain → (ofReal ⁻¹' T.regularityDomain).Nonemptympr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty → IsPathConnected T.regularityDomain
· mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsPathConnected T.regularityDomain → (ofReal ⁻¹' T.regularityDomain).Nonempty intro h mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomain⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
obtain ⟨f, hf⟩ : JoinedIn T.regularityDomain (-I) I :=
h.joinedIn _ (hT.mem_regularityDomain_of_im_ne_zero (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomain⊢ (-I).im ≠ 0 mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomain⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty simp All goals completed! 🐙mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomain⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty)) _
(hT.mem_regularityDomain_of_im_ne_zero (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomain⊢ I.im ≠ 0mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomain⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty simp All goals completed! 🐙mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomain⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty))mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomain⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
have hIVT := intermediate_value_Icc (f := fun t ↦ (f t).im) zero_le_one (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomain⊢ ContinuousOn (fun t => (f t).im) (Icc 0 1) mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (f 0).im (f 1).im ⊆ (fun t => (f t).im) '' Icc 0 1⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty fun_prop All goals completed! 🐙mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (f 0).im (f 1).im ⊆ (fun t => (f t).im) '' Icc 0 1⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty)mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (f 0).im (f 1).im ⊆ (fun t => (f t).im) '' Icc 0 1⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
simp only [Path.source, neg_im, I_im, Path.target] at hIVT mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
obtain ⟨t, _, ht⟩ := hIVT (show (0 : ℝ) ∈ Icc (-1) 1 by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty simp All goals completed! 🐙mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty)mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) Ihf:∀ (t : ↑unitInterval), f t ∈ T.regularityDomainhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
specialize hf t mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:f t ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
rw [← re_add_im (f t), mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:↑(f t).re + ↑(f t).im * I ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:↑(f t).re + ↑0 * I ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty show (f t).im = 0 from ht mp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:↑(f t).re + ↑0 * I ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonemptymp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:↑(f t).re + ↑0 * I ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty] at hfmp H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:↑(f t).re + ↑0 * I ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
exact ⟨(f t).re, by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:IsPathConnected T.regularityDomainf:Path (-I) IhIVT:Icc (-1) 1 ⊆ (fun t => (f t).im) '' Icc 0 1t:↑unitIntervalhf:↑(f t).re + ↑0 * I ∈ T.regularityDomainleft✝:t ∈ Icc 0 1ht:(fun t => (f t).im) t = 0⊢ (f t).re ∈ ofReal ⁻¹' T.regularityDomain simp_all All goals completed! 🐙⟩
· mpr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty → IsPathConnected T.regularityDomain intro ⟨r, hr⟩ mpr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:r ∈ ofReal ⁻¹' T.regularityDomain⊢ IsPathConnected T.regularityDomain
apply mem_preimage.mp at hr mpr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomain⊢ IsPathConnected T.regularityDomain
refine isPathConnected_iff.mpr ⟨?_, fun z₁ hz₁ z₂ hz₂ ↦ ?_⟩ mpr.refine_1 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomain⊢ T.regularityDomain.Nonemptympr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomain⊢ JoinedIn T.regularityDomain z₁ z₂
· mpr.refine_1 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomain⊢ T.regularityDomain.Nonempty exact ⟨I, hT.mem_regularityDomain_of_im_ne_zero (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomain⊢ I.im ≠ 0 simp All goals completed! 🐙)⟩
· mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomain⊢ JoinedIn T.regularityDomain z₁ z₂ have h : ∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z r := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
intro z hz H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomain⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
by_cases hz_im : z.im = 0 pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0⊢ JoinedIn T.regularityDomain z ↑rneg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ rcases eq_or_ne z r with rfl | hzr pos.inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainhz:↑r ∈ T.regularityDomainhz_im:(↑r).im = 0⊢ JoinedIn T.regularityDomain ↑r ↑rpos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑r⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· pos.inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainhz:↑r ∈ T.regularityDomainhz_im:(↑r).im = 0⊢ JoinedIn T.regularityDomain ↑r ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ exact JoinedIn.refl hr All goals completed! 🐙mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑r⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ let path : Path z r := {
toFun t := ((z + r) + (z - r) * cexp (Real.pi * t * I)) / 2
source' := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑r⊢ (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑0 * I)) / 2 = z pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp All goals completed! 🐙pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
target' := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑r⊢ (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑1 * I)) / 2 = ↑rpos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp [add_comm z r, add_add_sub_cancel] All goals completed! 🐙pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
}pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
refine ⟨path, fun t ↦ ?_⟩ pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitInterval⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
by_cases! ht : ∃ n : ℤ, n = (t : ℝ) pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∃ n, ↑n = ↑t⊢ path t ∈ T.regularityDomainneg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑t⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∃ n, ↑n = ↑t⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ obtain ⟨n, htn⟩ := ht pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
have hexp : cexp (Real.pi * t * I) = (-1) ^ n := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ IsConnected T.regularityDomain ↔ (ofReal ⁻¹' T.regularityDomain).Nonempty pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
rw [← exp_pi_mul_I, H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑t * I) = cexp (↑Real.pi * I) ^ n H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑n * I) = cexp (↑n * (↑Real.pi * I))pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ ← exp_int_mul, H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑t * I) = cexp (↑n * (↑Real.pi * I)) H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑n * I) = cexp (↑n * (↑Real.pi * I))pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ ← htn H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑n * I) = cexp (↑n * (↑Real.pi * I)) H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑n * I) = cexp (↑n * (↑Real.pi * I))pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂] H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ cexp (↑Real.pi * ↑↑n * I) = cexp (↑n * (↑Real.pi * I))pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
exact congrArg cexp (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ ↑Real.pi * ↑↑n * I = ↑n * (↑Real.pi * I)pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ push_cast H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑t⊢ ↑Real.pi * ↑n * I = ↑n * (↑Real.pi * I)pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂; ring All goals completed! 🐙pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂)pos H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
rcases Int.even_or_odd n with he | ho pos.inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ nhe:Even n⊢ path t ∈ T.regularityDomainpos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ nho:Odd n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· pos.inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ nhe:Even n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp [path, hexp, he.neg_one_zpow, hz] All goals completed! 🐙mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· pos.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervaln:ℤhtn:↑n = ↑thexp:cexp (↑Real.pi * ↑↑t * I) = (-1) ^ nho:Odd n⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp [path, hexp, ho.neg_one_zpow, add_comm z r, hr] All goals completed! 🐙mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑t⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ have hzr' : z.re - r ≠ 0 :=
fun h ↦ hzr <| Complex.ext (sub_eq_zero.mp h) (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑th:z.re - r = 0⊢ z.im = (↑r).im neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑thzr':z.re - r ≠ 0⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp [hz_im] All goals completed! 🐙neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑thzr':z.re - r ≠ 0⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂)neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑thzr':z.re - r ≠ 0⊢ path t ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
refine hT.mem_regularityDomain_of_im_ne_zero ?_ neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:z.im = 0hzr:z ≠ ↑rpath:Path z ↑r :=
{ toFun := fun t => (z + ↑r + (z - ↑r) * cexp (↑Real.pi * ↑↑t * I)) / 2, continuous_toFun := ⋯, source' := ⋯,
target' := ⋯ }t:↑unitIntervalht:∀ (n : ℤ), ↑n ≠ ↑thzr':z.re - r ≠ 0⊢ (path t).im ≠ 0mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
simp [path, hz_im, exp_im, Real.sin_eq_zero_iff, mul_comm, hzr', ht] All goals completed! 🐙mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0⊢ JoinedIn T.regularityDomain z ↑rmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ refine JoinedIn.of_segment_subset fun w ⟨a, b, _, _, _, hw⟩ ↦ ?_ neg H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0w:ℂx✝:w ∈ segment ℝ z ↑ra:ℝb:ℝleft✝²:0 ≤ aleft✝¹:0 ≤ bleft✝:a + b = 1hw:a • z + b • ↑r = w⊢ w ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
rcases eq_zero_or_neZero a with rfl | _ neg.inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0w:ℂx✝:w ∈ segment ℝ z ↑rb:ℝleft✝²:0 ≤ bleft✝¹:0 ≤ 0left✝:0 + b = 1hw:0 • z + b • ↑r = w⊢ w ∈ T.regularityDomainneg.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0w:ℂx✝:w ∈ segment ℝ z ↑ra:ℝb:ℝleft✝²:0 ≤ aleft✝¹:0 ≤ bleft✝:a + b = 1hw:a • z + b • ↑r = wh✝:NeZero a⊢ w ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· neg.inl H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0w:ℂx✝:w ∈ segment ℝ z ↑rb:ℝleft✝²:0 ≤ bleft✝¹:0 ≤ 0left✝:0 + b = 1hw:0 • z + b • ↑r = w⊢ w ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp_all All goals completed! 🐙mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
· neg.inr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0w:ℂx✝:w ∈ segment ℝ z ↑ra:ℝb:ℝleft✝²:0 ≤ aleft✝¹:0 ≤ bleft✝:a + b = 1hw:a • z + b • ↑r = wh✝:NeZero a⊢ w ∈ T.regularityDomainmpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ exact hT.mem_regularityDomain_of_im_ne_zero fun _ ↦ hz_im (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainz:ℂhz:z ∈ T.regularityDomainhz_im:¬z.im = 0w:ℂx✝¹:w ∈ segment ℝ z ↑ra:ℝb:ℝleft✝²:0 ≤ aleft✝¹:0 ≤ bleft✝:a + b = 1hw:a • z + b • ↑r = wh✝:NeZero ax✝:w.im = 0⊢ z.im = 0mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂ simp_all [← hw] All goals completed! 🐙mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂)mpr.refine_2 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricr:ℝhr:↑r ∈ T.regularityDomainz₁:ℂhz₁:z₁ ∈ T.regularityDomainz₂:ℂhz₂:z₂ ∈ T.regularityDomainh:∀ z ∈ T.regularityDomain, JoinedIn T.regularityDomain z ↑r⊢ JoinedIn T.regularityDomain z₁ z₂
exact (h z₁ hz₁).trans (h z₂ hz₂).symm All goals completed! 🐙The regularity domain of a lower semibounded symmetric operator is connected.
lemma regularityDomain_isConnected_of_bddBelow (h : BddBelow (Θᵣₑ T)) :
IsConnected T.regularityDomain := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:BddBelow (Θᵣₑ T)⊢ IsConnected T.regularityDomain
obtain ⟨m, hm⟩ := h H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝhm:m ∈ lowerBounds (Θᵣₑ T)⊢ IsConnected T.regularityDomain
apply hT.regularityDomain_isConnected_iff.mpr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝhm:m ∈ lowerBounds (Θᵣₑ T)⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
exact ⟨m - 1, hT.Iio_subset_regularityDomain hm ⟨m - 1, by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝhm:m ∈ lowerBounds (Θᵣₑ T)⊢ m - 1 ∈ Iio m ∧ ↑(m - 1) = ↑(m - 1) simp All goals completed! 🐙⟩⟩The regularity domain of an upper semibounded symmetric operator is connected.
lemma regularityDomain_isConnected_of_bddAbove (h : BddAbove (Θᵣₑ T)) :
IsConnected T.regularityDomain := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetrich:BddAbove (Θᵣₑ T)⊢ IsConnected T.regularityDomain
obtain ⟨m, hm⟩ := h H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝhm:m ∈ upperBounds (Θᵣₑ T)⊢ IsConnected T.regularityDomain
apply hT.regularityDomain_isConnected_iff.mpr H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝhm:m ∈ upperBounds (Θᵣₑ T)⊢ (ofReal ⁻¹' T.regularityDomain).Nonempty
exact ⟨m + 1, hT.Ioi_subset_regularityDomain hm ⟨m + 1, by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricm:ℝhm:m ∈ upperBounds (Θᵣₑ T)⊢ m + 1 ∈ Ioi m ∧ ↑(m + 1) = ↑(m + 1) simp All goals completed! 🐙⟩⟩C. Point spectrum
Eigenvalues of a symmetric unbounded operator are real.
lemma pointSpectrum_real : σᵖ T ⊆ range ofReal := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetric⊢ σᵖ T ⊆ range ofReal
intro z hz H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ T⊢ z ∈ range ofReal
apply hT.numericalRange_subset H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ T⊢ z ∈ Θ T
obtain ⟨x, hx, hx₀⟩ := (Submodule.ne_bot_iff _).mp hz H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z ∈ Θ T
suffices z = (‖x‖ ^ 2)⁻¹ * ⟪↑x, T ⟨x, x.2.1⟩⟫_ℂ by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0this:z = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ⊢ z ∈ Θ T H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ
exact this ▸ mem_numericalRange (T := T) (x := ⟨x, x.2.1⟩) (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0this:z = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ⊢ ⟨↑x, ⋯⟩ ≠ 0 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ simp [hx₀] All goals completed! 🐙 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ) H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = ↑(‖x‖ ^ 2)⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ
rw [ofReal_inv H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = (↑(‖x‖ ^ 2))⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = (↑(‖x‖ ^ 2))⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ] H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ z = (↑(‖x‖ ^ 2))⁻¹ * ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ
refine (eq_inv_mul_iff_mul_eq₀ (by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ ↑(‖x‖ ^ 2) ≠ 0 simp [hx₀] All goals completed! 🐙)).mpr (Eq.symm ?_)
calc
_ = ⟪↑x, (T - z • 1) x + z • x⟫_ℂ := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ ⟪↑x, ↑T ⟨↑x, ⋯⟩⟫_ℂ = ⟪↑x, ↑(T - z • 1) x + z • ↑x⟫_ℂ simp [sub_apply] All goals completed! 🐙
_ = ⟪x, z • x⟫_ℂ := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ ⟪↑x, ↑(T - z • 1) x + z • ↑x⟫_ℂ = ⟪x, z • x⟫_ℂ simp [← toFun_eq_coe, LinearMap.mem_ker.mp hx] All goals completed! 🐙
_ = ↑(‖x‖ ^ 2) * z := by H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricz:ℂhz:z ∈ σᵖ Tx:↥(T - z • 1).domainhx:x ∈ (T - z • 1).toFun.kerhx₀:x ≠ 0⊢ ⟪x, z • x⟫_ℂ = ↑(‖x‖ ^ 2) * z simp [inner_smul_right, mul_comm] All goals completed! 🐙D. Essential self-adjointness
The basic criterion for essential self-adjointness: a symmetric, densely-defined operator
whose defect numbers at I and -I both vanish is essentially self-adjoint.
lemma isEssentiallySelfAdjoint_of_defectNumber_eq_zero
(hdense : T.HasDenseDomain) (hpos : T.defectNumber I = 0) (hneg : T.defectNumber (-I) = 0) :
T.IsEssentiallySelfAdjoint := by H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0⊢ T.IsEssentiallySelfAdjoint
have hrange {z : ℂ} (hz : z.im ≠ 0) (hd : T.defectNumber z = 0) :
(T.closure - z • 1).toFun.range = ⊤ := by
have hz' : z ∈ T.regularityDomain := hT.mem_regularityDomain_of_im_ne_zero hz H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomain⊢ (T.closure - z • 1).toFun.range = ⊤ H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint
have hcl : T.closure.IsClosed := (hT.isClosable hdense).closure_isClosed H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomainhcl:T.closure.IsClosed⊢ (T.closure - z • 1).toFun.range = ⊤ H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint
rw [← hcl.defectNumber_eq_zero_iff (T.regularityDomain_closure ▸ hz'), H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomainhcl:T.closure.IsClosed⊢ T.closure.defectNumber z = 0 H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomainhcl:T.closure.IsClosed⊢ T.defectNumber z = 0 H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint
defectNumber_closure hz' H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomainhcl:T.closure.IsClosed⊢ T.defectNumber z = 0 H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomainhcl:T.closure.IsClosed⊢ T.defectNumber z = 0 H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint] H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0z:ℂhz:z.im ≠ 0hd:T.defectNumber z = 0hz':z ∈ T.regularityDomainhcl:T.closure.IsClosed⊢ T.defectNumber z = 0 H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint
exact hd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ T.IsEssentiallySelfAdjoint
rw [isEssentiallySelfAdjoint_def H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ IsSelfAdjoint T.closure H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ IsSelfAdjoint T.closure] H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ IsSelfAdjoint T.closure
apply (hT.closure hdense).isSelfAdjoint_of_range_eq_top hdense.closure hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ (T.closure + I • 1).toFun.range = ⊤hsub H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ (T.closure - I • 1).toFun.range = ⊤
· hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ (T.closure + I • 1).toFun.range = ⊤ have hI : T.closure + I • 1 = T.closure - (-I) • 1 :=
LinearPMap.ext rfl fun x hf hg => by H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤x:Hhf:x ∈ (T.closure + I • 1).domainhg:x ∈ (T.closure - -I • 1).domain⊢ ↑(T.closure + I • 1) ⟨x, hf⟩ = ↑(T.closure - -I • 1) ⟨x, hg⟩ hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (T.closure + I • 1).toFun.range = ⊤ simp [sub_apply, add_apply, smul_apply, sub_neg_eq_add]hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (T.closure + I • 1).toFun.range = ⊤hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (T.closure + I • 1).toFun.range = ⊤
rw [hI hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (T.closure - -I • 1).toFun.range = ⊤ hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (T.closure - -I • 1).toFun.range = ⊤]hadd H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (T.closure - -I • 1).toFun.range = ⊤
exact hrange (by H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤hI:T.closure + I • 1 = T.closure - -I • 1⊢ (-I).im ≠ 0 norm_num All goals completed! 🐙) hneg
· hsub H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ (T.closure - I • 1).toFun.range = ⊤ exact hrange (by H:Type u_1inst✝²:NormedAddCommGroup Hinst✝¹:InnerProductSpace ℂ HT:H →ₗ.[ℂ] HhT:T.IsSymmetricinst✝:CompleteSpace Hhdense:T.HasDenseDomainhpos:T.defectNumber I = 0hneg:T.defectNumber (-I) = 0hrange:∀ {z : ℂ}, z.im ≠ 0 → T.defectNumber z = 0 → (T.closure - z • 1).toFun.range = ⊤⊢ I.im ≠ 0 norm_num All goals completed! 🐙) hpos