On this page
The largest eigenvalue of a real square matrix
Imports 3 library modules and 9 external
- GaussianAnalysis.matrix.euclidean
- GaussianAnalysis.matrix.real_spectral
- GaussianAnalysis.matrix.opnorm
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
lambda_max A is the supremum of the quadratic form mxdot x (A *m x) over the unit vectors x of 'cV[R]_n, in the conventions of opnorm (opnorm.v) and rayleigh_max (real_spectral.v): column vectors, the Frobenius inner product mxdot. For a symmetric matrix it is the largest eigenvalue. For n = 0 there is no unit vector and lambda_max A = 0, the supremum of the empty set (lambda_max_dim0).
The definition is alone in the section lambda_max, which is frozen with the statement of target T3 of phase 12 (AGENTS.md, section Phase 12; the sharp upper edge of the GOE): the source checker of scripts/ compares its code and the Require commands of this file with the acceptance commit fc76edf. The lemmas below it may grow. The file is a Rocq formalization of the largest eigenvalue lambda_max(W) of the credited argument of the proof of the proposition 'Good disorder' of 'Cutoff throughout the high-temperature Sherrington-Kirkpatrick phase' (family 227 of the OpenAI math collection, revision 1581d4cbd, appendices/entropy.tex). It follows no Lean module: the Lean modules of the collection write lambda_max(W) as the supremum of a Gaussian process over the unit ball and have no separate definition of the largest eigenvalue.
Proved:
- lambda_max_ub, lambda_max_form: x^T A x <= lambda_max A for every unit x, and x^T A x <= lambda_max A x^T x for every x.
- lambda_max_le: for n > 0, lambda_max A <= b as soon as x^T A x <= b for every unit x; lambda_max_attained: for n > 0, the supremum is attained at a unit vector (rayleigh_max).
- lambda_max_eigenvector, eigenvalue_le_lambda_max: for n > 0 and A symmetric, lambda_max A is an eigenvalue of A; for every A, every eigenvalue of A with a unit eigenvector is at most lambda_max A.
- lambda_max_opnorm, lambda_maxD: lambda_max A <= opnorm A, and lambda_max (A + B) <= lambda_max A + lambda_max B.
- lambda_max_lipschitz, lambda_max_lipschitz_frobenius: `|lambda_max A - lambda_max B| <= opnorm (A - B) <= frobenius (A - B).
- opnorm_lambda_max: for a symmetric A, opnorm A = Num.max (lambda_max A) (lambda_max (- A)).
lambda_ | the supremum of mxdot x (A *m x) over the columns x with mxdot x x = 1; the largest eigenvalue of a symmetric A |
Main results
| Results | Statement |
|---|---|
lambda_max A, the supremum of x^T A x over the unit columns x of a square matrix (0 when n = 0). It bounds x^T A x for unit x, and x^T A x <= lambda_max A x^T x for all x; for n > 0 it is the least such bound and is attained at a unit vector. The definition is alone in its section, frozen with the statement of target T3 of phase 12 (applications/, accepted at fc76edf). | |
For n > 0 and A symmetric, lambda_max A is an eigenvalue of A with a unit eigenvector. For every square A, every eigenvalue of A with a unit eigenvector is at most lambda_max A. | |
lambda_max A <= opnorm A, lambda_max (A + B) <= lambda_max A + lambda_max B, and |lambda_max A - lambda_max B| <= opnorm (A - B) <= frobenius (A - B), for all square matrices. For A symmetric, opnorm A = max (lambda_max A, lambda_max (- A)). |
Declarations17 exported
Variable R : realType.
forall [R : realType] [n : nat], 'M_n -> RDefinition lambda_max n (A : 'M[R]_n) : R := sup [set mxdot x (A *m x) | x in [set x : 'cV[R]_n | mxdot x x = 1]].
lambda_max A, the supremum of x^T A x over the unit columns x of a square matrix (0 when n = 0). It bounds x^T A x for unit x, and x^T A x <= lambda_max A x^T x for all x; for n > 0 it is the least such bound and is attained at a unit vector. The definition is alone in its section, frozen with the statement of target T3 of phase 12 (applications/, accepted at fc76edf).
Used by 25 declarations in 3 files
- this file: lambda_max_dim0, lambda_max_ub, lambda_max_le, lambda_max_form, lambda_max_attained, lambda_max_eigenvector, eigenvalue_le_lambda_max, lambda_max_opnorm, lambda_maxD, lambda_max_lipschitz, lambda_max_lipschitz_frobenius, opnorm_lambda_max
- GaussianAnalysis.random_matrix.goe_edge: lambda_max_net_le, goe_lambda_max_lipschitz, goe_lambda_maxN_lipschitz, measurable_goe_lambda_max, measurable_goe_lambda_maxN, integrable_goe_lambda_max, integrable_goe_lambda_maxN, goe_lambda_max_mean, goe_lambda_maxN_mean, goe_lambda_max_tail, goe_lambda_maxN_tail, goe_opnorm_edge_tail
- GaussianApplications.GoeEdgeStatement: goe_edge_statement
Variable R : realType. Implicit Types n : nat.
forall [R : realType] [n : nat] [x : 'cV_n], mxdot x x = 1 -> (0 < n)%N
Statement as written in the source
Lemma mxdot_unit_dim n (x : 'cV[R]_n) : mxdot x x = 1 -> (0 < n)%N.
Used by 2 declarations in 1 file
- this file: lambda_max_dim0, lambda_max_ub
forall [R : realType] (A : 'M_0), lambda_max A = 0
Statement as written in the source
Lemma lambda_max_dim0 (A : 'M[R]_0) : lambda_max A = 0.
Used by 3 declarations in 1 file
- this file: lambda_max_opnorm, lambda_maxD, opnorm_lambda_max
forall [R : realType] [n : nat] (A : 'M_n), (0 < n)%N -> [set mxdot x (A *m x) | x in [set x | mxdot x x = 1]] !=set0
Statement as written in the source
Used by 2 declarations in 1 file
- this file: lambda_max_has_sup, lambda_max_le
forall [R : realType] [n : nat] [A : 'M_n], ubound [set mxdot x (A *m x) | x in [set x | mxdot x x = 1]] (opnorm A)
Statement as written in the source
Used by 2 declarations in 1 file
- this file: lambda_max_has_sup, lambda_max_opnorm
forall [R : realType] [n : nat] (A : 'M_n), (0 < n)%N -> has_sup [set mxdot x (A *m x) | x in [set x | mxdot x x = 1]]
Statement as written in the source
Used by 1 declaration in 1 file
- this file: lambda_max_ub
forall [R : realType] [n : nat] (A : 'M_n) [x : 'cV_n], mxdot x x = 1 -> mxdot x (A *m x) <= lambda_max A
Stated in the README together with lambda_max.
Statement as written in the source
Lemma lambda_max_ub n (A : 'M[R]_n) (x : 'cV[R]_n) : mxdot x x = 1 -> mxdot x (A *m x) <= lambda_max A.
Used by 5 declarations in 1 file
forall [R : realType] [n : nat] [A : 'M_n] [b : R], (0 < n)%N -> (forall x : 'cV_n, mxdot x x = 1 -> mxdot x (A *m x) <= b) -> lambda_max A <= b
Stated in the README together with lambda_max.
Statement as written in the source
Lemma lambda_max_le n (A : 'M[R]_n) (b : R) : (0 < n)%N -> (forall x : 'cV[R]_n, mxdot x x = 1 -> mxdot x (A *m x) <= b) -> lambda_max A <= b.
Used by 3 declarations in 1 file
- this file: lambda_max_attained, lambda_max_opnorm, lambda_maxD
forall [R : realType] [n : nat] (A : 'M_n) (x : 'cV_n), mxdot x (A *m x) <= lambda_max A * mxdot x x
Stated in the README together with lambda_max.
Statement as written in the source
Lemma lambda_max_form n (A : 'M[R]_n) (x : 'cV[R]_n) : mxdot x (A *m x) <= lambda_max A * mxdot x x.
Used by 2 declarations in 1 file
- this file: lambda_max_eigenvector, opnorm_lambda_max
forall [R : realType] [n : nat] (A : 'M_n), (0 < n)%N -> exists2 v : 'cV_n, mxdot v v = 1 & mxdot v (A *m v) = lambda_max A
Stated in the README together with lambda_max.
Statement as written in the source
Lemma lambda_max_attained n (A : 'M[R]_n) : (0 < n)%N -> exists2 v : 'cV[R]_n, mxdot v v = 1 & mxdot v (A *m v) = lambda_max A.
Used by 2 declarations in 2 files
- this file: lambda_max_eigenvector
- GaussianAnalysis.random_matrix.goe_edge: lambda_max_net_le
forall [R : realType] [n : nat] [A : 'M_n], (0 < n)%N -> A \is symmetricmx -> exists2 v : 'cV_n, mxdot v v = 1 & A *m v = lambda_max A *: v
For n > 0 and A symmetric, lambda_max A is an eigenvalue of A with a unit eigenvector. For every square A, every eigenvalue of A with a unit eigenvector is at most lambda_max A.
Statement as written in the source
Lemma lambda_max_eigenvector n (A : 'M[R]_n) : (0 < n)%N -> A \is symmetricmx -> exists2 v : 'cV[R]_n, mxdot v v = 1 & A *m v = lambda_max A *: v.
forall [R : realType] [n : nat] [A : 'M_n] [v : 'cV_n] [mu : R], mxdot v v = 1 -> A *m v = mu *: v -> mu <= lambda_max A
Stated in the README together with lambda_max_eigenvector.
Statement as written in the source
Lemma eigenvalue_le_lambda_max n (A : 'M[R]_n) (v : 'cV[R]_n) (mu : R) : mxdot v v = 1 -> A *m v = mu *: v -> mu <= lambda_max A.
forall [R : realType] [n : nat] (A : 'M_n), lambda_max A <= opnorm A
lambda_max A <= opnorm A, lambda_max (A + B) <= lambda_max A + lambda_max B, and |lambda_max A - lambda_max B| <= opnorm (A - B) <= frobenius (A - B), for all square matrices. For A symmetric, opnorm A = max (lambda_max A, lambda_max (- A)).
Statement as written in the source
Lemma lambda_max_opnorm n (A : 'M[R]_n) : lambda_max A <= opnorm A.
Used by 2 declarations in 1 file
- this file: lambda_max_lipschitz, opnorm_lambda_max
forall [R : realType] [n : nat] (A B : 'M_n), lambda_max (A + B) <= lambda_max A + lambda_max B
Stated in the README together with lambda_max_opnorm.
Statement as written in the source
Lemma lambda_maxD n (A B : 'M[R]_n) : lambda_max (A + B) <= lambda_max A + lambda_max B.
Used by 1 declaration in 1 file
- this file: lambda_max_lipschitz
forall [R : realType] [n : nat] (A B : 'M_n), `|lambda_max A - lambda_max B| <= opnorm (A - B)
Stated in the README together with lambda_max_opnorm.
Statement as written in the source
Lemma lambda_max_lipschitz n (A B : 'M[R]_n) : `|lambda_max A - lambda_max B| <= opnorm (A - B).
Used by 2 declarations in 2 files
- this file: lambda_max_lipschitz_frobenius
- GaussianAnalysis.random_matrix.goe_edge: goe_lambda_max_lipschitz
forall [R : realType] [n : nat] (A B : 'M_n), `|lambda_max A - lambda_max B| <= frobenius (A - B)
Stated in the README together with lambda_max_opnorm.
Statement as written in the source
Lemma lambda_max_lipschitz_frobenius n (A B : 'M[R]_n) : `|lambda_max A - lambda_max B| <= frobenius (A - B).
forall [R : realType] [n : nat] [A : 'M_n], A \is symmetricmx -> opnorm A = Num.max (lambda_max A) (lambda_max (- A))
Stated in the README together with lambda_max_opnorm.
Statement as written in the source
Lemma opnorm_lambda_max n (A : 'M[R]_n) : A \is symmetricmx -> opnorm A = Num.max (lambda_max A) (lambda_max (- A)).
Used by 1 declaration in 1 file
- GaussianAnalysis.random_matrix.goe_edge: goe_opnorm_edge_tail