← ALL STATEMENTS
AcceptedDefinition with auxiliary statements (proofs omitted)

Thin singular value decomposition

A thin SVD retains precisely the singular directions associated with nonzero singular values.

Drineas & Mahoney ↗
Source label: def:thin-svd

Definition. The displayed code defines the mathematical object or predicate. Auxiliary statements shown alongside the definition have omitted proofs (sorry).

01 / MATHEMATICAL STATEMENT

Meaning & conditions

Mathematical summary

A thin SVD retains precisely the singular directions associated with nonzero singular values.

A=UΣV⊤=∑i=1ρσiuivi⊤,U⊤U=V⊤V=IρA=U\Sigma V^\top=\sum_{i=1}^{\rho}\sigma_i u_i v_i^\top,\qquad U^\top U=V^\top V=I_\rho

Assumptions & context

  • A has rank ρ; U and V have ρ orthonormal columns, and Σ is a ρ × ρ diagonal matrix.

Source

Drineas & Mahoney. Lectures on randomized numerical linear algebra.

Source label: def:thin-svd

02 / LEAN REPRESENTATION

Definition

Definition with auxiliary statements (proofs omitted). Expand the complete file below to read imports, local definitions and surrounding context.

structure IsThinSVD {m n ρ : ℕ} (A : Matrix (Fin m) (Fin n) ℝ)
    (U : Matrix (Fin m) (Fin ρ) ℝ) (S : Matrix (Fin ρ) (Fin ρ) ℝ)
    (V : Matrix (Fin n) (Fin ρ) ℝ) : Prop where
  /-- `ρ` is the rank of `A`. -/
  rank_eq : A.rank = ρ
  /-- `A = U Σ Vᵀ`. -/
  factorization : A = U * S * Vᵀ
  /-- `A = ∑_{i=1}^ρ σ_i u_i v_iᵀ`. -/
  outer_sum : A = ∑ i : Fin ρ, S i i • Matrix.vecMulVec (fun r => U r i) (fun c => V c i)
  /-- `UᵀU = I`. -/
  U_orthonormal : Uᵀ * U = 1
  /-- `VᵀV = I`. -/
  V_orthonormal : Vᵀ * V = 1
  /-- The columns of `V` are right singular vectors: `A v_i = σ_i u_i`. -/
  right_singular_vectors : A * V = U * S
  /-- The columns of `U` are left singular vectors: `Aᵀ u_i = σ_i v_i`. -/
  left_singular_vectors : Aᵀ * U = V * S
  /-- `Σ` is diagonal. -/
  S_diag : S.IsDiag
  /-- The diagonal of `Σ` consists exactly of the non-zero singular values of `A`
  (with multiplicity). -/
  S_diag_eq_nonzero_singular_values :
    (Finset.univ : Finset (Fin ρ)).val.map (fun i => S i i) = nonzeroSingularValueMultiset A
  /-- The diagonal entries appear in decreasing (non-increasing) order. -/
  S_antitone : Antitone (fun i : Fin ρ => S i i)

theorem rank_le_min {m n : ℕ} (A : Matrix (Fin m) (Fin n) ℝ) :
    A.rank ≤ min m n := by sorry
Complete Lean file and local definitions
import RNLAPhaseB.B3Base
import RNLAPhaseB.Complexity

open MeasureTheory
open scoped Matrix
open scoped Matrix.Norms.L2Operator
open scoped BigOperators
open scoped ENNReal

/-!
# dm2017 def:thin-svd

Notation convention (dm2017 book.md:105, opening the section `# Linear Algebra`,
which contains the subsection `## The Singular Value Decomposition.` where this
definition appears). The section presents "basic linear algebraic facts and
notation" and assumes "basic familiarity with linear algebra (e.g., inner/outer
products of vectors, basic matrix operations such as addition, scalar
multiplication, transposition, ..., matrix multiplication, ...)".

This file reads the target's undefined notation with that standard meaning:
* `Xᵀ` / `X^T` is `Matrix.transpose`;
* juxtaposed matrix products such as `U Σ Vᵀ` and `UᵀU` are Mathlib matrix
  multiplication `*`;
* `I` is the identity matrix `1`;
* the outer product `u_i v_iᵀ` is `Matrix.vecMulVec`;
* `σ_i u_i v_iᵀ` is scalar multiplication `•`, and `∑` is the finite matrix sum.

