Documentation

LeanPool.DavisKahan.ForTauCeti.Analysis.InnerProductSpace.CourantFischer

Courant–Fischer min-max and Weyl's eigenvalue perturbation inequality #

For a symmetric operator T on a finite-dimensional inner product space over π•œ = ℝ, β„‚, Mathlib provides the decreasingly sorted eigenvalues LinearMap.IsSymmetric.eigenvalues together with an orthonormal eigenbasis LinearMap.IsSymmetric.eigenvectorBasis. This file proves the discrete Courant–Fischer characterization of these sorted eigenvalues β€” the directional bounds and the characteristic sup-inf equality β€” and derives from it Weyl's eigenvalue perturbation inequality.

Main results #

References #

Namespace note #

The eigenvalue results extend LinearMap.IsSymmetric (dot notation on the Mathlib symmetry certificate, matching IsSymmetric.eigenvalues); the two-operator Weyl inequalities are helper facts under TauCeti.

Provenance #

theorem inf_ne_bot_of_finrank_lt {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] [FiniteDimensional π•œ E] {V W : Submodule π•œ E} (h : Module.finrank π•œ E < Module.finrank π•œ β†₯V + Module.finrank π•œ β†₯W) :
V βŠ“ W β‰  βŠ₯

Two subspaces whose dimensions overshoot the ambient one must meet.

The contrapositive of Submodule.finrank_add_finrank_le_of_disjoint, in the form the min--max arguments below use it; both of them derived it inline from finrank_sup_add_finrank_inf_eq.

theorem Finset.card_filter_lt {n k : β„•} (hk : k ≀ n) :
{j : Fin n | ↑j < k}.card = k

The first k indices of Fin n number exactly k.

A Finset counting fact with no eigenvalue content, kept here because this is the module both of its consumers already import β€” Analysis/InnerProductSpace/KyFan.lean for the Ky Fan trace inequality and Analysis/OperatorIdeal/ApproximationNumber/FiniteDimensional.lean for a span dimension. Each had its own private copy, differing only by a prime on the name.

Mathlib has Fin.card_Iio but not this filter form, which is the shape a Finset.sum_const leaves behind.

The quadratic form in the eigenbasis #

theorem LinearMap.IsSymmetric.re_inner_apply_self_eq_sum_eigenvalues_mul_sq {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) (x : E) :
RCLike.re (inner π•œ (T x) x) = βˆ‘ i : Fin n, hT.eigenvalues hn i * β€–((hT.eigenvectorBasis hn).repr x).ofLp iβ€– ^ 2

The quadratic form re βŸͺT x, x⟫ of a symmetric operator T expressed in its eigenbasis: it is the eigenvalue-weighted sum of the squared norms of the coordinates of x. This is the diagonalization of the quadratic form. (For symmetric T the inner product βŸͺT x, x⟫ is real, so no information is lost by taking the real part.)

theorem LinearMap.IsSymmetric.re_inner_apply_self_le_of_mem_spanIndices {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) {s : Set (Fin n)} {c : ℝ} (hc : βˆ€ i ∈ s, hT.eigenvalues hn i ≀ c) {x : E} (hx : x ∈ (hT.eigenvectorBasis hn).spanIndices s) :
RCLike.re (inner π•œ (T x) x) ≀ c * β€–xβ€– ^ 2

On the span of a selected subfamily of the eigenbasis, the quadratic form is bounded by any bound on the selected eigenvalues: if x ∈ b.spanIndices s (so its coordinates vanish off s) and every selected eigenvalue satisfies Ξ»α΅’ ≀ c, then re βŸͺT x, x⟫ ≀ c β€–xβ€–Β².

theorem LinearMap.IsSymmetric.le_re_inner_apply_self_of_mem_spanIndices {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) {s : Set (Fin n)} {c : ℝ} (hc : βˆ€ i ∈ s, c ≀ hT.eigenvalues hn i) {x : E} (hx : x ∈ (hT.eigenvectorBasis hn).spanIndices s) :
c * β€–xβ€– ^ 2 ≀ RCLike.re (inner π•œ (T x) x)

Dual of re_inner_apply_self_le_of_mem_spanIndices: if x ∈ b.spanIndices s and every selected eigenvalue satisfies c ≀ Ξ»α΅’, then c β€–xβ€–Β² ≀ re βŸͺT x, x⟫.

Discrete Courant–Fischer directional bounds #

theorem LinearMap.IsSymmetric.exists_unit_vector_re_inner_le_eigenvalue {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) (k : Fin n) (V : Submodule π•œ E) (hV : Module.finrank π•œ β†₯V = ↑k + 1) :
βˆƒ x ∈ V, β€–xβ€– = 1 ∧ RCLike.re (inner π•œ (T x) x) ≀ hT.eigenvalues hn k

Courant–Fischer, upper direction. On any subspace V of dimension k + 1 there is a unit vector x with re βŸͺT x, x⟫ ≀ Ξ»β‚–(T), where Ξ» is the decreasing enumeration LinearMap.IsSymmetric.eigenvalues of the eigenvalues of the symmetric operator T.

