High-temperature fast mixing of Glauber dynamics
ProvedMarkovMixing.ising_high_temperatureLet be a graph on vertices with maximum degree . The Ising model at inverse temperature puts spins on the vertices with Gibbs distribution , and its Glauber dynamics picks a uniform vertex and re-samples its spin from conditioned on the other spins. For a tolerance , the mixing time is the first with , where is the total variation distance.
The theorem (Theorem 15.1 of Levin–Peres–Wilmer, the capstone of Chapter 15) asserts, for every :
- if , then ;
- if every vertex of has even degree and , the same bound holds with in the denominator — a strictly weaker temperature condition.
At high temperature the Glauber dynamics mixes in order steps on any graph — the fundamental fast-mixing criterion for spin systems. The proof is path coupling (Mission VIII) with the one-site coupling whose disagreement probability the tanh lemma controls; since , condition 1 holds in particular whenever .
import Definitions.Def_mm_ising import Mathlib.Analysis.SpecialFunctions.Log.Basic
namespace MarkovMixing
/-- **Theorem 15.1** (LPW), the capstone of Chapter 15: fast mixing of the
Ising Glauber dynamics at high temperature. On a graph with `n` vertices
and maximal degree `Δ`:
(i) if `Δ tanh β < 1`, then with `c(β) = 1 − Δ tanh β`,
`t_mix(ε) ≤ ⌈n(log n + log(1/ε))/c(β)⌉`;
(ii) if every vertex has even degree and `(Δ/2) tanh 2β < 1`, then the same
bound holds with `c_e(β) = 1 − (Δ/2) tanh 2β`. -/
theorem ising_high_temperature {Vv : Type*} [Fintype Vv] [DecidableEq Vv]
[Nonempty Vv] (G : SimpleGraph Vv) [DecidableRel G.Adj]
(β : ℝ) (hβ : 0 < β) (ε : ℝ) (hε : 0 < ε) (hε1 : ε < 1) :
((G.maxDegree : ℝ) * Real.tanh β < 1 →
(mixingTime (glauber (isingDist G β)) (isingDist G β) ε : ℝ) ≤
⌈(Fintype.card Vv : ℝ) *
(Real.log (Fintype.card Vv) + Real.log (1 / ε)) /
(1 - (G.maxDegree : ℝ) * Real.tanh β)⌉₊) ∧
((∀ v : Vv, Even (G.degree v)) →
((G.maxDegree : ℝ) / 2) * Real.tanh (2 * β) < 1 →
(mixingTime (glauber (isingDist G β)) (isingDist G β) ε : ℝ) ≤
⌈(Fintype.card Vv : ℝ) *
(Real.log (Fintype.card Vv) + Real.log (1 / ε)) /
(1 - ((G.maxDegree : ℝ) / 2) * Real.tanh (2 * β))⌉₊) := by
sorry
end MarkovMixing