Skip to content

The square-lattice torus

3 fully proved

A. The torus graph

DefinitionNearest-neighbor adjacency on the discrete torus#✓fully proved

Nearest-neighbor adjacency on ℤ_L × ℤ_L: the two sites differ by ±1 in exactly one coordinate.

def onsTorusAdj (L : ℕ) (u v : ZMod L × ZMod L) : Prop :=
  (u.1 = v.1 ∧ (u.2 = v.2 + 1 ∨ u.2 = v.2 - 1)) ∨ (u.2 = v.2 ∧ (u.1 = v.1 + 1 ∨ u.1 = v.1 - 1))
Used by 20

DefinitionThe \(L \times L\) square-lattice torus graph#✓fully proved

The L × L square-lattice torus as a simple graph on ℤ_L × ℤ_L, for L > 2.

StatMech.Onsager.onsTorusGraph · 20 lines
def onsTorusGraph (L : ℕ) [Fact (2 < L)] : SimpleGraph (ZMod L × ZMod L) where
  Adj := onsTorusAdj L
  symm := by
    refine ⟨?_⟩
    rintro u v (⟨h1, h2 | h2⟩ | ⟨h1, h2 | h2⟩)
    · exact Or.inl ⟨h1.symm, Or.inr (by rw [h2]; ring)⟩
    · exact Or.inl ⟨h1.symm, Or.inl (by rw [h2]; ring)⟩
    · exact Or.inr ⟨h1.symm, Or.inr (by rw [h2]; ring)⟩
    · exact Or.inr ⟨h1.symm, Or.inl (by rw [h2]; ring)⟩
  loopless := by
    have hne1 : (1 : ZMod L) ≠ 0 := by
      have : Fact (1 < L) := ⟨by have := (Fact.out : 2 < L); omega⟩
      exact one_ne_zero
    have hnem1 : (-1 : ZMod L) ≠ 0 := neg_ne_zero.mpr hne1
    refine ⟨?_⟩
    rintro v (⟨_, h2 | h2⟩ | ⟨_, h2 | h2⟩)
    · exact hne1 (by linear_combination -h2)
    · exact hnem1 (by linear_combination -h2)
    · exact hne1 (by linear_combination -h2)
    · exact hnem1 (by linear_combination -h2)
Uses 1 · Used by 21

C. Comparison with circulant graphs

LemmaThe torus graph is a circulant graph with jumps \((1,0)\) and \((0,1)\)#✓fully proved

The torus graph is the circulant graph of ℤ_L × ℤ_L with jumps (1, 0) and (0, 1).

lemma onsTorusGraph_eq_circulantGraph (L : ℕ) [Fact (2 < L)] :
    onsTorusGraph L = SimpleGraph.circulantGraph {((1 : ZMod L), (0 : ZMod L)), (0, 1)}
Uses 2

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.