The contour of a hole-free planar set is a single cycle
A. The double dual of the square lattice
DefinitionShift by \((-1, -1)\) identifying the double dual with \(\mathbb{Z}^2\)#✓fully proved
The shift x ↦ x - (1, 1) identifying the dual of the dual lattice with ℤ².
def phb_doubleDualShift (x : Site 2) : Site 2 := ![x 0 - 1, x 1 - 1]
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 1 · Used by 2
DefinitionShift by \((-1, -1)\) as an equivalence of \(\mathbb{Z}^2\)#✓fully proved
The shift by (-1, -1) as an equivalence of ℤ².
def phb_doubleDualEquiv : Site 2 ≃ Site 2 where
toFun := phb_doubleDualShift
invFun x := ![x 0 + 1, x 1 + 1]
left_inv x := by
funext i
fin_cases i <;> simp [phb_doubleDualShift]
right_inv x := by
funext i
fin_cases i <;> simp [phb_doubleDualShift]
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def phb_doubleDualShift (x : Site 2) : Site 2 := ![x 0 - 1, x 1 - 1]
PhyslibExt/CondensedMatter/IsingModel/Peierls/PeierlsHoleFreeBoundary.lean:68
Uses 2 · Used by 1
DefinitionShift isomorphism: lattice minus barrier edges to face region graph#✓fully proved
The lattice minus the barrier edges of K is isomorphic, by the shift by (-1, -1), to the
face region graph of the face-boundary graph of K.
StatMech.Lattice.phb_doubleDualIso · 22 lines
noncomputable def phb_doubleDualIso (K : Set (Site 2)) :
latticeMinusBarrier K ≃g whb_faceRegion (faceBoundaryGraph K) where
toEquiv := phb_doubleDualEquiv
map_rel_iff' := by
intro x y
change (whb_faceRegion (faceBoundaryGraph K)).Adj
(phb_doubleDualShift x) (phb_doubleDualShift y) ↔
(latticeMinusBarrier K).Adj x y
rw [latticeMinusBarrier_adj, whb_faceRegion_adj]
have hadj := phb_doubleDualShift_latAdj (x := x) (y := y)
constructor
· rintro ⟨hshift, hmem⟩
have hxy := hadj.mp hshift
refine ⟨hxy, ?_⟩
rw [← phb_flankFaces_mem_faceBoundaryGraph_iff hxy,
← phb_sharedPrimalEdge_shift_eq_flankFaces hxy]
exact hmem
· rintro ⟨hxy, hbd⟩
refine ⟨hadj.mpr hxy, ?_⟩
rw [phb_sharedPrimalEdge_shift_eq_flankFaces hxy,
phb_flankFaces_mem_faceBoundaryGraph_iff hxy]
exact hbd
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def latticeMinusBarrier (S : Set (Site 2)) : SimpleGraph (Site 2) where
Adj x y := (hypercubicLattice 2).Adj x y ∧ ¬ bdEdge S s(x, y)
symm := by
refine ⟨?_⟩
intro x y ⟨hadj, hbd⟩
refine ⟨hadj.symm, ?_⟩
rwa [Sym2.eq_swap]
loopless := ⟨fun x h => (hypercubicLattice 2).irrefl h.1⟩
MathlibExt/Combinatorics/SimpleGraph/Lattice/CrossingParity.lean:131
noncomputable def whb_faceRegion (G : SimpleGraph (Site 2)) : SimpleGraph (Site 2) where
Adj f g := (hypercubicLattice 2).Adj f g ∧ sharedPrimalEdge f g ∉ G.edgeSet
symm := by
refine ⟨?_⟩
intro f g ⟨hadj, hs⟩
exact ⟨hadj.symm, by rwa [sharedPrimalEdge_comm_of_adj hadj] at hs⟩
loopless := ⟨fun f h => (hypercubicLattice 2).irrefl h.1⟩
MathlibExt/Combinatorics/SimpleGraph/Lattice/WhitneyBridge.lean:95
def faceBoundaryGraph (S : Set (Site 2)) : SimpleGraph (Site 2) where
Adj f g := (hypercubicLattice 2).Adj f g ∧ bdEdge S (sharedPrimalEdge f g)
symm := by
refine ⟨fun f g ⟨hadj, hbd⟩ => ?_⟩
refine ⟨hadj.symm, ?_⟩
rwa [← sharedPrimalEdge_comm_of_adj hadj]
loopless := by
refine ⟨fun f h => ?_⟩
exact (hypercubicLattice 2).irrefl h.1
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanEnclosure.lean:297
def phb_doubleDualEquiv : Site 2 ≃ Site 2 where
toFun := phb_doubleDualShift
invFun x := ![x 0 + 1, x 1 + 1]
left_inv x := by
funext i
fin_cases i <;> simp [phb_doubleDualShift]
right_inv x := by
funext i
fin_cases i <;> simp [phb_doubleDualShift]
PhyslibExt/CondensedMatter/IsingModel/Peierls/PeierlsHoleFreeBoundary.lean:71
Uses 15 · Used by 3
B. The contour as a planar subgraph
DefinitionSupport of the face-boundary graph of a finite set#✓fully proved
The support of the face-boundary graph of a finite set K, as a finset.
noncomputable def phb_boundarySupport (K : Set (Site 2)) (hK : K.Finite) : Finset (Site 2) :=
(phb_faceBoundaryGraph_support_finite K hK).toFinset
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
lemma phb_faceBoundaryGraph_support_finite (K : Set (Site 2)) (hK : K.Finite) :
(faceBoundaryGraph K).support.Finite
PhyslibExt/CondensedMatter/IsingModel/Peierls/PeierlsHoleFreeBoundary.lean:167
Uses 16 · Used by 3
DefinitionFace-boundary graph of a finite set as a planar subgraph#✓fully proved
The face-boundary graph of a finite set K, as a finite planar subgraph of ℤ².
noncomputable def phb_planarBoundary (K : Set (Site 2)) (hK : K.Finite) :
PlanarZ2Subgraph where
V := (faceBoundaryGraph K).support
finV := (phb_faceBoundaryGraph_support_finite K hK).to_subtype
decV := Classical.decEq _
G := (faceBoundaryGraph K).induce (faceBoundaryGraph K).support
emb := Function.Embedding.subtype _
isSub := by
intro x y hxy
exact faceBoundaryGraph_le K hxy
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
structure PlanarZ2Subgraph where
/-- The vertex type. -/
V : Type
/-- The vertex type is finite. -/
finV : Finite V
/-- Equality of vertices is decidable. -/
decV : DecidableEq V
/-- The abstract graph. -/
G : SimpleGraph V
/-- The embedding of the vertices into `ℤ²`. -/
emb : V ↪ Site 2
/-- Edges are mapped to lattice edges. -/
⋯
MathlibExt/Combinatorics/SimpleGraph/Lattice/PlanarFaceGeometric.lean:66
def faceBoundaryGraph (S : Set (Site 2)) : SimpleGraph (Site 2) where
Adj f g := (hypercubicLattice 2).Adj f g ∧ bdEdge S (sharedPrimalEdge f g)
symm := by
refine ⟨fun f g ⟨hadj, hbd⟩ => ?_⟩
refine ⟨hadj.symm, ?_⟩
rwa [← sharedPrimalEdge_comm_of_adj hadj]
loopless := by
refine ⟨fun f h => ?_⟩
exact (hypercubicLattice 2).irrefl h.1
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanEnclosure.lean:297
lemma phb_faceBoundaryGraph_support_finite (K : Set (Site 2)) (hK : K.Finite) :
(faceBoundaryGraph K).support.Finite
PhyslibExt/CondensedMatter/IsingModel/Peierls/PeierlsHoleFreeBoundary.lean:167
Uses 17 · Used by 3
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.