On this page
The spectral gap of the SK heat-bath dynamics: the definitions
Imports 2 library modules and 7 external
External: HB.structures, mathcomp.classical.all_ssreflect_compat, mathcomp.algebra.algebraic_hierarchy.ssralg, mathcomp.algebra.numeric_hierarchy.ssrnum, mathcomp.algebra.matrix, mathcomp.reals.reals, mathcomp.analysis.sequences
Target T4 of phase 12 (AGENTS.md, section Phase 12; the plan notes/phase12-plan.md, section 3). The definitions of the statement of SKGapStatement.v, from 'Cutoff throughout the high-temperature Sherrington-Kirkpatrick phase' (family 227 of the OpenAI math collection, revision 1581d4cbd): sections/02-model-inputs.tex, subsection 'Two clocks and the Dirichlet form', and appendices/entropy.tex, subsection 'A two-spin estimate and a uniform gap'. The Lean counterparts, in lean/OAI/Probability/SKRatio of the collection:
Lean: weight, mass, expectation, variance, dirichlet (Matrices/Spin.lean)
Lean: spinGradient (Calculus/Expectation.lean)
All are finite sums over the cube; R is any realType.
- The cube {-1, 1}^n is {ffun 'I_n -> bool}. spin b is 1 for true and -1 for false, and spin_vec x is the column of the spins of x. spin_set x i b sets the spin i of x to b: the manuscript's x^(i,+) and x^(i,-) are spin_set x i true and spin_set x i false.
- The Ising law nu of a matrix A of 'M[R]_n and a field theta of 'cV[R]_n: ising_weight A theta x = exp (x^T A x / 2 + <theta, x>), ising_mass A theta x is ising_weight A theta x divided by the sum of the weights, ising_mean A theta f = sum_x nu(x) f(x), and ising_var A theta f = nu[(f - nu[f])^2]. The statement takes A = s J with J symmetric of zero diagonal, as the manuscript does; the definitions make sense for every A.
- half_diff i f x = (f (x^(i,+)) - f (x^(i,-))) / 2 is the half-difference d_i f of the manuscript.
- ising_cond_mean A theta i x = (w (x^(i,+)) - w (x^(i,-))) / (w (x^(i,+)) + w (x^(i,-))), with w = ising_weight A theta, is the conditional mean m_i of the spin i given the other spins under nu; it is tanh ((A x)_i + theta_i) when A is symmetric and A_ii = 0. ising_cond_var A theta i x = 1 - m_i^2 is v_i, the conditional variance of the spin i.
- ising_dirichlet A theta f = sum_i nu[v_i (d_i f)^2] is the Dirichlet form of the heat-bath dynamics with rate one at every site (the manuscript's equation model-dirichlet); for a law of full support, such as nu, it is sum_i nu[Var(f | x_(-i))], the form of the Lean module.
- ising_cov A theta is the covariance matrix of the spins under nu: its entry (i, j) is nu[x_i x_j] - nu[x_i] nu[x_j].
- sk_coupling beta a = beta (W - Diag W), with W = goe_mx a (random_matrix/goe.v). For a of law gauss (n * n), its entries J_ij, i < j, are independent centered normal of variance beta^2 / n, with J_ji = J_ij and J_ii = 0: the disorder of the manuscript.
Declarations13 exported
Variable R : realType. Implicit Types n : nat.
forall R : realType, bool -> R
Definition spin (b : bool) : R := if b then 1 else -1.
Used by 37 declarations in 4 files
- this file: spin_vec, ising_cov
- GaussianApplications.SKGap.Ising: spin_sqr, spin_norm, spin_mul, expR_spin, ising_dproj_eq, ising_dproj_eq0, spin_vec_set2, ising_weight_block
- GaussianApplications.SKGap.TwoSpin: plaw, pcm, pcv, pg1, pg2, psign, affine_half', pcv_eq, psign_eq, ts_lead_sign, psign_bound, pair_factorization, pair_cross_mean, pair_grad_bound, plaw_swap, pair_signed_mean_lower, plaw_energy, plaw_energy_ge, pair_two_spin, spinT, spinF, bsum_plaw, ising_two_spin_block
- GaussianApplications.SKGap.Poincare: spin_form_sum, half_diff_form, ising_cov_form, ising_cov_sym
forall (R : realType) [n : nat], {ffun 'I_n -> bool} -> 'cV_n
Definition spin_vec n (x : {ffun 'I_n -> bool}) : 'cV[R]_n := \col_i spin (x i).
Used by 8 declarations in 3 files
- this file: ising_weight
- GaussianApplications.SKGap.Ising: spin_vec_set2, ising_weight_block
- GaussianApplications.SKGap.Poincare: spin_form_sum, half_diff_form, ising_dirichlet_form, ising_cov_form, ising_cov_from_gap
forall [n : nat], {ffun 'I_n -> bool} -> 'I_n -> bool -> {ffun 'I_n -> bool}
Definition spin_set n (x : {ffun 'I_n -> bool}) (i : 'I_n) (b : bool) : {ffun 'I_n -> bool} := [ffun j => if j == i then b else x j].
Used by 35 declarations in 5 files
- this file: half_diff, ising_cond_mean
- GaussianApplications.SKGap.Ising: spin_setE, spin_set_id, spin_set_val, spin_setK, spin_set_same, spin_set_other, spin_setC, spin_flip, sum_pair2, cube_const, ising_mean_pair, ising_mean_pair_eq, ising_cexp, ising_pair_den, ising_cexp_set, ising_cond_mean_set, ising_cond_var_set, half_diff_set, ising_cond_mean_lt1, ising_pair_val, ising_dproj_eq0, spin_vec_set2, ising_weight_block
- GaussianApplications.SKGap.Spectral: ising_gen_ker
- GaussianApplications.SKGap.TwoSpin: bsum, ising_mean_block, block_set_i, block_set_j, block_val_i, block_val_j, bsum_plaw, ising_two_spin_block
- GaussianApplications.SKGap.Poincare: half_diff_form
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> {ffun 'I_n -> bool} -> R
Definition ising_weight n (A : 'M[R]_n) (theta : 'cV[R]_n) (x : {ffun 'I_n -> bool}) : R := expR (mxdot (spin_vec x) (A *m spin_vec x) / 2 + mxdot theta (spin_vec x)).
Used by 14 declarations in 3 files
- this file: ising_mass, ising_cond_mean
- GaussianApplications.SKGap.Ising: ising_weight_gt0, ising_Z_gt0, ising_meanE, ising_mean_pair, ising_mean_pair_eq, ising_cexp, ising_pair_den, ising_weight_block
- GaussianApplications.SKGap.TwoSpin: bsum, ising_mean_block, bsum_plaw, ising_two_spin_block
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> {ffun 'I_n -> bool} -> R
Definition ising_mass n (A : 'M[R]_n) (theta : 'cV[R]_n) (x : {ffun 'I_n -> bool}) : R := ising_weight A theta x / \sum_(y : {ffun 'I_n -> bool}) ising_weight A theta y.
Used by 11 declarations in 3 files
- this file: ising_mean
- GaussianApplications.SKGap.Ising: ising_mass_gt0, ising_mass_sum, ising_meanE, ising_mean_eq0
- GaussianApplications.SKGap.Spectral: wdot_ising, ising_gen_dot, ising_gen_form, ising_gen_sym, ising_gen_ge0, ising_gap_from_square
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> ({ffun 'I_n -> bool} -> R) -> R
Definition ising_mean n (A : 'M[R]_n) (theta : 'cV[R]_n) (f : {ffun 'I_n -> bool} -> R) : R := \sum_(x : {ffun 'I_n -> bool}) ising_mass A theta x * f x.
Used by 31 declarations in 5 files
- this file: ising_var, ising_dirichlet, ising_cov
- GaussianApplications.SKGap.Ising: ising_meanE, ising_mean_ext, ising_meanD, ising_meanZ, ising_meanN, ising_meanB, ising_mean_cst, ising_mean_le, ising_mean_ge0, ising_mean_sum, ising_mean_eq0, ising_mean_pair, ising_mean_pair_eq, ising_energy, ising_dproj_adj, ising_dirichletE, ising_dirichlet_eq0
- GaussianApplications.SKGap.Spectral: wdot_ising, ising_gen_dot, ising_gap_from_square
- GaussianApplications.SKGap.TwoSpin: ising_mean_block, ising_two_spin
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, ising_gen_sq_ge, ising_var_alt, ising_cov_form, ising_cov_sym, gap_from_bounds
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> ({ffun 'I_n -> bool} -> R) -> R
Definition ising_var n (A : 'M[R]_n) (theta : 'cV[R]_n) (f : {ffun 'I_n -> bool} -> R) : R := ising_mean A theta (fun x => (f x - ising_mean A theta f) ^+ 2).
Used by 8 declarations in 3 files
- GaussianApplications.SKGapStatement: sk_gap_statement
- GaussianApplications.SKGap.Spectral: ising_gap_from_square
- GaussianApplications.SKGap.Poincare: ising_var_alt, ising_cov_form, ising_var_ge0, ising_cov_from_gap, gap_from_bounds, sk_gap_deterministic
forall [R : realType] [n : nat], 'I_n -> ({ffun 'I_n -> bool} -> R) -> {ffun 'I_n -> bool} -> R
Definition half_diff n (i : 'I_n) (f : {ffun 'I_n -> bool} -> R) (x : {ffun 'I_n -> bool}) : R := (f (spin_set x i true) - f (spin_set x i false)) / 2.
Used by 11 declarations in 4 files
- this file: ising_dirichlet
- GaussianApplications.SKGap.Ising: half_diff_set, ising_dproj_eq, ising_energy, ising_dproj_eq0
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block, ising_two_spin
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, pair_quad_le, ising_gen_sq_ge, half_diff_form
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> 'I_n -> {ffun 'I_n -> bool} -> R
Definition ising_cond_mean n (A : 'M[R]_n) (theta : 'cV[R]_n) (i : 'I_n) (x : {ffun 'I_n -> bool}) : R := (ising_weight A theta (spin_set x i true) - ising_weight A theta (spin_set x i false)) / (ising_weight A theta (spin_set x i true) + ising_weight A theta (spin_set x i false)).
Used by 9 declarations in 4 files
- this file: ising_cond_var
- GaussianApplications.SKGap.Ising: ising_cond_mean_set, ising_cond_mean_lt1, ising_dproj_eq, ising_energy
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block, ising_two_spin
- GaussianApplications.SKGap.Poincare: pair_quad_le, ising_gen_sq_ge
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> 'I_n -> {ffun 'I_n -> bool} -> R
Definition ising_cond_var n (A : 'M[R]_n) (theta : 'cV[R]_n) (i : 'I_n) (x : {ffun 'I_n -> bool}) : R := 1 - ising_cond_mean A theta i x ^+ 2.
Used by 10 declarations in 4 files
- this file: ising_dirichlet
- GaussianApplications.SKGap.Ising: ising_cond_var_set, ising_cond_var_ge0, ising_cond_var_le1, ising_energy
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block, ising_two_spin
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, pair_quad_le, ising_gen_sq_ge
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> ({ffun 'I_n -> bool} -> R) -> R
Definition ising_dirichlet n (A : 'M[R]_n) (theta : 'cV[R]_n) (f : {ffun 'I_n -> bool} -> R) : R := \sum_(i < n) ising_mean A theta (fun x => ising_cond_var A theta i x * half_diff i f x ^+ 2).
Used by 11 declarations in 4 files
- GaussianApplications.SKGapStatement: sk_gap_statement
- GaussianApplications.SKGap.Ising: ising_dirichletE, ising_dirichlet_ge0, ising_dirichlet_eq0
- GaussianApplications.SKGap.Spectral: ising_gen_form, ising_gap_from_square
- GaussianApplications.SKGap.Poincare: ising_gen_sq_ge, ising_dirichlet_form, ising_cov_from_gap, gap_from_bounds, sk_gap_deterministic
forall [R : realType] [n : nat], 'M_n -> 'cV_n -> 'M_nDefinition ising_cov n (A : 'M[R]_n) (theta : 'cV[R]_n) : 'M[R]_n := \matrix_(i, j) (ising_mean A theta (fun x => spin (x i) * spin (x j)) - ising_mean A theta (fun x => spin (x i)) * ising_mean A theta (fun x => spin (x j))).
Used by 5 declarations in 2 files
- GaussianApplications.SKGapStatement: sk_gap_statement
- GaussianApplications.SKGap.Poincare: ising_cov_form, ising_cov_sym, ising_cov_from_gap, sk_gap_deterministic
forall [R : realType] [n : nat], R -> 'rV_(n * n) -> 'M_nDefinition sk_coupling n (beta : R) (a : 'rV[R]_(n * n)) : 'M[R]_n := beta *: (goe_mx a - diag_mx (\row_i goe_mx a i i)).
Used by 12 declarations in 3 files
- GaussianApplications.SKGapStatement: sk_gap_statement
- GaussianApplications.SKGap.Disorder: sk_good_disorder, sk_couplingE, sk_coupling_opnorm_le, sk_coupling_row, sk_couplingB, frobenius_sk_coupling_le, measurable_sk_coupling_opnorm, sk_good_disorder_measurable, sk_good_disorder_prob
- GaussianApplications.SKGap.Poincare: sk_coupling_sym, sk_coupling_diag