The Edwards–Sokal coupling
A. The joint weight
DefinitionEdwards–Sokal edge factor#✓fully proved
The Edwards–Sokal factor of an edge e: 1 - p if e is closed in ω, and p times the
indicator that σ agrees at the endpoints if e is open.
def esEdgeFactor {q : ℕ} (p : ℝ) (σ : V → Fin q) (ω : ConfigSpace (Sym2 V)) (e : Sym2 V) : ℝ :=
if ω e then p * Potts.monoIndicator σ e else 1 - p
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def monoIndicator {q : ℕ} (σ : V → Fin q) : Sym2 V → ℝ :=
Sym2.lift ⟨fun x y => if σ x = σ y then (1 : ℝ) else 0, by
intro a b
dsimp only
by_cases h : σ a = σ b
· rw [ite_eq_left h, ite_eq_left h.symm]
· rw [ite_eq_right h, ite_eq_right (Ne.symm h)]⟩
PhyslibExt/StatisticalMechanics/RandomCluster/Potts.lean:66
Uses 2 · Used by 6
DefinitionEdwards–Sokal joint weight#✓fully proved
The Edwards–Sokal joint weight of a spin configuration σ and a bond configuration ω: the
product of esEdgeFactor over the edges of G.
def esWeight {q : ℕ} (p : ℝ) (σ : V → Fin q) (ω : ConfigSpace (Sym2 V)) : ℝ :=
∏ e ∈ G.edgeFinset, esEdgeFactor p σ ω e
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def esEdgeFactor {q : ℕ} (p : ℝ) (σ : V → Fin q) (ω : ConfigSpace (Sym2 V)) (e : Sym2 V) : ℝ :=
if ω e then p * Potts.monoIndicator σ e else 1 - p
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:65
Uses 2 · Used by 18
B. Spin marginal: counting colorings constant on clusters
DefinitionSpin configuration constant on open clusters#✓fully proved
σ is constant on every open edge of ω, i.e. on every open cluster.
def ConstOnOpen {q : ℕ} (ω : ConfigSpace (Sym2 V)) (σ : V → Fin q) : Prop :=
∀ x y, (openSub G ω).Adj x y → σ 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 7
DefinitionCluster-constant colorings as colorings of clusters#✓fully proved
Colorings constant on open clusters correspond to colorings of the connected components of the open subgraph.
StatMech.FK.constOnOpenEquiv · 18 lines
noncomputable def constOnOpenEquiv {q : ℕ} (ω : ConfigSpace (Sym2 V)) :
((openSub G ω).ConnectedComponent → Fin q) ≃ {σ : V → Fin q // ConstOnOpen G ω σ} where
toFun τ := ⟨fun v => τ ((openSub G ω).connectedComponentMk v), by
intro x y hxy
simp only
congr 1
exact SimpleGraph.ConnectedComponent.connectedComponentMk_eq_of_adj hxy⟩
invFun σ := SimpleGraph.ConnectedComponent.lift σ.1 (by
intro v w p _
exact constOnOpen_reachable G ω σ.1 σ.2 p.reachable)
left_inv τ := by
funext c
induction c using SimpleGraph.ConnectedComponent.ind with
| _ v => rfl
right_inv σ := by
apply Subtype.ext
funext v
rfl
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
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
Uses 3 · Used by 2
LemmaThere are \(q^{k(\omega)}\) colorings constant on the open clusters#✓fully proved
There are q ^ k(ω) colorings constant on the open clusters, where k(ω) is the number of
clusters.
lemma card_constOnOpen {q : ℕ} (ω : ConfigSpace (Sym2 V)) :
Nat.card {σ : V → Fin q // ConstOnOpen G ω σ} = q ^ numClusters G ω
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 numClusters (ω : ConfigSpace (Sym2 V)) : ℕ :=
Fintype.card (openSub G ω).ConnectedComponent
PhyslibExt/StatisticalMechanics/RandomCluster/RandomCluster.lean:116
Uses 5 · Used by 2
LemmaEdwards–Sokal weight summed over spins is the random-cluster weight#✓fully proved
Spin marginal of the Edwards–Sokal weight: summing over spins gives the random-cluster weight
p^{o(ω)} (1 - p)^{c(ω)} q^{k(ω)}.
lemma esWeight_sum {q : ℕ} (p : ℝ) (ω : ConfigSpace (Sym2 V)) :
(∑ σ : V → Fin q, esWeight G p σ ω) = fkWeight G p (q : ℝ) ω
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 fkWeight (p q : ℝ) (ω : ConfigSpace (Sym2 V)) : ℝ :=
edgeProduct G p ω * q ^ numClusters G ω
PhyslibExt/StatisticalMechanics/RandomCluster/RandomCluster.lean:140
Uses 10 · Used by 3
C. Bond marginal: the Potts weight
DefinitionEdwards–Sokal factor of an arbitrary coordinate and state#✓fully proved
The Edwards–Sokal factor of an edge e written for an arbitrary pair (e, b) with b the
state
of e; edges outside G get factor 1.
def esCoeff {q : ℕ} (p : ℝ) (σ : V → Fin q) (e : Sym2 V) (b : Bool) : ℝ :=
if e ∈ G.edgeFinset then (if b then p * Potts.monoIndicator σ e else 1 - p) else 1
def monoIndicator {q : ℕ} (σ : V → Fin q) : Sym2 V → ℝ :=
Sym2.lift ⟨fun x y => if σ x = σ y then (1 : ℝ) else 0, by
intro a b
dsimp only
by_cases h : σ a = σ b
· rw [ite_eq_left h, ite_eq_left h.symm]
· rw [ite_eq_right h, ite_eq_right (Ne.symm h)]⟩
PhyslibExt/StatisticalMechanics/RandomCluster/Potts.lean:66
Uses 1 · Used by 1
DefinitionNormalizing constant relating the bond sum to the Potts weight#✓fully proved
The normalizing constant e^{-βJ |E(G)|} relating the bond marginal to the Potts weight.
noncomputable def esFirstConst (β J : ℝ) : ℝ :=
2 ^ (Fintype.card (Sym2 V) - G.edgeFinset.card)
* Real.exp (-(β * J)) ^ G.edgeFinset.card
Used by 8
LemmaEdwards–Sokal bond sum is a multiple of the Potts weight#✓fully proved
Bond marginal of the Edwards–Sokal weight: with p = 1 - e^{-βJ}, summing over bond
configurations gives e^{-βJ |E|} times the Potts weight of σ.
lemma esWeight_sum_eq_pottsWeight {q : ℕ} (β J : ℝ) (σ : V → Fin q) :
(∑ ω : ConfigSpace (Sym2 V), esWeight G (1 - Real.exp (-(β * J))) σ ω)
= esFirstConst G β J * Potts.pottsWeight G β J σ
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
noncomputable def esFirstConst (β J : ℝ) : ℝ :=
2 ^ (Fintype.card (Sym2 V) - G.edgeFinset.card)
* Real.exp (-(β * J)) ^ G.edgeFinset.card
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:260
noncomputable def pottsWeight {q : ℕ} (β J : ℝ) (σ : V → Fin q) : ℝ :=
Real.exp (β * J * agreement G σ)
PhyslibExt/StatisticalMechanics/RandomCluster/Potts.lean:101
Uses 8 · Used by 7
D. Partition functions and marginals
DefinitionEdwards–Sokal partition function#✓fully proved
The Edwards–Sokal partition function: the total joint weight.
noncomputable def esZ (q : ℕ) (p : ℝ) : ℝ :=
∑ ω : ConfigSpace (Sym2 V), ∑ σ : V → Fin q, esWeight G 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
Uses 2 · Used by 8
DefinitionBond marginal of the Edwards–Sokal measure#✓fully proved
The bond marginal of the normalized Edwards–Sokal measure.
noncomputable def esSecondMarginal (q : ℕ) (p : ℝ) (ω : ConfigSpace (Sym2 V)) : ℝ :=
(∑ σ : V → Fin q, esWeight G p σ ω) / esZ G q 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
noncomputable def esZ (q : ℕ) (p : ℝ) : ℝ :=
∑ ω : ConfigSpace (Sym2 V), ∑ σ : V → Fin q, esWeight G p σ ω
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:313
Uses 3 · Used by 1
DefinitionSpin marginal of the Edwards–Sokal measure#✓fully proved
The spin marginal of the normalized Edwards–Sokal measure.
noncomputable def esFirstMarginal (q : ℕ) (p : ℝ) (σ : V → Fin q) : ℝ :=
(∑ ω : ConfigSpace (Sym2 V), esWeight G p σ ω) / esZ G q 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
noncomputable def esZ (q : ℕ) (p : ℝ) : ℝ :=
∑ ω : ConfigSpace (Sym2 V), ∑ σ : V → Fin q, esWeight G p σ ω
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:313
Uses 3 · Used by 2
LemmaEdwards–Sokal bond marginal is the random-cluster measure#✓fully proved
The bond marginal of the Edwards–Sokal measure is the random-cluster measure with parameters
(1 - e^{-βJ}, q).
lemma edwardsSokal_secondMarginal (q : ℕ) (β J : ℝ) (ω : ConfigSpace (Sym2 V)) :
esSecondMarginal G q (1 - Real.exp (-(β * J))) ω
= fkProb G (1 - Real.exp (-(β * J))) (q : ℝ) ω
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def esSecondMarginal (q : ℕ) (p : ℝ) (ω : ConfigSpace (Sym2 V)) : ℝ :=
(∑ σ : V → Fin q, esWeight G p σ ω) / esZ G q p
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:336
noncomputable def fkProb (p q : ℝ) (ω : ConfigSpace (Sym2 V)) : ℝ :=
fkWeight G p q ω / fkZ G p q
PhyslibExt/StatisticalMechanics/RandomCluster/RandomCluster.lean:172
LemmaEdwards–Sokal spin marginal is the Potts measure#✓fully proved
The spin marginal of the Edwards–Sokal measure is the q-state Potts measure at inverse
temperature β and coupling J.
lemma edwardsSokal_firstMarginal (q : ℕ) [NeZero q] (β J : ℝ) (σ : V → Fin q) :
esFirstMarginal G q (1 - Real.exp (-(β * J))) σ = Potts.pottsProb G q β J σ
noncomputable def esFirstMarginal (q : ℕ) (p : ℝ) (σ : V → Fin q) : ℝ :=
(∑ ω : ConfigSpace (Sym2 V), esWeight G p σ ω) / esZ G q p
PhyslibExt/StatisticalMechanics/RandomCluster/EdwardsSokal.lean:340
noncomputable def pottsProb (q : ℕ) (β J : ℝ) (σ : V → Fin q) : ℝ :=
pottsWeight G β J σ / pottsZ G q β J
PhyslibExt/StatisticalMechanics/RandomCluster/Potts.lean:129
Uses 9
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.