The convention adds no hypothesis beyond what the target states locally.
-/

namespace RNLAPhaseB.DM2017ThinSVD

/-- The singular values of `A` (with multiplicity): the square roots of the
eigenvalues of the symmetric positive semidefinite matrix `Aᴴ * A` (`= Aᵀ * A`
over ℝ). This is a multiset, so no ordering convention of Mathlib's eigenvalue
enumeration is used. -/
noncomputable def singularValueMultiset {m n : ℕ} (A : Matrix (Fin m) (Fin n) ℝ) :
    Multiset ℝ :=
  (Finset.univ : Finset (Fin n)).val.map
    (fun j => Real.sqrt ((Matrix.isHermitian_conjTranspose_mul_self A).eigenvalues j))

/-- The non-zero singular values of `A`, with multiplicity. -/
noncomputable def nonzeroSingularValueMultiset {m n : ℕ}
    (A : Matrix (Fin m) (Fin n) ℝ) : Multiset ℝ := by
  classical
  exact (singularValueMultiset A).filter (fun x => x ≠ 0)

/-- dm2017 def:thin-svd. For `A ∈ ℝ^{m×n}` of rank `ρ`, a thin SVD is
`A = U Σ Vᵀ = ∑_{i=1}^ρ σ_i u_i v_iᵀ`. Here `U ∈ ℝ^{m×ρ}` and `V ∈ ℝ^{n×ρ}` have
orthonormal columns (`UᵀU = I`, `VᵀV = I`) containing the left and right singular
vectors of `A` for the non-zero singular values. `Σ ∈ ℝ^{ρ×ρ}` is diagonal, with
the non-zero singular values of `A` in decreasing order on the diagonal.

Transposition, matrix products, the identity and outer products are read with
their standard meanings, per the Linear Algebra section's notation convention
(dm2017 book.md:105): `ᵀ` is `Matrix.transpose`, products are `*`, `I` is `1`,
and `u_i v_iᵀ` is `Matrix.vecMulVec`. -/
structure IsThinSVD {m n ρ : ℕ} (A : Matrix (Fin m) (Fin n) ℝ)
    (U : Matrix (Fin m) (Fin ρ) ℝ) (S : Matrix (Fin ρ) (Fin ρ) ℝ)
    (V : Matrix (Fin n) (Fin ρ) ℝ) : Prop where
  /-- `ρ` is the rank of `A`. -/
  rank_eq : A.rank = ρ
  /-- `A = U Σ Vᵀ`. -/
  factorization : A = U * S * Vᵀ
  /-- `A = ∑_{i=1}^ρ σ_i u_i v_iᵀ`. -/
  outer_sum : A = ∑ i : Fin ρ, S i i • Matrix.vecMulVec (fun r => U r i) (fun c => V c i)
  /-- `UᵀU = I`. -/
  U_orthonormal : Uᵀ * U = 1
  /-- `VᵀV = I`. -/
  V_orthonormal : Vᵀ * V = 1
  /-- The columns of `V` are right singular vectors: `A v_i = σ_i u_i`. -/
  right_singular_vectors : A * V = U * S
  /-- The columns of `U` are left singular vectors: `Aᵀ u_i = σ_i v_i`. -/
  left_singular_vectors : Aᵀ * U = V * S
  /-- `Σ` is diagonal. -/
  S_diag : S.IsDiag
  /-- The diagonal of `Σ` consists exactly of the non-zero singular values of `A`
  (with multiplicity). -/
  S_diag_eq_nonzero_singular_values :
    (Finset.univ : Finset (Fin ρ)).val.map (fun i => S i i) = nonzeroSingularValueMultiset A
  /-- The diagonal entries appear in decreasing (non-increasing) order. -/
  S_antitone : Antitone (fun i : Fin ρ => S i i)

/-- The source's stated range of the rank: `ρ ≤ min{m,n}`. -/
theorem rank_le_min {m n : ℕ} (A : Matrix (Fin m) (Fin n) ℝ) :
    A.rank ≤ min m n := by sorry

end RNLAPhaseB.DM2017ThinSVD

How to read the formalization

  • The structure fixes rank, factorization and the nonzero singular-value multiset. An auxiliary rank bound is stated with an omitted proof.
← Back to all statements