On this page
The Ising law on the cube and its conditional expectations
Imports 3 library modules and 20 external
- GaussianAnalysis.matrix.euclidean
- GaussianAnalysis.matrix.real_spectral
- GaussianApplications.SKGapDefinitions
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.classical.functions, mathcomp.algebra.interval, mathcomp.reals.reals, mathcomp.analysis.topology_theory.topology, mathcomp.analysis.normedtype_theory.normedtype, mathcomp.analysis.sequences, mathcomp.analysis.derive, mathcomp.analysis.realfun, mathcomp.analysis.exp, mathcomp.algebra.ring_tactic, mathcomp.algebra.field_tactic, mathcomp.algebra.arithmetic_tactic
Part of target T4 of phase 12 (AGENTS.md, section Phase 12), the spectral gap of the heat-bath dynamics of the Sherrington-Kirkpatrick model for beta < 1/2. A Rocq formalization of the credited argument of 'Cutoff throughout the high-temperature Sherrington-Kirkpatrick phase' (family 227 of the OpenAI math collection, revision 1581d4cbd, appendices/entropy.tex, subsection 'A two-spin estimate and a uniform gap'). The objects are those of the frozen applications/SKGapDefinitions.v. The file follows the manuscript. In the Lean modules of the collection, the pair law is the product of the two names of the first line below, and v_i is the name of the second line:
Lean: pairBaseMass, pairDensity (SKRatio/Calculus/TwoSpin.lean)
Lean: conditionalVariance (SKRatio/Calculus/PlusSpin.lean)
- Spin flips: spin_set and its algebra, the involution spin_flip, sum_pair2 (a sum over the cube is half the sum over the pairs x^(i,+), x^(i,-)), and cube_const (a function invariant under every spin_set is constant).
- sk_tanh and sk_cosh, with expR_spin: exp (b u) = cosh u (1 + b tanh u) for a spin b, and, by monotonicity (MathComp-Analysis ger0_derive1_ndecry), |tanh u| <= |u| and |tanh u - u| <= |u|^3 (sk_tanh_norm_le, sk_tanh_sub_le).
- For a matrix A and a field theta: the weights are positive and the masses sum to one; ising_mean is linear and monotone; the conditional expectation ising_cexp i given the spins outside i and the projection ising_dproj i = I - E_i satisfy D_i f = (x_i - m_i) d_i f (ising_dproj_eq), nu[(D_i f)^2] = nu[v_i (d_i f)^2] (ising_energy) and nu[g D_i f] = nu[D_i g D_i f] (ising_dproj_adj). The Dirichlet form is the sum of the energies, and it vanishes only on constants (ising_dirichlet_eq0). ising_gen f = sum_i D_i f is minus the generator of the heat-bath dynamics with rate one at every site.
- ising_weight_block: for A symmetric with zero diagonal and i != j, the weights of the four configurations of the spins i and j with the other spins fixed are K (1 + a x)(1 + b y)(1 + t x y), with K > 0, |a|, |b| < 1 and t = tanh A_ij: the pair law of the manuscript.
Main results
| Results | Statement |
|---|---|
For the Ising law nu of a matrix A and a field theta on {-1, 1}^n (the definitions of T4), the conditional expectation E_i given the spins outside i and D_i = I - E_i satisfy D_i f = (x_i - m_i) d_i f, nu[(D_i f)^2] = nu[v_i (d_i f)^2] and nu[g D_i f] = nu[D_i g D_i f]; the Dirichlet form vanishes only on the constants; ising_gen f = sum_i D_i f. For A symmetric with zero diagonal and i != j, the weights of the four configurations of the spins i and j, the other spins fixed, are K (1 + a x)(1 + b y)(1 + t x y) with K > 0, |a|, |b| < 1 and t = tanh A_ij. |tanh u| <= |u| and |tanh u - u| <= |u|^3. |
Declarations72 exported
Arguments spin {R} b. Arguments spin_vec {R n} x.
Variable n : nat. Implicit Types (x : {ffun 'I_n -> bool}) (i j : 'I_n) (b c : bool).
forall [n : nat] (x : {ffun 'I_n -> bool}) (i : 'I_n) (b : bool) (j : 'I_n), spin_set x i b j = (if j == i then b else x j)
Statement as written in the source
Lemma spin_setE x i b j : spin_set x i b j = if j == i then b else x j.
forall [n : nat] (x : {ffun 'I_n -> bool}) (i : 'I_n), spin_set x i (x i) = x
Statement as written in the source
Lemma spin_set_id x i : spin_set x i (x i) = x.
Used by 3 declarations in 1 file
- this file: spin_set_val, spin_flipK, ising_pair_val
forall [n : nat] [x : {ffun 'I_n -> bool}] [i : 'I_n] [b : bool], x i = b -> spin_set x i b = x
Statement as written in the source
Lemma spin_set_val x i b : x i = b -> spin_set x i b = x.
Used by 1 declaration in 1 file
- this file: sum_pair2
forall [n : nat] (x : {ffun 'I_n -> bool}) (i : 'I_n) (b c : bool), spin_set (spin_set x i b) i c = spin_set x i c
Statement as written in the source
Used by 8 declarations in 2 files
- this file: spin_flipK, ising_cexp_set, ising_cond_mean_set, half_diff_set, ising_energy, ising_dproj_adj
- GaussianApplications.SKGap.TwoSpin: block_set_i, block_set_j
forall [n : nat] (x : {ffun 'I_n -> bool}) (i : 'I_n) (b : bool), spin_set x i b i = b
Statement as written in the source
Lemma spin_set_same x i b : spin_set x i b i = b.
Used by 5 declarations in 3 files
- this file: spin_flipK, ising_dproj_eq0
- GaussianApplications.SKGap.TwoSpin: block_val_i, block_val_j
- GaussianApplications.SKGap.Poincare: half_diff_form
forall [n : nat] (x : {ffun 'I_n -> bool}) [i j : 'I_n] (b : bool), j != i -> spin_set x i b j = x j
Statement as written in the source
Lemma spin_set_other x i j b : j != i -> spin_set x i b j = x j.
Used by 2 declarations in 2 files
- GaussianApplications.SKGap.TwoSpin: block_val_i
- GaussianApplications.SKGap.Poincare: half_diff_form
forall [n : nat] (x : {ffun 'I_n -> bool}) [i j : 'I_n] (b c : bool), i != j -> spin_set (spin_set x i b) j c = spin_set (spin_set x j c) i b
Statement as written in the source
Used by 2 declarations in 1 file
- GaussianApplications.SKGap.TwoSpin: ising_mean_block, block_set_i
forall [n : nat], {ffun 'I_n -> bool} -> 'I_n -> {ffun 'I_n -> bool}Definition spin_flip x i := spin_set x i (~~ x i).
Used by 3 declarations in 1 file
- this file: spin_flipK, sum_flip, sum_pair2
Used by 1 declaration in 1 file
- this file: sum_flip
forall [n : nat] [V : GRing.Nmodule.Exports.nmodType] (i : 'I_n) (G : {ffun 'I_n -> bool} -> V), \sum_x G x = \sum_x G (spin_flip x i)
Statement as written in the source
Lemma sum_flip (V : nmodType) i (G : {ffun 'I_n -> bool} -> V) : \sum_x G x = \sum_x G (spin_flip x i).
Used by 1 declaration in 1 file
- this file: sum_pair2
forall [n : nat] [R : nzRingType] (i : 'I_n) (G : {ffun 'I_n -> bool} -> R), \sum_x (G (spin_set x i true) + G (spin_set x i false)) = 2 * \sum_x G x
Statement as written in the source
Used by 2 declarations in 2 files
- this file: ising_mean_pair
- GaussianApplications.SKGap.TwoSpin: ising_mean_block
forall [n : nat] [T : Type] [f : {ffun 'I_n -> bool} -> T], (forall (x : {ffun 'I_n -> bool}) (i : 'I_n) (b : bool), f (spin_set x i b) = f x) -> forall x y : {ffun 'I_n -> bool}, f x = f y
Statement as written in the source
Lemma cube_const (T : Type) (f : {ffun 'I_n -> bool} -> T) : (forall x i b, f (spin_set x i b) = f x) -> forall x y, f x = f y.
Used by 1 declaration in 1 file
- this file: ising_dirichlet_eq0
Variable R : realType.
forall (R : realType) (b : bool), spin b ^+ 2 = 1
Statement as written in the source
Lemma spin_sqr b : spin b ^+ 2 = 1 :> R.
forall (R : realType) (b : bool), `|spin b| = 1
Statement as written in the source
Lemma spin_norm b : `|spin b| = 1 :> R.
Used by 4 declarations in 1 file
- GaussianApplications.SKGap.TwoSpin: affine_half', psign_bound, pair_grad_bound, ising_two_spin_block
Used by 1 declaration in 1 file
- this file: ising_weight_block
Local Open Scope classical_set_scope. Variable R : realType. Implicit Types u : R.
forall [R : realType], R -> RDefinition sk_cosh u : R := (expR u + expR (- u)) / 2.
Used by 3 declarations in 1 file
- this file: sk_cosh_gt0, expR_spin, ising_weight_block
forall [R : realType], R -> RDefinition sk_tanh u : R := (expR u - expR (- u)) / (expR u + expR (- u)).
Used by 18 declarations in 3 files
- this file: sk_tanh_lt1, sk_tanh0, sk_tanhN, expR_spin, sk_tanh_ge0, sk_tanh_le, sk_tanh_cubic, sk_tanh_norm_le, sk_tanh_sub_le, ising_weight_block
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block, ising_two_spin
- GaussianApplications.SKGap.Poincare: sk_tanh_mx, sk_tanh2_mx, sk_tanh_diag, pair_quad_le, ising_gen_sq_ge, gap_from_bounds
forall [R : realType] (u : R), 0 < expR u + expR (- u)
Statement as written in the source
Lemma sk_cosh_den u : 0 < expR u + expR (- u).
Used by 8 declarations in 1 file
- this file: sk_cosh_gt0, sk_tanh_lt1, sk_tanhN, expR_spin, sk_tanh_ge0, sk_tanh_le, cubic_le_sinh, sk_tanh_cubic
forall [R : realType] (u : R), 0 < sk_cosh u
Statement as written in the source
Lemma sk_cosh_gt0 u : 0 < sk_cosh u.
Used by 1 declaration in 1 file
- this file: ising_weight_block
forall [R : realType] (u : R), `|sk_tanh u| < 1
Statement as written in the source
Lemma sk_tanh_lt1 u : `|sk_tanh u| < 1.
Used by 1 declaration in 1 file
- this file: ising_weight_block
forall R : realType, sk_tanh 0 = 0
Statement as written in the source
Lemma sk_tanh0 : sk_tanh 0 = 0.
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.Poincare: sk_tanh_diag
Used by 2 declarations in 1 file
- this file: sk_tanh_norm_le, sk_tanh_sub_le
Statement as written in the source
Used by 1 declaration in 1 file
- this file: ising_weight_block
forall [R : realType] (z : R), is_derive z 1 (fun z0 : R => expR (- z0)) (- expR (- z))
Statement as written in the source
Lemma is_derive_expRN' (z : R) : is_derive z 1 (fun z : R => expR (- z)) (- expR (- z)).
Used by 2 declarations in 1 file
- this file: sinh_le_mul_cosh, cubic_le_sinh
forall [R : realType] [u : R], 0 <= u -> expR u - expR (- u) <= u * (expR u + expR (- u))
sinh z <= z cosh z for z >= 0, by monotonicity.
Statement as written in the source
Lemma sinh_le_mul_cosh u : 0 <= u -> expR u - expR (- u) <= u * (expR u + expR (- u)).
Used by 2 declarations in 1 file
- this file: sk_tanh_le, cubic_le_sinh
forall [R : realType] [u : R], 0 <= u -> 0 <= sk_tanh u
Statement as written in the source
Lemma sk_tanh_ge0 u : 0 <= u -> 0 <= sk_tanh u.
Used by 1 declaration in 1 file
- this file: sk_tanh_norm_le
forall [R : realType] [u : R], 0 <= u -> sk_tanh u <= u
Statement as written in the source
Lemma sk_tanh_le u : 0 <= u -> sk_tanh u <= u.
Used by 2 declarations in 1 file
- this file: sk_tanh_norm_le, sk_tanh_sub_le
forall [R : realType] [u : R], 0 <= u -> (u - u ^+ 3) * (expR u + expR (- u)) <= expR u - expR (- u)
(u - u^3) cosh u <= sinh u for u >= 0, by monotonicity.
Statement as written in the source
Lemma cubic_le_sinh u : 0 <= u -> (u - u ^+ 3) * (expR u + expR (- u)) <= expR u - expR (- u).
Used by 1 declaration in 1 file
- this file: sk_tanh_cubic
forall [R : realType] [u : R], 0 <= u -> u - u ^+ 3 <= sk_tanh u
Statement as written in the source
Lemma sk_tanh_cubic u : 0 <= u -> u - u ^+ 3 <= sk_tanh u.
Used by 1 declaration in 1 file
- this file: sk_tanh_sub_le
forall [R : realType] (u : R), `|sk_tanh u| <= `|u|
Statement as written in the source
Lemma sk_tanh_norm_le u : `|sk_tanh u| <= `|u|.
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.Poincare: gap_from_bounds
forall [R : realType] (u : R), `|sk_tanh u - u| <= `|u| ^+ 3
Stated in the README together with ising_dproj_eq.
Statement as written in the source
Lemma sk_tanh_sub_le u : `|sk_tanh u - u| <= `|u| ^+ 3.
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.Poincare: gap_from_bounds
Variables (R : realType) (n : nat) (A : 'M[R]_n) (theta : 'cV[R]_n). Local Notation cube := {ffun 'I_n -> bool}. Local Notation w := (ising_weight A theta). Local Notation nu := (ising_mass A theta). Local Notation E := (ising_mean A theta). Implicit Types (x : cube) (i j : 'I_n) (f g : cube -> R).
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (x : {ffun 'I_n -> bool}), 0 < ising_weight A theta x
Statement as written in the source
Lemma ising_weight_gt0 x : 0 < w x.
Used by 4 declarations in 1 file
- this file: ising_Z_gt0, ising_mass_gt0, ising_pair_den, ising_cond_mean_lt1
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n), 0 < \sum_x ising_weight A theta x
Statement as written in the source
Lemma ising_Z_gt0 : 0 < \sum_x w x.
Used by 5 declarations in 2 files
- this file: ising_mass_gt0, ising_mass_sum, ising_mean_pair
- GaussianApplications.SKGap.TwoSpin: ising_mean_block, ising_two_spin
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (x : {ffun 'I_n -> bool}), 0 < ising_mass A theta x
Statement as written in the source
Lemma ising_mass_gt0 x : 0 < nu x.
Used by 3 declarations in 2 files
- this file: ising_mean_le, ising_mean_eq0
- GaussianApplications.SKGap.Spectral: ising_gap_from_square
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n), \sum_x ising_mass A theta x = 1
Statement as written in the source
Lemma ising_mass_sum : \sum_x nu x = 1.
Used by 2 declarations in 2 files
- this file: ising_mean_cst
- GaussianApplications.SKGap.Spectral: ising_gap_from_square
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (f : {ffun 'I_n -> bool} -> R), ising_mean A theta f = (\sum_x ising_weight A theta x * f x) / \sum_x ising_weight A theta x
Statement as written in the source
Lemma ising_meanE f : E f = (\sum_x w x * f x) / \sum_x w x.
Used by 2 declarations in 2 files
- this file: ising_mean_pair
- GaussianApplications.SKGap.TwoSpin: ising_mean_block
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) [f g : {ffun 'I_n -> bool} -> R], f =1 g -> ising_mean A theta f = ising_mean A theta g
Statement as written in the source
Lemma ising_mean_ext f g : f =1 g -> E f = E g.
Used by 8 declarations in 2 files
- GaussianApplications.SKGap.Spectral: ising_gen_dot, ising_gen_form, ising_gen_sym, ising_gap_from_square
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, ising_gen_sq_ge, ising_var_alt, ising_cov_sym
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (f g : {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => f x + g x) = ising_mean A theta f + ising_mean A theta g
Statement as written in the source
Lemma ising_meanD f g : E (fun x => f x + g x) = E f + E g.
Used by 2 declarations in 2 files
- this file: ising_meanB
- GaussianApplications.SKGap.Poincare: ising_var_alt
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (c : R) (f : {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => c * f x) = c * ising_mean A theta f
Statement as written in the source
Lemma ising_meanZ c f : E (fun x => c * f x) = c * E f.
Used by 4 declarations in 2 files
- this file: ising_meanN
- GaussianApplications.SKGap.Poincare: ising_gen_sq_ge, ising_var_alt, ising_cov_form
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (f : {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => - f x) = - ising_mean A theta f
Statement as written in the source
Lemma ising_meanN f : E (fun x => - f x) = - E f.
Used by 1 declaration in 1 file
- this file: ising_meanB
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (f g : {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => f x - g x) = ising_mean A theta f - ising_mean A theta g
Statement as written in the source
Lemma ising_meanB f g : E (fun x => f x - g x) = E f - E g.
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (c : R), ising_mean A theta (fun=> c) = c
Statement as written in the source
Lemma ising_mean_cst c : E (fun _ => c) = c.
Used by 4 declarations in 2 files
- this file: ising_mean_ge0
- GaussianApplications.SKGap.Poincare: ising_gen_sq_ge, ising_var_alt, ising_dirichlet_form
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) [f g : {ffun 'I_n -> bool} -> R], (forall x : {ffun 'I_n -> bool}, f x <= g x) -> ising_mean A theta f <= ising_mean A theta g
Statement as written in the source
Lemma ising_mean_le f g : (forall x, f x <= g x) -> E f <= E g.
Used by 3 declarations in 2 files
- this file: ising_mean_ge0
- GaussianApplications.SKGap.Poincare: ising_gen_sq_ge, ising_dirichlet_form
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) [f : {ffun 'I_n -> bool} -> R], (forall x : {ffun 'I_n -> bool}, 0 <= f x) -> 0 <= ising_mean A theta f
Statement as written in the source
Lemma ising_mean_ge0 f : (forall x, 0 <= f x) -> 0 <= E f.
Used by 4 declarations in 2 files
- this file: ising_dirichlet_ge0, ising_dirichlet_eq0
- GaussianApplications.SKGap.Poincare: ising_gen_sq_ge, ising_var_ge0
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) [I : finType] (F : I -> {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => \sum_k F k x) = \sum_k ising_mean A theta (F k)
Statement as written in the source
Lemma ising_mean_sum (I : finType) (F : I -> cube -> R) : E (fun x => \sum_k F k x) = \sum_k E (F k).
Used by 4 declarations in 2 files
- GaussianApplications.SKGap.Spectral: ising_gen_dot
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, ising_gen_sq_ge, ising_cov_form
forall [R : realType] [n : nat] [A : 'M_n] [theta : 'cV_n] [f : {ffun 'I_n -> bool} -> R], (forall x : {ffun 'I_n -> bool}, 0 <= f x) -> ising_mean A theta f = 0 -> forall x : {ffun 'I_n -> bool}, f x = 0
Statement as written in the source
Lemma ising_mean_eq0 f : (forall x, 0 <= f x) -> E f = 0 -> forall x, f x = 0.
Used by 1 declaration in 1 file
- this file: ising_dirichlet_eq0
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (f : {ffun 'I_n -> bool} -> R), ising_mean A theta f = (\sum_x (ising_weight A theta (spin_set x i true) * f (spin_set x i true) + ising_weight A theta (spin_set x i false) * f (spin_set x i false))) / 2 / \sum_x ising_weight A theta x
Statement as written in the source
Used by 1 declaration in 1 file
- this file: ising_mean_pair_eq
forall [R : realType] [n : nat] [A : 'M_n] [theta : 'cV_n] [i : 'I_n] [f g : {ffun 'I_n -> bool} -> R], (forall x : {ffun 'I_n -> bool}, ising_weight A theta (spin_set x i true) * f (spin_set x i true) + ising_weight A theta (spin_set x i false) * f (spin_set x i false) = ising_weight A theta (spin_set x i true) * g (spin_set x i true) + ising_weight A theta (spin_set x i false) * g (spin_set x i false)) -> ising_mean A theta f = ising_mean A theta g
Statement as written in the source
Used by 2 declarations in 1 file
- this file: ising_energy, ising_dproj_adj
forall [R : realType] [n : nat],
'M_n -> 'cV_n -> 'I_n -> ({ffun 'I_n -> bool} -> R) -> {ffun 'I_n -> bool} -> RDefinition ising_cexp i f x : R := (w (spin_set x i true) * f (spin_set x i true) + w (spin_set x i false) * f (spin_set x i false)) / (w (spin_set x i true) + w (spin_set x i false)).
The conditional expectation given the spins outside i, and the projection D_i = I - E_i.
Used by 7 declarations in 2 files
- this file: ising_dproj, ising_cexp_set, ising_dproj_eq, ising_energy, ising_dproj_adj
- GaussianApplications.SKGap.Spectral: ising_gen_lin, ising_gen_ker
forall [R : realType] [n : nat],
'M_n -> 'cV_n -> 'I_n -> ({ffun 'I_n -> bool} -> R) -> {ffun 'I_n -> bool} -> RDefinition ising_dproj i f x : R := f x - ising_cexp i f x.
Used by 14 declarations in 4 files
- this file: ising_gen, ising_dproj_eq, ising_energy, ising_dproj_adj, ising_dirichletE, ising_dproj_eq0, ising_dirichlet_eq0
- GaussianApplications.SKGap.Spectral: ising_gen_lin, ising_gen_dot, ising_gen_ker
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block, ising_two_spin
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, ising_gen_sq_ge
forall [R : realType] [n : nat],
'M_n -> 'cV_n -> ({ffun 'I_n -> bool} -> R) -> {ffun 'I_n -> bool} -> RDefinition ising_gen f x : R := \sum_i ising_dproj i f x.
Used by 10 declarations in 2 files
- GaussianApplications.SKGap.Spectral: ising_gen_lin, ising_gen_dot, ising_gen_form, ising_gen_sym, ising_gen_ge0, ising_gen_ker, ising_gap_from_square
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand, ising_gen_sq_ge, gap_from_bounds
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (x : {ffun 'I_n -> bool}), 0 < ising_weight A theta (spin_set x i true) + ising_weight A theta (spin_set x i false)
Statement as written in the source
Used by 6 declarations in 2 files
- this file: ising_cond_mean_lt1, ising_dproj_eq, ising_energy, ising_dproj_adj
- GaussianApplications.SKGap.Spectral: ising_gen_lin, ising_gen_ker
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (f : {ffun 'I_n -> bool} -> R) (x : {ffun 'I_n -> bool}) (b : bool), ising_cexp A theta i f (spin_set x i b) = ising_cexp A theta i f x
Statement as written in the source
Lemma ising_cexp_set i f x b : ising_cexp i f (spin_set x i b) = ising_cexp i f x.
Used by 2 declarations in 1 file
- this file: ising_energy, ising_dproj_adj
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (x : {ffun 'I_n -> bool}) (b : bool), ising_cond_mean A theta i (spin_set x i b) = ising_cond_mean A theta i x
Statement as written in the source
Lemma ising_cond_mean_set i x b : ising_cond_mean A theta i (spin_set x i b) = ising_cond_mean A theta i x.
Used by 2 declarations in 1 file
- this file: ising_cond_var_set, ising_dproj_eq0
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (x : {ffun 'I_n -> bool}) (b : bool), ising_cond_var A theta i (spin_set x i b) = ising_cond_var A theta i x
Statement as written in the source
Lemma ising_cond_var_set i x b : ising_cond_var A theta i (spin_set x i b) = ising_cond_var A theta i x.
Used by 1 declaration in 1 file
- this file: ising_energy
forall [R : realType] [n : nat] (i : 'I_n) (f : {ffun 'I_n -> bool} -> R) (x : {ffun 'I_n -> bool}) (b : bool), half_diff i f (spin_set x i b) = half_diff i f x
Statement as written in the source
Used by 2 declarations in 1 file
- this file: ising_energy, ising_dproj_eq0
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (x : {ffun 'I_n -> bool}), `|ising_cond_mean A theta i x| < 1
Statement as written in the source
Lemma ising_cond_mean_lt1 i x : `|ising_cond_mean A theta i x| < 1.
Used by 2 declarations in 1 file
- this file: ising_cond_var_ge0, ising_dproj_eq0
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (x : {ffun 'I_n -> bool}), 0 <= ising_cond_var A theta i x
Statement as written in the source
Lemma ising_cond_var_ge0 i x : 0 <= ising_cond_var A theta i x.
Used by 2 declarations in 1 file
- GaussianApplications.SKGap.Poincare: pair_quad_le, ising_gen_sq_ge
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (x : {ffun 'I_n -> bool}), ising_cond_var A theta i x <= 1
Statement as written in the source
Lemma ising_cond_var_le1 i x : ising_cond_var A theta i x <= 1.
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.Poincare: ising_dirichlet_form
forall [R : realType] [n : nat] (i : 'I_n) (F : {ffun 'I_n -> bool} -> R) (x : {ffun 'I_n -> bool}), F x = F (spin_set x i (x i))
Statement as written in the source
Lemma ising_pair_val i (F : cube -> R) x : F x = F (spin_set x i (x i)).
Used by 2 declarations in 1 file
- this file: ising_dproj_eq, ising_dproj_eq0
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (f : {ffun 'I_n -> bool} -> R) (x : {ffun 'I_n -> bool}), ising_dproj A theta i f x = (spin (x i) - ising_cond_mean A theta i x) * half_diff i f x
For the Ising law nu of a matrix A and a field theta on {-1, 1}^n (the definitions of T4), the conditional expectation E_i given the spins outside i and D_i = I - E_i satisfy D_i f = (x_i - m_i) d_i f, nu[(D_i f)^2] = nu[v_i (d_i f)^2] and nu[g D_i f] = nu[D_i g D_i f]; the Dirichlet form vanishes only on the constants; ising_gen f = sum_i D_i f. For A symmetric with zero diagonal and i != j, the weights of the four configurations of the spins i and j, the other spins fixed, are K (1 + a x)(1 + b y)(1 + t x y) with K > 0, |a|, |b| < 1 and t = tanh A_ij. |tanh u| <= |u| and |tanh u - u| <= |u|^3.
Statement as written in the source
Lemma ising_dproj_eq i f x : ising_dproj i f x = (spin (x i) - ising_cond_mean A theta i x) * half_diff i f x.
Used by 2 declarations in 2 files
- this file: ising_dproj_eq0
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (f : {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => ising_dproj A theta i f x ^+ 2) = ising_mean A theta (fun x : {ffun 'I_n -> bool} => ising_cond_var A theta i x * half_diff i f x ^+ 2)
Stated in the README together with ising_dproj_eq.
Statement as written in the source
Lemma ising_energy i f : E (fun x => ising_dproj i f x ^+ 2) = E (fun x => ising_cond_var A theta i x * half_diff i f x ^+ 2).
Used by 2 declarations in 2 files
- this file: ising_dirichletE
- GaussianApplications.SKGap.Poincare: ising_gen_sq_expand
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (i : 'I_n) (f g : {ffun 'I_n -> bool} -> R), ising_mean A theta (fun x : {ffun 'I_n -> bool} => g x * ising_dproj A theta i f x) = ising_mean A theta (fun x : {ffun 'I_n -> bool} => ising_dproj A theta i g x * ising_dproj A theta i f x)
Stated in the README together with ising_dproj_eq.
Statement as written in the source
Lemma ising_dproj_adj i f g : E (fun x => g x * ising_dproj i f x) = E (fun x => ising_dproj i g x * ising_dproj i f x).
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.Spectral: ising_gen_dot
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (f : {ffun 'I_n -> bool} -> R), ising_dirichlet A theta f = \sum_i ising_mean A theta (fun x : {ffun 'I_n -> bool} => ising_dproj A theta i f x ^+ 2)
Statement as written in the source
Lemma ising_dirichletE f : ising_dirichlet A theta f = \sum_i E (fun x => ising_dproj i f x ^+ 2).
Used by 3 declarations in 2 files
- this file: ising_dirichlet_ge0, ising_dirichlet_eq0
- GaussianApplications.SKGap.Spectral: ising_gen_form
forall [R : realType] [n : nat] (A : 'M_n) (theta : 'cV_n) (f : {ffun 'I_n -> bool} -> R), 0 <= ising_dirichlet A theta f
Statement as written in the source
Lemma ising_dirichlet_ge0 f : 0 <= ising_dirichlet A theta f.
Used by 2 declarations in 2 files
- GaussianApplications.SKGap.Spectral: ising_gen_ge0
- GaussianApplications.SKGap.Poincare: gap_from_bounds
forall [R : realType] [n : nat] [A : 'M_n] [theta : 'cV_n] [i : 'I_n] [f : {ffun 'I_n -> bool} -> R], (forall x : {ffun 'I_n -> bool}, ising_dproj A theta i f x = 0) -> forall (x : {ffun 'I_n -> bool}) (b : bool), f (spin_set x i b) = f x
Statement as written in the source
Lemma ising_dproj_eq0 i f : (forall x, ising_dproj i f x = 0) -> forall x b, f (spin_set x i b) = f x.
Used by 1 declaration in 1 file
- this file: ising_dirichlet_eq0
forall [R : realType] [n : nat] [A : 'M_n] [theta : 'cV_n] [f : {ffun 'I_n -> bool} -> R], ising_dirichlet A theta f = 0 -> forall x y : {ffun 'I_n -> bool}, f x = f y
Stated in the README together with ising_dproj_eq.
Statement as written in the source
Lemma ising_dirichlet_eq0 f : ising_dirichlet A theta f = 0 -> forall x y, f x = f y.
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.Spectral: ising_gen_ker
Variables (R : realType) (n : nat) (A : 'M[R]_n) (theta : 'cV[R]_n). Hypothesis Asym : A \is symmetricmx. Hypothesis Adiag : forall k, A k k = 0. Local Notation cube := {ffun 'I_n -> bool}. Local Notation w := (ising_weight A theta). Implicit Types (x : cube) (i j : 'I_n).
forall [R : realType] [n : nat] (M : 'cV_n) (k : 'I_n), mxdot (delta_mx k 0) M = M k 0
Statement as written in the source
Lemma mxdot_deltal (M : 'cV[R]_n) k : mxdot (delta_mx k 0) M = M k 0.
Used by 1 declaration in 1 file
- this file: quad_expand
forall (R : realType) [n : nat] (x : {ffun 'I_n -> bool}) [i j : 'I_n] (c d : bool), i != j -> spin_vec (spin_set (spin_set x i c) j d) = spin_vec x - spin (x i) *: delta_mx i 0 - spin (x j) *: delta_mx j 0 + spin c *: delta_mx i 0 + spin d *: delta_mx j 0
Statement as written in the source
Used by 1 declaration in 1 file
- this file: ising_weight_block
forall [R : realType] [n : nat] [A : 'M_n], A \is symmetricmx -> (forall k : 'I_n, A k k = 0) -> forall (i j : 'I_n) (u : 'cV_n) (al be : R), mxdot (u + al *: delta_mx i 0 + be *: delta_mx j 0) (A *m (u + al *: delta_mx i 0 + be *: delta_mx j 0)) = mxdot u (A *m u) + 2 * al * (A *m u) i 0 + 2 * be * (A *m u) j 0 + 2 * al * be * A i j
Statement as written in the source
Used by 1 declaration in 1 file
- this file: ising_weight_block
forall [R : realType] [n : nat] (theta : 'cV_n) (i j : 'I_n) (u : 'cV_n) (al be : R), mxdot theta (u + al *: delta_mx i 0 + be *: delta_mx j 0) = mxdot theta u + al * theta i 0 + be * theta j 0
Statement as written in the source
Used by 1 declaration in 1 file
- this file: ising_weight_block
forall [R : realType] [n : nat] [A : 'M_n] (theta : 'cV_n), A \is symmetricmx -> (forall k : 'I_n, A k k = 0) -> forall (x : {ffun 'I_n -> bool}) [i j : 'I_n], i != j -> exists (K : join_Num_POrderNmodule_between_Algebra_BaseAddUMagma_and_Order_Preorder R) (a b : join_Num_NumDomain_between_GRing_PzSemiRing_and_Num_SemiNormedZmodule R), [/\ 0 < K, `|a| < 1, `|b| < 1 & forall c d : bool, ising_weight A theta (spin_set (spin_set x i c) j d) = K * ((1 + a * spin c) * (1 + b * spin d) * (1 + sk_tanh (A i j) * spin c * spin d))]
Stated in the README together with ising_dproj_eq.
Statement as written in the source
Used by 1 declaration in 1 file
- GaussianApplications.SKGap.TwoSpin: ising_two_spin_block