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.Basic

Spectral 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 section

A. 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 hT

The 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 Θ Tz.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 = zz.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⟫_ = zz.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 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_subset

B. 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 := H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricz:hz:z.im 0z T.regularityDomain H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricz:hz:z.im 0z (_root_.closure (Θ T)) H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricz:hz:z.im 0h:z _root_.closure (Θ T)z.im = 0 H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricr:hz:(↑r).im 0h:r _root_.closure (Θ T)(↑r).im = 0 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).

All goals completed! 🐙 _ (s - r) * x ^ 2 := 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 All goals completed! 🐙 _ = s * x ^ 2 - r * x ^ 2 := 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 All goals completed! 🐙 _ = (s : ) * x ^ 2 - r * x ^ 2 := 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 < ss * x ^ 2 - r * x ^ 2 = s * x ^ 2 - r * x ^ 2 All goals completed! 🐙 _ = x, T x⟫_ - r * x ^ 2 := 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 < ss * x ^ 2 - r * x ^ 2 = x, T x⟫_ - r * x ^ 2 All goals completed! 🐙 _ = x, T x - z 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.domainhx:NeZero xs:hs':s = (x ^ 2)⁻¹ * x, T x⟫_hs:m shsr:r < sx, T x⟫_ - r * x ^ 2 = x, T x - z x⟫_ 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,∞).

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-m lowerBounds (Θᵣₑ (-T))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) 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 _ _ 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✝¹ All goals completed! 🐙 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, 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) All goals completed! 🐙, 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 All goals completed! 🐙

The regularity domain of a symmetric operator is connected iff it contains a real number.

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 rJoinedIn T.regularityDomain z₁ z₂ 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 := H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetrich:BddBelow (Θᵣₑ T)IsConnected T.regularityDomain H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricm:hm:m lowerBounds (Θᵣₑ T)IsConnected T.regularityDomain 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, H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricm:hm:m lowerBounds (Θᵣₑ T)m - 1 Iio m (m - 1) = (m - 1) 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 := H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetrich:BddAbove (Θᵣₑ T)IsConnected T.regularityDomain H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricm:hm:m upperBounds (Θᵣₑ T)IsConnected T.regularityDomain 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, H:Type u_1inst✝¹:NormedAddCommGroup Hinst✝:InnerProductSpace HT:H →ₗ.[] HhT:T.IsSymmetricm:hm:m upperBounds (Θᵣₑ T)m + 1 Ioi m (m + 1) = (m + 1) All goals completed! 🐙

C. Point spectrum

Eigenvalues of a symmetric unbounded operator are real.

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 0z = (↑(x ^ 2))⁻¹ * x, T x, ⟫_ refine (eq_inv_mul_iff_mul_eq₀ (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 All goals completed! 🐙)).mpr (Eq.symm ?_) calc _ = x, (T - z 1) x + z 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 0x, T x, ⟫_ = x, (T - z 1) x + z x⟫_ All goals completed! 🐙 _ = x, z 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 0x, (T - z 1) x + z x⟫_ = x, z x⟫_ All goals completed! 🐙 _ = (x ^ 2) * z := 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 0x, z x⟫_ = (x ^ 2) * z 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.

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 (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 All goals completed! 🐙) hneg 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 (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 All goals completed! 🐙) hpos