On this page
The nuclear norm and the range duality
Imports 5 library modules and 13 external
- GaussianAnalysis.matrix.euclidean
- GaussianAnalysis.matrix.real_spectral
- GaussianAnalysis.matrix.opnorm
- GaussianAnalysis.gaussian.measurable_matrix
- GaussianAnalysis.convex.moreau
External: HB.structures, mathcomp.classical.all_ssreflect_compat, mathcomp.algebra.algebraic_hierarchy.ssralg, mathcomp.algebra.numeric_hierarchy.ssrnum, mathcomp.algebra.matrix, mathcomp.algebra.sesquilinear, mathcomp.classical.boolp, mathcomp.classical.classical_sets, mathcomp.reals.reals, mathcomp.analysis.topology_theory.topology, mathcomp.analysis.normedtype_theory.normedtype, mathcomp.algebra.ring_tactic, mathcomp.algebra.field_tactic
Imported by 1
Required by 11 files of the paper proofs
- extension/Condition/Unsat.v
- extension/ConditionKappa/Unsat.v
- extension/Gaussian/Subcritical.v
- extension/Sat/Apriori.v
- extension/Sat/AprioriSparse.v
- extension/Sat/EffectiveRank.v
- extension/Sat/Interpolation.v
- extension/Sat/LightTail.v
- extension/Sat/LightTailBound.v
- extension/Sat/SparseLimit.v
- extension/Sat/SparseLower.v
The nuclear norm of A : 'M[R]_(m, n) is the dual norm of the operator norm for the Frobenius pairing <A, B> = mxdot A B. For a symmetric matrix it is the sum of the absolute values of the eigenvalues.
- nuclear_ub, nuclear_le: the supremum; nuclear_ge0, nuclearZ, nuclearN, nuclearD and nuclear_eq0: a norm; mxdot_le_nuclear, the duality inequality |<A, B>| <= opnorm B * nuclear A.
- frobenius_le_nuclear and nuclear_le_frobenius: frobenius A <= nuclear A <= sqrt n * frobenius A (frobenius_le_opnorm: frobenius B <= sqrt n * opnorm B); frobenius_sqr_le_nuclear: |A|_F^2 <= opnorm A * nuclear A.
- nuclear_outer: nuclear (x x^T) = |x|^2.
- nuclear_spectral: for A = P^T diag(d) P with P orthogonal, nuclear A = sum_i |d_i|, attained at P^T diag(sign d_i) P; nuclear_sym: for A symmetric, the supremum may be taken over the symmetric B.
- range_duality, Lemma 2.2 of Koehler and Sohn (arXiv 2608.27372, lines 794-826) in the form the paper uses: for W_1, ..., W_k in 'M[R]_n, if |<l, y>| <= M nuclear (coef_adj W l) for every l in 'rV[R]_k, then y = coef_map W D for some D with opnorm D <= M; range_duality_sym: D is symmetric when the W_i are. The proof projects y on the compact convex set {coef_map W D | opnorm D <= M} (proj of library/convex/moreau.v), seen in 'rV[R]_(n * n) through vec_mx (mxdot_vec_mxr): no Slater condition or general convex duality is needed.
Main results
| Results | Statement |
|---|---|
The nuclear norm, defined as the dual norm of opnorm for the Frobenius pairing: a norm with |<A, B>| <= opnorm B * nuclear A, frobenius A <= nuclear A <= sqrt n * frobenius A, nuclear (x x^T) = |x|^2, and for A = P^T diag(d) P with P orthogonal, nuclear A = sum_i |d_i|. | |
Range duality (Koehler-Sohn Lemma 2.2): for W_1, ..., W_k in 'M[R]_n, if |<l, y>| <= M nuclear (sum_i l_i W_i) for every l, then y = (<W_i, D>)_i for some D with opnorm D <= M, symmetric when the W_i are. By the nearest point of y in the compact convex image of the operator-norm ball, without a general duality theorem. |
Declarations23 exported
Variable R : realType. Implicit Types m n : nat.
forall [R : realType] [m n : nat], 'M_(m, n) -> RDefinition nuclear m n (A : 'M[R]_(m, n)) : R := sup [set mxdot A B | B in [set B : 'M[R]_(m, n) | opnorm B <= 1]].
The nuclear norm, defined as the dual norm of opnorm for the Frobenius pairing: a norm with |<A, B>| <= opnorm B * nuclear A, frobenius A <= nuclear A <= sqrt n * frobenius A, nuclear (x x^T) = |x|^2, and for A = P^T diag(d) P with P orthogonal, nuclear A = sum_i |d_i|.
Used by 16 declarations in 1 file
forall [R : realType] [m n : nat] (B : 'M_(m, n)), frobenius B <= Num.ExtraDef.sqrtr n%:R * opnorm B
Statement as written in the source
Used by 4 declarations in 1 file
- this file: nuclear_has_sup, mxdot_le_nuclear, nuclear_le_frobenius, range_duality
forall [R : realType] [m n : nat] (A : 'M_(m, n)), has_sup [set mxdot A B | B in [set B | opnorm B <= 1]]
Statement as written in the source
Used by 2 declarations in 1 file
- this file: nuclear_ub, nuclear_le
forall [R : realType] [m n : nat] (A : 'M_(m, n)) [B : 'M_(m, n)], opnorm B <= 1 -> mxdot A B <= nuclear A
Statement as written in the source
Used by 5 declarations in 1 file
- this file: nuclear_ge0, mxdot_le_nuclear, nuclearD, nuclear_outer, nuclear_spectral
forall [R : realType] [m n : nat] [A : 'M_(m, n)] [b : R], (forall B : 'M_(m, n), opnorm B <= 1 -> mxdot A B <= b) -> nuclear A <= b
Statement as written in the source
Used by 8 declarations in 1 file
- this file: nuclearZ, nuclearD, nuclear_le_frobenius, nuclear_eq0, nuclear_outer, nuclear_spectral, nuclear_sym, range_duality
forall [R : realType] [m n : nat] (A : 'M_(m, n)), 0 <= nuclear A
Statement as written in the source
Lemma nuclear_ge0 m n (A : 'M[R]_(m, n)) : 0 <= nuclear A.
Used by 3 declarations in 1 file
- this file: nuclearZ, frobenius_le_nuclear, nuclear_eq0
The duality inequality.
Stated in the README together with nuclear.
Statement as written in the source
Used by 2 declarations in 1 file
- this file: nuclearZ, frobenius_sqr_le_nuclear
Statement as written in the source
Used by 1 declaration in 1 file
- this file: nuclearN
Stated in the README together with nuclear.
Statement as written in the source
Used by 1 declaration in 1 file
- this file: frobenius_le_nuclear
Statement as written in the source
Used by 1 declaration in 1 file
- this file: nuclear_eq0
forall [R : realType] [m n : nat] (A : 'M_(m, n)), (nuclear A == 0) = (A == 0)
Stated in the README together with nuclear.
Statement as written in the source
Lemma nuclear_eq0 m n (A : 'M[R]_(m, n)) : (nuclear A == 0) = (A == 0).
nuclear (x x^T) = |x|^2.
Stated in the README together with nuclear.
forall [R : realType] [n : nat] [A P : 'M_n] [d : 'rV_n], P \is orthogonalmx -> A = P^T *m diag_mx d *m P -> nuclear A = \sum_i `|d 0 i|
For a symmetric matrix, the sum of the absolute values of the eigenvalues.
Stated in the README together with nuclear.
Statement as written in the source
Lemma nuclear_spectral n (A P : 'M[R]_n) (d : 'rV[R]_n) : P \is orthogonalmx -> A = P^T *m diag_mx d *m P -> nuclear A = \sum_i `|d 0 i|.
Variable R : realType. Variables (k n : nat) (W : 'I_k -> 'M[R]_n).
forall [R : realType] [k n : nat], ('I_k -> 'M_n) -> 'M_n -> 'rV_kDefinition coef_map (D : 'M[R]_n) : 'rV[R]_k := \row_i mxdot (W i) D.
L D = (<W_i, D>)_i and its adjoint L^* l = sum_i l_i W_i.
Used by 3 declarations in 1 file
- this file: mxdot_coef_map, range_duality, range_duality_sym
forall [R : realType] [k n : nat], ('I_k -> 'M_n) -> 'rV_k -> 'M_nDefinition coef_adj (l : 'rV[R]_k) : 'M[R]_n := \sum_i l 0 i *: W i.
Used by 3 declarations in 1 file
- this file: mxdot_coef_map, range_duality, range_duality_sym
forall [R : realType] [k n : nat] (W : 'I_k -> 'M_n) (l : 'rV_k) (D : 'M_n), mxdot l (coef_map W D) = mxdot (coef_adj W l) D
Statement as written in the source
Used by 1 declaration in 1 file
- this file: range_duality
forall [R : realType] [m p : nat] (A : 'M_(m, p)) (v : 'rV_(m * p)), mxdot A (vec_mx v) = mxdot (mxvec A) v
Statement as written in the source
Used by 5 declarations in 2 files
- this file: range_duality
- GaussianAnalysis.matrix.condition_cone: mxdot_quad_vec, cond_cone_vec_closed, mxdot_vec_mx, cond_slice_vec_closed
forall [R : realType] [k n : nat] [W : 'I_k -> 'M_n] [y : 'rV_k] [M : R], 0 <= M -> (forall l : 'rV_k, `|mxdot l y| <= M * nuclear (coef_adj W l)) -> exists2 D : 'M_n, opnorm D <= M & coef_map W D = y
Lemma 2.2 of Koehler and Sohn: if |<l, y>| <= M nuclear (L^* l) for every l, then y = L D for some D with opnorm D <= M.
Range duality (Koehler-Sohn Lemma 2.2): for W_1, ..., W_k in 'M[R]_n, if |<l, y>| <= M nuclear (sum_i l_i W_i) for every l, then y = (<W_i, D>)_i for some D with opnorm D <= M, symmetric when the W_i are. By the nearest point of y in the compact convex image of the operator-norm ball, without a general duality theorem.
Statement as written in the source
Used by 1 declaration in 1 file
- this file: range_duality_sym
forall [R : realType] [k n : nat] [W : 'I_k -> 'M_n] [y : 'rV_k] [M : R], 0 <= M -> (forall i : 'I_k, W i \is symmetricmx) -> (forall l : 'rV_k, `|mxdot l y| <= M * nuclear (coef_adj W l)) -> exists2 D : 'M_n, D \is symmetricmx & opnorm D <= M /\ coef_map W D = y
With symmetric W_i, the preimage can be taken symmetric.
Stated in the README together with range_duality.