theorem LinearMap.IsSymmetric.exists_submodule_forall_unit_eigenvalue_le_re_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) (k : Fin n) :
βˆƒ (V : Submodule π•œ E), Module.finrank π•œ β†₯V = ↑k + 1 ∧ βˆ€ x ∈ V, β€–xβ€– = 1 β†’ hT.eigenvalues hn k ≀ RCLike.re (inner π•œ (T x) x)

Courant–Fischer, lower direction. There is a subspace V of dimension k + 1 on which every unit vector x satisfies Ξ»β‚–(T) ≀ re βŸͺT x, x⟫, where Ξ» is the decreasing enumeration LinearMap.IsSymmetric.eigenvalues of the eigenvalues of the symmetric operator T.

Witness: V = span {bα΅’ : i ≀ k}; on it the quadratic form is bounded below by Ξ»β‚– since all involved eigenvalues are β‰₯ Ξ»β‚–.

The Courant–Fischer min-max equality #

theorem LinearMap.IsSymmetric.eigenvalues_eq_iSup_iInf_re_inner {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) (k : Fin n) :
hT.eigenvalues hn k = ⨆ (V : { V : Submodule π•œ E // Module.finrank π•œ β†₯V = ↑k + 1 }), β¨… (x : { x : E // x ∈ ↑V ∧ β€–xβ€– = 1 }), RCLike.re (inner π•œ (T ↑x) ↑x)

Courant–Fischer min-max equality. The k-th (decreasingly sorted) eigenvalue of a symmetric operator on a finite-dimensional inner product space over π•œ = ℝ, β„‚ is the supremum, over the subspaces V of dimension k + 1, of the infimum of the Rayleigh quotient re βŸͺT x, x⟫ over the unit vectors of V.

Horn & Johnson, Matrix Analysis 2nd ed., Theorem 4.2.6.

Sorted-eigenvalue uniqueness and Loewner monotonicity #

Courant–Fischer consequences needed by the Ky Fan / unitarily-invariant-norm development: an antitone list diagonalizing a symmetric operator in some orthonormal basis is the sorted eigenvalue list, and the sorted eigenvalues are monotone in the quadratic form (Loewner order).

theorem LinearMap.IsSymmetric.re_inner_apply_self_eq_sum_of_eigenbasis {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} {S : E β†’β‚—[π•œ] E} (hS : S.IsSymmetric) (w : OrthonormalBasis (Fin n) π•œ E) {ΞΌ : Fin n β†’ ℝ} (hw : βˆ€ (i : Fin n), S (w i) = ↑(ΞΌ i) β€’ w i) (x : E) :
RCLike.re (inner π•œ (S x) x) = βˆ‘ i : Fin n, ΞΌ i * β€–(w.repr x).ofLp iβ€– ^ 2

Diagonalization of the quadratic form in any orthonormal eigenbasis: if S (w i) = ΞΌ i β€’ w i for all i, then re βŸͺS x, x⟫ = βˆ‘ i, ΞΌ i * β€–w.repr x iβ€– ^ 2.

theorem LinearMap.IsSymmetric.eigenvalues_eq_of_eigenbasis {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {S : E β†’β‚—[π•œ] E} (hS : S.IsSymmetric) (hn : Module.finrank π•œ E = n) (w : OrthonormalBasis (Fin n) π•œ E) {ΞΌ : Fin n β†’ ℝ} (hΞΌ : Antitone ΞΌ) (hw : βˆ€ (i : Fin n), S (w i) = ↑(ΞΌ i) β€’ w i) :
hS.eigenvalues hn = ΞΌ

Sorted-eigenvalue uniqueness. If an orthonormal basis w diagonalizes the symmetric operator S with an antitone value list ΞΌ, then ΞΌ is the sorted eigenvalue list: hS.eigenvalues hn = ΞΌ. (Courant–Fischer: both lists satisfy the same minimax characterization.)

theorem LinearMap.IsSymmetric.eigenvalue_mono {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T S : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hS : S.IsSymmetric) (hn : Module.finrank π•œ E = n) (h : βˆ€ (x : E), RCLike.re (inner π•œ (T x) x) ≀ RCLike.re (inner π•œ (S x) x)) (k : Fin n) :

Loewner monotonicity of the sorted eigenvalues. If the quadratic form of T is dominated by that of S, then so is every sorted eigenvalue.

theorem LinearMap.IsSymmetric.map_mem_spanIndices {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hn : Module.finrank π•œ E = n) (s : Set (Fin n)) {x : E} (hx : x ∈ (hT.eigenvectorBasis hn).spanIndices s) :

The span of a selected subfamily of the eigenbasis of a symmetric operator is invariant under the operator.

Weyl's inequality #

theorem TauCeti.abs_eigenvalue_sub_eigenvalue_le {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T S : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hS : S.IsSymmetric) (hn : Module.finrank π•œ E = n) {Ξ΅ : ℝ} (hΞ΅ : βˆ€ (x : E), β€–(T - S) xβ€– ≀ Ξ΅ * β€–xβ€–) (k : Fin n) :
|hT.eigenvalues hn k - hS.eigenvalues hn k| ≀ Ξ΅

Weyl's inequality for symmetric operators on a finite-dimensional inner product space over π•œ = ℝ, β„‚: the k-th (decreasingly sorted) eigenvalues of T and S differ by at most the operator norm of T βˆ’ S.

At LinearMap level there is no operator norm, so the bound is supplied as the pointwise hypothesis βˆ€ x, β€–(T βˆ’ S) xβ€– ≀ Ξ΅ * β€–xβ€–; see TauCeti.abs_eigenvalue_sub_eigenvalue_le_norm for the continuous-linear-map operator-norm form.

Horn & Johnson, Matrix Analysis 2nd ed., Theorem 4.3.1; Bhatia, Matrix Analysis, Corollary III.2.6.

theorem TauCeti.abs_eigenvalue_sub_eigenvalue_le_norm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T S : E β†’L[π•œ] E} (hT : (↑T).IsSymmetric) (hS : (↑S).IsSymmetric) (hn : Module.finrank π•œ E = n) (k : Fin n) :

Weyl's inequality, operator-norm form, for symmetric (equivalently, self-adjoint) continuous linear maps on a finite-dimensional inner product space: the k-th sorted eigenvalues of T and S differ by at most β€–T βˆ’ Sβ€–. The symmetry hypotheses are stated on the underlying linear maps so that the signature does not require the adjoint star structure (whose instance needs CompleteSpace E, which FiniteDimensional deliberately does not register as an instance).

Related Lean work: YuanheZ/lean-stat-learning-theory, SLT/MatrixInfra/Perturb.lean at commit 216e578c9576bab6b0abc3ba6c65762536768e96, proves the same operator-norm endpoint. The present proof belongs to the local Courant--Fischer chain and is retained to keep the development self-contained.

theorem TauCeti.abs_eigenvalues_sub_le_opNorm {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T S : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) (hS : S.IsSymmetric) (hn : Module.finrank π•œ E = n) (k : Fin n) :

Weyl's inequality, LinearMap form: the bound is the operator norm of T - S read through LinearMap.toContinuousLinearMap.

Two things about this declaration are not free choices, and both are worth stating rather than leaving to be rediscovered.

The name does not follow the convention its neighbours use (abs_eigenvalue_sub_eigenvalue_le, abs_eigenvalue_sub_eigenvalue_le_norm) because it is pinned as data: comparator/candidate-02-courant-fischer-weyl.json lists TauCeti.abs_eigenvalues_sub_le_opNorm in its theorem_names, and the paired immutable challenge statement in Challenge/MathlibCandidate/CourantFischerWeyl/Conformance.lean declares it under that name. Renaming it here would silently orphan the conformance comparison, which no compiler checks.

The duplication with abs_eigenvalue_sub_eigenvalue_le_norm is only apparent. The eigenvalue API is stated for LinearMap.IsSymmetric, so the LinearMap form is the one that needs no coercion in its hypotheses; the continuous form above needs (T : E β†’β‚—[π•œ] E) in both. They bound the same quantity by norms of two different objects.

theorem TauCeti.eigenvalues_congr {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {S₁ Sβ‚‚ : E β†’β‚—[π•œ] E} (h : S₁ = Sβ‚‚) (hS₁ : S₁.IsSymmetric) (hSβ‚‚ : Sβ‚‚.IsSymmetric) (hn : Module.finrank π•œ E = n) :
hS₁.eigenvalues hn = hSβ‚‚.eigenvalues hn

Sorted eigenvalues are congruent along an operator equality (the eigenvalue enumeration depends only on the operator, not on the symmetry proof).

theorem TauCeti.eigenvalues_cast {π•œ : Type u_1} {E : Type u_2} [RCLike π•œ] [NormedAddCommGroup E] [InnerProductSpace π•œ E] {n : β„•} [FiniteDimensional π•œ E] {T : E β†’β‚—[π•œ] E} (hT : T.IsSymmetric) {m : β„•} (hm : Module.finrank π•œ E = m) (hn : Module.finrank π•œ E = n) (hmn : m = n) (i : Fin m) :
hT.eigenvalues hm i = hT.eigenvalues hn (Fin.cast hmn i)

The eigenvalue enumeration does not depend on which witness of the dimension indexes it: two witnesses finrank π•œ E = m and finrank π•œ E = n enumerate the same eigenvalues, read across the induced Fin m ≃ Fin n.

Both spellings occur in practice. A matrix over Fin n has Matrix.IsHermitian.eigenvaluesβ‚€ indexed by Fin (Fintype.card (Fin n)), while the operator theory it is transported to indexes by Fin n; Fintype.card (Fin n) = n is a theorem and not definitional, so the two index types are genuinely different.