Dual circuits anchored on a coordinate axis
A. Per-contour circuits
DefinitionClosed-walk decoding of each realised contour from an anchor pool#✓fully proved
Every realised contour of length ℓ is decoded from a closed walk of length ℓ based at a site
of a common pool of at most ℓ anchors.
def PerContourDualCircuit (d n ℓ : ℕ) : Prop :=
∃ anchorPool : Finset (Site d), anchorPool.card ≤ ℓ ∧
∃ decode : (Σ v : Site d, (hypercubicLattice d).Walk v v) → Finset (Sym2 (Site d)),
∀ F ∈ realisedContours d n ℓ,
∃ v : Site d, v ∈ anchorPool ∧
∃ W : (hypercubicLattice d).Walk v v, W.length = ℓ ∧ decode ⟨v, W⟩ = F
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def hypercubicLattice (d : ℕ) : SimpleGraph (Site d) where
Adj := NearestNeighbour d
symm := ⟨fun _ _ h => nearestNeighbour_symm d h⟩
loopless := nearestNeighbour_irrefl d
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:76
noncomputable def realisedContours (d n ℓ : ℕ) : Finset (Finset (Sym2 (Site d))) :=
((connClusterFamily (d := d) n).filter
(fun K : Finset (Site d) => contourLen (↑K) (bondFinsetTouch d n) = ℓ)).image
(fun K : Finset (Site d) => crossEdges (↑K : Set (Site d)) (bondFinsetTouch d n))
PhyslibExt/CondensedMatter/IsingModel/Peierls/ContourCountInjection.lean:188
B. Circuits anchored on the axis
DefinitionSite \((j, 0, \ldots, 0)\) on the first coordinate axis#✓fully proved
The site (j, 0, …, 0) on the first coordinate axis.
def axisVertex (d j : ℕ) : Site d := fun i => if i.val = 0 then (j : ℤ) else 0
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 1 · Used by 12
DefinitionFirst \(\ell\) sites of the first coordinate axis#✓fully proved
The axis sites (j, 0, …, 0) with j < ℓ.
noncomputable def axisAnchorPool (d ℓ : ℕ) : Finset (Site d) :=
(Finset.range ℓ).image (fun j => axisVertex d j)
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def axisVertex (d j : ℕ) : Site d := fun i => if i.val = 0 then (j : ℤ) else 0
PhyslibExt/CondensedMatter/IsingModel/Peierls/PeierlsAnchorEncode.lean:97
Uses 2
DefinitionClosed-walk decoding of each realised contour from an axis site#✓fully proved
Every realised contour of length ℓ is decoded from a closed walk of length ℓ based at an
axis site (j, 0, …, 0) with j < ℓ.
def AxisContourDualCircuit (d n ℓ : ℕ) : Prop :=
∃ decode : (Σ v : Site d, (hypercubicLattice d).Walk v v) → Finset (Sym2 (Site d)),
∀ F ∈ realisedContours d n ℓ,
∃ j : ℕ, j < ℓ ∧
∃ W : (hypercubicLattice d).Walk (axisVertex d j) (axisVertex d j),
W.length = ℓ ∧ decode ⟨axisVertex d j, W⟩ = F
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def hypercubicLattice (d : ℕ) : SimpleGraph (Site d) where
Adj := NearestNeighbour d
symm := ⟨fun _ _ h => nearestNeighbour_symm d h⟩
loopless := nearestNeighbour_irrefl d
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:76
noncomputable def realisedContours (d n ℓ : ℕ) : Finset (Finset (Sym2 (Site d))) :=
((connClusterFamily (d := d) n).filter
(fun K : Finset (Site d) => contourLen (↑K) (bondFinsetTouch d n) = ℓ)).image
(fun K : Finset (Site d) => crossEdges (↑K : Set (Site d)) (bondFinsetTouch d n))
PhyslibExt/CondensedMatter/IsingModel/Peierls/ContourCountInjection.lean:188
def axisVertex (d j : ℕ) : Site d := fun i => if i.val = 0 then (j : ℤ) else 0
PhyslibExt/CondensedMatter/IsingModel/Peierls/PeierlsAnchorEncode.lean:97
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.