Ising two-point function via the Edwards–Sokal coupling
A. Spins, connection events, and connection probabilities
DefinitionIsing spin value of a two-state color#✓fully proved
The Ising spin value of a two-state color: 0 ↦ -1, 1 ↦ 1.
def isingSpin : Fin 2 → ℝ := fun a => if a = 0 then 1 else -1
Used by 11
DefinitionOpen connection between two vertices#✓fully proved
x and y are joined by a path of open edges of ω in G (x ↔ y).
def Connected (ω : ConfigSpace (Sym2 V)) (x y : V) : Prop :=
(openSub G ω).Reachable x y
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def openSub (ω : ConfigSpace (Sym2 V)) : SimpleGraph V where
Adj x y := G.Adj x y ∧ ω s(x, y) = true
symm := by
refine ⟨fun x y h => ?_⟩
refine ⟨h.1.symm, ?_⟩
rw [Sym2.eq_swap]; exact h.2
loopless := ⟨fun x h => h.1.ne rfl⟩
PhyslibExt/StatisticalMechanics/RandomCluster/RandomCluster.lean:82
Uses 2 · Used by 19
DefinitionRandom-cluster connection probability#✓fully proved
The random-cluster connection probability φ_{G,p,q}(x ↔ y).
noncomputable def connProb (p q : ℝ) (x y : V) : ℝ :=
∑ ω ∈ Finset.univ.filter (fun ω : ConfigSpace (Sym2 V) => Connected G ω x y),
fkProb G p q ω
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def Connected (ω : ConfigSpace (Sym2 V)) (x y : V) : Prop :=
(openSub G ω).Reachable x y
PhyslibExt/StatisticalMechanics/RandomCluster/EsCorrelations.lean:67
noncomputable def fkProb (p q : ℝ) (ω : ConfigSpace (Sym2 V)) : ℝ :=
fkWeight G p q ω / fkZ G p q
PhyslibExt/StatisticalMechanics/RandomCluster/RandomCluster.lean:172
Uses 4 · Used by 4
B. Counting colorings that agree at two points
DefinitionFunctions equal at two points as functions omitting one point#✓fully proved
For a ≠ b, functions C → Fin q with f a = f b correspond to functions on C \ {b}.
StatMech.FK.eqFunEquiv · 19 lines
noncomputable def eqFunEquiv {C : Type*} [Fintype C] [DecidableEq C] (q : ℕ) (a b : C)
(hab : a ≠ b) :
{f : C → Fin q // f a = f b} ≃ ({c : C // c ≠ b} → Fin q) where
toFun f := fun c => f.1 c.1
invFun g := ⟨fun c => if h : c = b then g ⟨a, hab⟩ else g ⟨c, h⟩, by
change (if h : a = b then g ⟨a, hab⟩ else g ⟨a, h⟩)
= if h : b = b then g ⟨a, hab⟩ else g ⟨b, h⟩
rw [dite_eq_right hab, dite_eq_left rfl]⟩
left_inv f := by
apply Subtype.ext
funext c
simp only
by_cases h : c = b
· rw [dite_eq_left h, h]; exact f.2
· rw [dite_eq_right h]
right_inv g := by
funext c
simp only
rw [dite_eq_right c.2]
DefinitionCorrespondence for cluster-constant colorings equal at two vertices#✓fully proved
Colorings constant on open clusters with σ x = σ y correspond to colorings of the clusters
that agree on the clusters of x and y.
noncomputable def constEqEquiv {q : ℕ} (ω : ConfigSpace (Sym2 V)) (x y : V) :
{σ : V → Fin q // ConstOnOpen G ω σ ∧ σ x = σ y} ≃
{τ : (openSub G ω).ConnectedComponent → Fin q //
τ ((openSub G ω).connectedComponentMk x)
= τ ((openSub G ω).connectedComponentMk y)} := by
refine (Equiv.subtypeSubtypeEquivSubtypeInter _ _).symm.trans ?_
exact ((constOnOpenEquiv G ω).subtypeEquiv (fun _ => Iff.rfl)).symm
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def ConstOnOpen {q : ℕ} (ω : ConfigSpace (Sym2 V)) (σ : V → Fin q) : Prop :=
∀ x y, (openSub G ω).Adj x y → σ x = σ y
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:87
def openSub (ω : ConfigSpace (Sym2 V)) : SimpleGraph V where
Adj x y := G.Adj x y ∧ ω s(x, y) = true
symm := by
refine ⟨fun x y h => ?_⟩
refine ⟨h.1.symm, ?_⟩
rw [Sym2.eq_swap]; exact h.2
loopless := ⟨fun x h => h.1.ne rfl⟩
PhyslibExt/StatisticalMechanics/RandomCluster/RandomCluster.lean:82
C. The two-point function
DefinitionIsing two-point function from the Edwards–Sokal coupling#✓fully proved
The Ising two-point function ⟨σ_x σ_y⟩ at bond parameter p, computed as the
Edwards–Sokal spin marginal.
noncomputable def esTwoPoint (p : ℝ) (x y : V) : ℝ :=
(∑ ω : ConfigSpace (Sym2 V), ∑ σ : V → Fin 2,
esWeight G p σ ω * (isingSpin (σ x) * isingSpin (σ y))) / esZ G 2 p
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def esWeight {q : ℕ} (p : ℝ) (σ : V → Fin q) (ω : ConfigSpace (Sym2 V)) : ℝ :=
∏ e ∈ G.edgeFinset, esEdgeFactor p σ ω e
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:71
def isingSpin : Fin 2 → ℝ := fun a => if a = 0 then 1 else -1
PhyslibExt/StatisticalMechanics/RandomCluster/EsCorrelations.lean:60
noncomputable def esZ (q : ℕ) (p : ℝ) : ℝ :=
∑ ω : ConfigSpace (Sym2 V), ∑ σ : V → Fin q, esWeight G p σ ω
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:313
LemmaIsing two-point function equals the \(q = 2\) connection probability#✓fully proved
The Ising two-point function equals the random-cluster connection probability with q = 2:
⟨σ_x σ_y⟩ = φ_{p,2}(x ↔ y) (Edwards–Sokal 1988; Grimmett, The Random-Cluster Model, 2006,
Theorem 1.16).
lemma esTwoPoint_eq_connProb (p : ℝ) (x y : V) :
esTwoPoint G p x y = connProb G p 2 x y
noncomputable def esTwoPoint (p : ℝ) (x y : V) : ℝ :=
(∑ ω : ConfigSpace (Sym2 V), ∑ σ : V → Fin 2,
esWeight G p σ ω * (isingSpin (σ x) * isingSpin (σ y))) / esZ G 2 p
PhyslibExt/StatisticalMechanics/RandomCluster/EsCorrelations.lean:230
noncomputable def connProb (p q : ℝ) (x y : V) : ℝ :=
∑ ω ∈ Finset.univ.filter (fun ω : ConfigSpace (Sym2 V) => Connected G ω x y),
fkProb G p q ω
PhyslibExt/StatisticalMechanics/RandomCluster/EsCorrelations.lean:81
Uses 20
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.