Documentation

LeanPool.DavisKahan.ForTauCeti.Analysis.OperatorIdeal.ApproximationNumber.FiniteDimensional

Approximation numbers on finite-dimensional Hilbert spaces #

This module begins the bridge between the finite-dimensional singular-value library and approximation numbers defined by finite-rank operator-norm approximation.

The main result is the finite-dimensional Eckart--Young identification: the nth approximation number equals the nth singular value. The lower bound uses the Courant--Fischer (n+1)-dimensional right singular subspace and dimension counting against the kernel of an arbitrary rank-at-most-n approximant. The upper bound projects onto the first n right singular directions and controls the complementary spectral tail.

Main declarations #

The reverse inequality is private: it is the half that exists only to be combined into the identification. See the declaration for the reasoning.

Namespace note #

These declarations extend the existing Mathlib namespace ContinuousLinearMap rather than living under TauCeti, so that dot notation (T.approximationNumber_eq_singularValues) resolves and the names match the eventual Mathlib upstreaming target. Lean field projection binds T.foo only to the literal ContinuousLinearMap.foo and does not consult the enclosing TauCeti namespace. The Courant--Fischer helpers imported here, by contrast, live under TauCeti. This is a deliberate API choice, flagged for Tau Ceti maintainer review.

Provenance #

theorem ContinuousLinearMap.singularValues_le_norm_sub_of_rank_le {𝕜 : Type u} [RCLike 𝕜] {E : Type v} {F : Type w} [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] [NormedAddCommGroup F] [InnerProductSpace 𝕜 F] [FiniteDimensional 𝕜 F] (T R : E →L[𝕜] F) (n : ℕ) (hR : (↑R).rank ≤ ↑n) :

Lower Eckart--Young inequality in operator-norm form: an operator of rank at most n cannot approximate T more closely than the nth singular value of T.

The nth finite-dimensional singular value is bounded by the nth approximation number. This is the lower half of the finite-dimensional Eckart--Young identification.

Finite-dimensional Eckart--Young identification for the zero-based approximation-number convention used in this project: aₙ(T) = σₙ(T), with no index shift on either side.

Deliberately not @[simp]. It would fire on every approximationNumber goal that happens to sit under FiniteDimensional instances, rewriting the object this development is about into Mathlib's, which is the wrong normal form for a downstream perturbation argument; and unlike the other direction there is no cheap way for a consumer to opt out once it is global.

Weyl's inequality for singular values: |σₙ(T) − σₙ(S)| ≤ ‖T − S‖.

Every singular value is 1-Lipschitz in the operator norm — the singular-value counterpart of Weyl's eigenvalue inequality, and the standard sharp form: there is no auxiliary bound on T or S, and no factor depending on their size.

The proof is not an argument about singular values at all. It is abs_approximationNumber_sub_approximationNumber_le, which holds over any normed space with no inner product, transported through the Eckart--Young identification above. That is the payoff of stating the s-number layer field-generically: the Hilbert-space theorem is a corollary of a Banach-space one.

theorem ContinuousLinearMap.singularValues_eq_zero_iff_rank_le {𝕜 : Type u} [RCLike 𝕜] {E : Type v} {F : Type w} [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] [NormedAddCommGroup F] [InnerProductSpace 𝕜 F] [FiniteDimensional 𝕜 F] (T : E →L[𝕜] F) (n : ℕ) :
T.singularValues n = 0 ↔ (↑T).rank ≤ ↑n

Singular values have the same exact rank cutoff as approximation numbers.