Peierls argument for bond percolation
DefinitionSite on the positive horizontal axis#✓fully proved
The site (j, 0) on the positive horizontal axis.
def axisSite (j : ℕ) : Site 2 := ![(j : ℤ), 0]
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 1 · Used by 15
DefinitionAxis site lies outside the origin cluster#✓fully proved
The site (j + 1, 0) is not in the open cluster of the origin.
def exitPred (ω : ConfigSpace (Sym2 (Site 2))) (j : ℕ) : Prop :=
axisSite (j + 1) ∉ cluster 2 ω (origin 2)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def axisSite (j : ℕ) : Site 2 := ![(j : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:54
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
Uses 5 · Used by 13
DefinitionExit index of a finite origin cluster#✓fully proved
For a finite origin cluster, the least j such that (j + 1, 0) is not in the cluster.
noncomputable def exitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (exitPred_exists (ω := ω) hfin)
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
Uses 8 · Used by 18
DefinitionFace above the exit edge#✓fully proved
The unit face directly above the exit edge from (j, 0) to (j + 1, 0).
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def exitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (exitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:93
Uses 5 · Used by 14
DefinitionFace below the exit edge#✓fully proved
The unit face directly below the exit edge from (j, 0) to (j + 1, 0).
noncomputable def exitFaceDown (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), -1]
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def exitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (exitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:93
Uses 5 · Used by 3
DefinitionExistence of an anchored dual cycle around the origin cluster#✓fully proved
Some cycle of the face-boundary graph of the origin cluster is based at the upper exit face and is longer than the exit index.
def AnchoredCycleExists (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ exitIndex (ω := ω) hfin < c.length
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
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
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:142
noncomputable def exitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (exitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:93
Uses 7 · Used by 5
TheoremAnchored dual cycles give the anchored enclosure property#✓fully proved
If every finite origin cluster has an anchored dual cycle (AnchoredCycleExists), then the
anchored enclosure property StatMech.Percolation.PcAnchoredEnclosure holds. This reduces
the Peierls bound to AnchoredCycleExists; it does not prove that hypothesis.
theorem pcAnchoredEnclosure_of_anchoredCycle
(hwind : ∀ (ω : ConfigSpace (Sym2 (Site 2))) (hfin : (cluster 2 ω (origin 2)).Finite),
AnchoredCycleExists ω hfin) :
StatMech.Percolation.PcAnchoredEnclosure
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def AnchoredCycleExists (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ exitIndex (ω := ω) hfin < c.length
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:238
def PcAnchoredEnclosure : Prop :=
∀ ω : ConfigSpace (Sym2 (Site 2)), (cluster 2 ω (origin 2)).Finite →
∃ (u : Site 2) (c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk u u),
c.IsCycle ∧ u ∈ anchorFinset c.length
MathlibExt/Probability/Percolation/PcUpperEnclosure.lean:271
Uses 10 · Used by 1
DefinitionDual cycle reaching the left half-plane#✓fully proved
Some cycle of the face-boundary graph of the origin cluster, based at the upper exit face, visits a face whose first coordinate is at most zero.
def CycleHasLeftFace (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ ∃ w ∈ c.support, w 0 ≤ 0
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
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
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:142
Uses 6 · Used by 3
DefinitionBoundary edges of a set of sites in \(\mathbb{Z}^2\), as unordered pairs#✓fully proved
The edges of ℤ² with exactly one endpoint in S, as unordered pairs.
noncomputable def bdEdgeSet2 (S : Set (Site 2)) : Set (Sym2 (Site 2)) := by
classical
exact {e | Sym2.lift ⟨fun x y => (x ∈ S ↔ y ∉ S), by
intro x y
simp only [eq_iff_iff]
by_cases hx : x ∈ S <;> by_cases hy : y ∈ S <;> tauto⟩ e}
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 1 · Used by 1
DefinitionCut lattice of a set of sites#✓fully proved
The square lattice with the boundary edges of S deleted.
noncomputable def cutLattice (S : Set (Site 2)) : SimpleGraph (Site 2) :=
(hypercubicLattice 2).deleteEdges (bdEdgeSet2 S)
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 bdEdgeSet2 (S : Set (Site 2)) : Set (Sym2 (Site 2)) := by
classical
exact {e | Sym2.lift ⟨fun x y => (x ∈ S ↔ y ∉ S), by
intro x y
simp only [eq_iff_iff]
by_cases hx : x ∈ S <;> by_cases hy : y ∈ S <;> tauto⟩ e}
MathlibExt/Combinatorics/SimpleGraph/Lattice/FaceRegion.lean:44
Uses 3 · Used by 1
DefinitionInside region of an open cluster in the cut lattice#✓fully proved
The sites reachable from o in the cut lattice of the open cluster of o.
def insideRegion (ω : ConfigSpace (Sym2 (Site 2))) (o : Site 2) : Set (Site 2) :=
{x | (cutLattice (cluster 2 ω o)).Reachable o x}
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def cutLattice (S : Set (Site 2)) : SimpleGraph (Site 2) :=
(hypercubicLattice 2).deleteEdges (bdEdgeSet2 S)
MathlibExt/Combinatorics/SimpleGraph/Lattice/FaceRegion.lean:58
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
DefinitionOpen cluster maps into the lattice minus its boundary edges#✓fully proved
The open subgraph on the cluster of o maps into the lattice with the boundary edges of the
cluster removed.
noncomputable def clusterOpenToBarrierHom (o : Site 2) :
(openSubgraph 2 ω).induce (cluster 2 ω o) →g latticeMinusBarrier (cluster 2 ω o) where
toFun v := (v : Site 2)
map_rel' := by
intro a b hab
have hopen : IsOpenEdge 2 ω (a : Site 2) (b : Site 2) := hab
exact latticeMinusBarrier_adj_of_both_mem _ hopen.1 a.2 b.2
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def openSubgraph (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) : SimpleGraph (Site d) where
Adj x y := IsOpenEdge d ω x y
symm := ⟨fun _ _ h => isOpenEdge_symm h⟩
loopless := ⟨fun x h => isOpenEdge_irrefl x h⟩
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:61
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
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
Uses 8 · Used by 1
DefinitionBox exterior maps into the lattice minus boundary edges#✓fully proved
The lattice on the exterior of a box disjoint from K maps into the lattice with the
boundary edges of K removed.
noncomputable def extToBarrierHom (K : Set (Site 2)) (R : ℕ) (hsub : exterior 2 R ⊆ Kᶜ) :
(hypercubicLattice 2).induce (exterior 2 R) →g latticeMinusBarrier K where
toFun v := (v : Site 2)
map_rel' := by
intro a b hab
exact latticeMinusBarrier_adj_of_both_not_mem _ hab (hsub a.2) (hsub b.2)
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def exterior (d R : ℕ) : Set (Site d) := {x | ∃ i, R < (x i).natAbs}
MathlibExt/Combinatorics/SimpleGraph/Lattice/UniqueInfiniteComponent.lean:47
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 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
TheoremDiscrete Jordan separation for finite open clusters#✓fully proved
A discrete Jordan separation for a finite open cluster: removing its boundary edges leaves the cluster connected, the far exterior connected, and no path between the cluster and its complement.
theorem discrete_jordan_separation (o : Site 2) (hfin : (cluster 2 ω o).Finite) :
∃ R : ℕ, cluster 2 ω o ⊆ box 2 R ∧
(∀ ⦃x y : Site 2⦄, x ∈ cluster 2 ω o → y ∈ cluster 2 ω o →
(latticeMinusBarrier (cluster 2 ω o)).Reachable x y) ∧
(∀ ⦃x y : Site 2⦄, x ∈ exterior 2 R → y ∈ exterior 2 R →
(latticeMinusBarrier (cluster 2 ω o)).Reachable x y) ∧
(∀ ⦃x y : Site 2⦄, x ∈ cluster 2 ω o → y ∉ cluster 2 ω o →
¬ (latticeMinusBarrier (cluster 2 ω o)).Reachable x y)
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def box (d n : ℕ) : Set (Site d) := {x | ∀ i, (x i).natAbs ≤ n}
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:86
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
def exterior (d R : ℕ) : Set (Site d) := {x | ∃ i, R < (x i).natAbs}
MathlibExt/Combinatorics/SimpleGraph/Lattice/UniqueInfiniteComponent.lean:47
Uses 15
DefinitionSite on the negative horizontal axis#✓fully proved
The site (-k, 0) on the negative horizontal axis.
def leftAxisSite (k : ℕ) : Site 2 := ![-(k : ℤ), 0]
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 1 · Used by 8
DefinitionLeft exit condition at an axis site#✓fully proved
The site (-(k + 1), 0) is not in the open cluster of the origin.
def leftExitPred (ω : ConfigSpace (Sym2 (Site 2))) (k : ℕ) : Prop :=
leftAxisSite (k + 1) ∉ cluster 2 ω (origin 2)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def leftAxisSite (k : ℕ) : Site 2 := ![-(k : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:51
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
Uses 5 · Used by 4
DefinitionLeft exit index of a finite cluster#✓fully proved
For a finite origin cluster, the least k such that (-(k + 1), 0) is not in the cluster.
noncomputable def leftExitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (leftExitPred_exists (ω := ω) hfin)
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
Uses 8 · Used by 9
DefinitionFace above the left exit edge#✓fully proved
The unit face directly above the left exit edge.
noncomputable def leftExitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![-(leftExitIndex (ω := ω) hfin : ℤ) - 1, 0]
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def leftExitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (leftExitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:91
Uses 5 · Used by 5
DefinitionFace below the left exit edge#✓fully proved
The unit face directly below the left exit edge.
noncomputable def leftExitFaceDown (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![-(leftExitIndex (ω := ω) hfin : ℤ) - 1, -1]
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def leftExitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (leftExitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:91
Uses 5 · Used by 5
DefinitionOrigin cluster's enclosing contour links the two axis exits#✓fully proved
Some cycle of the face-boundary graph of the origin cluster, based at the upper exit face on the positive axis, passes through the upper exit face on the negative axis.
def EnclosingContourLinksExits (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ leftExitFaceUp (ω := ω) hfin ∈ c.support
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
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
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:142
noncomputable def leftExitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![-(leftExitIndex (ω := ω) hfin : ℤ) - 1, 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:150
Theorem\(p_c(\mathbb{Z}^2) < 1\) via boundary connectivity, assuming linked exits#✓fully proved
p_c(ℤ²) < 1, under the hypothesis that EnclosingContourLinksExits holds for every
configuration with a finite origin cluster.
theorem pc_lt_one_via_boundary
(h : ∀ (ω : ConfigSpace (Sym2 (Site 2))) (hfin : (cluster 2 ω (origin 2)).Finite),
EnclosingContourLinksExits ω hfin) :
StatMech.Percolation.pc 2 < 1
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def EnclosingContourLinksExits (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ leftExitFaceUp (ω := ω) hfin ∈ c.support
MathlibExt/Combinatorics/SimpleGraph/Lattice/BoundaryConnected.lean:133
noncomputable def pc (d : ℕ) : ℝ≥0 :=
sSup (subcriticalSet d)
MathlibExt/Probability/Percolation/Theta.lean:76
Uses 20 · Used by 1
DefinitionExit dart on the positive horizontal axis#✓fully proved
The boundary dart of the origin cluster across the exit edge on the positive horizontal axis.
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
def axisSite (j : ℕ) : Site 2 := ![(j : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:54
noncomputable def exitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (exitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:93
theorem axisSite_exit_adj (hfin : (cluster 2 ω (origin 2)).Finite) :
(hypercubicLattice 2).Adj (axisSite (exitIndex (ω := ω) hfin))
(axisSite (exitIndex (ω := ω) hfin + 1))
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:120
Uses 8 · Used by 12
DefinitionExit dart on the negative horizontal axis#✓fully proved
The boundary dart of the origin cluster across the exit edge on the negative horizontal axis.
noncomputable def leftExitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := leftAxisSite (leftExitIndex (ω := ω) hfin)
head := leftAxisSite (leftExitIndex (ω := ω) hfin + 1)
adj := leftAxisSite_exit_adj (ω := ω) hfin
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
def leftAxisSite (k : ℕ) : Site 2 := ![-(k : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:51
noncomputable def leftExitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (leftExitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:91
theorem leftAxisSite_exit_adj (hfin : (cluster 2 ω (origin 2)).Finite) :
(hypercubicLattice 2).Adj (leftAxisSite (leftExitIndex (ω := ω) hfin))
(leftAxisSite (leftExitIndex (ω := ω) hfin + 1))
MathlibExt/Combinatorics/SimpleGraph/Lattice/LeftFace.lean:128
Uses 8 · Used by 3
DefinitionNegative part of an integer#✓fully proved
The negative part min z 0 of an integer.
noncomputable def negPart (z : ℤ) : ℤ := if z < 0 then z else 0
Used by 9
DefinitionUnit face to the left of a dart#✓fully proved
The unit face to the left of the dart e, labelled by its lower left corner.
noncomputable def dartFace (e : Dart) : Site 2 :=
![ e.tail 0 + negPart (e.dir 0) + negPart (rot90Fun e.dir 0),
e.tail 1 + negPart (e.dir 1) + negPart (rot90Fun e.dir 1) ]
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def negPart (z : ℤ) : ℤ := if z < 0 then z else 0
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:117
def rot90Fun (x : Site 2) : Site 2 := ![- x 1, x 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/PlanarDual.lean:65
Uses 5 · Used by 19
DefinitionLeft and right exit darts lie in the same boundary orbit#✓fully proved
The left exit dart lies in the boundary orbit of the right exit dart.
def ExitDartsSameOrbit (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ n : ℕ, (dartNext (cluster 2 ω (origin 2)))^[n] (exitDart (ω := ω) hfin)
= leftExitDart (ω := ω) hfin
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
noncomputable def dartNext (K : Set (Site 2)) (e : Dart) : Dart := by
classical
exact
if e.head + (-rot90Fun e.dir) ∈ K then
mkDart (e.head + (-rot90Fun e.dir)) (rot90Fun e.dir) (unitWt_rot90Fun_dir e)
else if e.tail + (-rot90Fun e.dir) ∈ K then
mkDart (e.tail + (-rot90Fun e.dir)) e.dir (unitWt_dir e)
else
mkDart e.tail (-rot90Fun e.dir) (unitWt_neg_rot90Fun_dir e)
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:111
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
noncomputable def leftExitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := leftAxisSite (leftExitIndex (ω := ω) hfin)
head := leftAxisSite (leftExitIndex (ω := ω) hfin + 1)
adj := leftAxisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:77
Uses 8 · Used by 4
Theorem\(p_c(\mathbb{Z}^2) < 1\) via exit dart orbits, assuming linked exits#✓fully proved
p_c(ℤ²) < 1, under the hypothesis that EnclosingContourLinksExits holds for every
configuration with a finite origin cluster.
theorem pc_lt_one_via_dartOrbit
(h : ∀ (ω : ConfigSpace (Sym2 (Site 2))) (hfin : (cluster 2 ω (origin 2)).Finite),
EnclosingContourLinksExits ω hfin) :
StatMech.Percolation.pc 2 < 1
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def EnclosingContourLinksExits (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ leftExitFaceUp (ω := ω) hfin ∈ c.support
MathlibExt/Combinatorics/SimpleGraph/Lattice/BoundaryConnected.lean:133
noncomputable def pc (d : ℕ) : ℝ≥0 :=
sSup (subcriticalSet d)
MathlibExt/Probability/Percolation/Theta.lean:76
DefinitionUndirected lattice edge of a dart#✓fully proved
The undirected lattice edge underlying a dart.
def dartPrimalEdge (e : Dart) : Sym2 (Site 2) := s(e.tail, e.head)
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 2 · Used by 2
DefinitionCanonical contour of a finite origin cluster#✓fully proved
The canonical contour of a finite origin cluster: the closed walk around the boundary orbit of the exit dart on the positive axis.
noncomputable def canonicalContour (hfin : (cluster 2 ω (origin 2)).Finite) :
(dartSuccGraph (cluster 2 ω (origin 2))).Walk
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩ :=
dartOrbitWalk (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
noncomputable def dartSuccGraph (K : Set (Site 2)) :
SimpleGraph {e : Dart // IsBoundaryDart K e} where
Adj a b := a ≠ b ∧ (dartNextSub K a = b ∨ dartNextSub K b = a)
symm := ⟨by rintro a b ⟨hne, h⟩; exact ⟨hne.symm, h.symm⟩⟩
loopless := by refine ⟨?_⟩; rintro a ⟨hne, _⟩; exact hne rfl
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:155
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
theorem exitDart_isBoundaryDart (hfin : (cluster 2 ω (origin 2)).Finite) :
IsBoundaryDart (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:67
noncomputable def dartOrbitWalk (K : Set (Site 2)) (a : {e : Dart // IsBoundaryDart K e}) :
(dartSuccGraph K).Walk a a :=
(orbitWalkAux K a (dartOrbitPeriod K a)).copy rfl (dartOrbitPeriod_iterate K a)
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:218
Uses 14
DefinitionDarts of the canonical contour#✓fully proved
The darts of one period of the boundary orbit of the exit dart.
noncomputable def canonicalContourDarts (hfin : (cluster 2 ω (origin 2)).Finite) : List Dart :=
(List.range (dartOrbitPeriod (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩)).map
(fun k => (dartNext (cluster 2 ω (origin 2)))^[k + 1] (exitDart (ω := ω) hfin))
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
noncomputable def dartOrbitPeriod (K : Set (Site 2)) (a : {e : Dart // IsBoundaryDart K e}) :
ℕ := Function.minimalPeriod (dartNextSub K) a
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:193
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
theorem exitDart_isBoundaryDart (hfin : (cluster 2 ω (origin 2)).Finite) :
IsBoundaryDart (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:67
noncomputable def dartNext (K : Set (Site 2)) (e : Dart) : Dart := by
classical
exact
if e.head + (-rot90Fun e.dir) ∈ K then
mkDart (e.head + (-rot90Fun e.dir)) (rot90Fun e.dir) (unitWt_rot90Fun_dir e)
else if e.tail + (-rot90Fun e.dir) ∈ K then
mkDart (e.tail + (-rot90Fun e.dir)) e.dir (unitWt_dir e)
else
mkDart e.tail (-rot90Fun e.dir) (unitWt_neg_rot90Fun_dir e)
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:111
Uses 14 · Used by 2
DefinitionPrimal edges of the canonical contour#✓fully proved
The primal edges of the canonical contour.
noncomputable def canonicalPrimalEdgeFinset (hfin : (cluster 2 ω (origin 2)).Finite) :
Finset (Sym2 (Site 2)) :=
((canonicalContourDarts (ω := ω) hfin).map dartPrimalEdge).toFinset
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def canonicalContourDarts (hfin : (cluster 2 ω (origin 2)).Finite) : List Dart :=
(List.range (dartOrbitPeriod (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩)).map
(fun k => (dartNext (cluster 2 ω (origin 2)))^[k + 1] (exitDart (ω := ω) hfin))
MathlibExt/Combinatorics/SimpleGraph/Lattice/CanonicalContour.lean:115
def dartPrimalEdge (e : Dart) : Sym2 (Site 2) := s(e.tail, e.head)
MathlibExt/Combinatorics/SimpleGraph/Lattice/CanonicalContour.lean:68
DefinitionEvent that every edge of the canonical contour is closed#✓fully proved
The set of configurations in which every primal edge of the canonical contour of ω is
closed.
def closedDartContourEvent (hfin : (cluster 2 ω (origin 2)).Finite) :
Set (ConfigSpace (Sym2 (Site 2))) :=
{η | ∀ D ∈ canonicalContourDarts (ω := ω) hfin, η (dartPrimalEdge D) = false}
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def canonicalContourDarts (hfin : (cluster 2 ω (origin 2)).Finite) : List Dart :=
(List.range (dartOrbitPeriod (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩)).map
(fun k => (dartNext (cluster 2 ω (origin 2)))^[k + 1] (exitDart (ω := ω) hfin))
MathlibExt/Combinatorics/SimpleGraph/Lattice/CanonicalContour.lean:115
def dartPrimalEdge (e : Dart) : Sym2 (Site 2) := s(e.tail, e.head)
MathlibExt/Combinatorics/SimpleGraph/Lattice/CanonicalContour.lean:68
DefinitionCanonical contour is longer than the exit index#✓fully proved
The period of the canonical contour exceeds the exit index, the length condition of an anchored enclosure.
def CanonicalContourWinds (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
exitIndex (ω := ω) hfin
< dartOrbitPeriod (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
noncomputable def exitIndex (hfin : (cluster 2 ω (origin 2)).Finite) : ℕ := by
classical
exact Nat.find (exitPred_exists (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:93
noncomputable def dartOrbitPeriod (K : Set (Site 2)) (a : {e : Dart // IsBoundaryDart K e}) :
ℕ := Function.minimalPeriod (dartNextSub K) a
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:193
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
theorem exitDart_isBoundaryDart (hfin : (cluster 2 ω (origin 2)).Finite) :
IsBoundaryDart (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:67
Uses 13
DefinitionFace walk along the first successors of a boundary dart#✓fully proved
The walk of faces to the left of the first n successors of a boundary dart.
noncomputable def canonicalFaceWalkAux (K : Set (Site 2)) (e : Dart) (he : IsBoundaryDart K e) :
(n : ℕ) → (faceBoundaryGraph K).Walk (dartFace e) (dartFace ((dartNext K)^[n] e))
| 0 => SimpleGraph.Walk.nil
| (n + 1) =>
(canonicalFaceWalkAux K e he n).concat (by
rw [Function.iterate_succ_apply']
exact dartFace_step_adj K _ (iterate_isBoundaryDart K e he n))
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
def IsBoundaryDart (K : Set (Site 2)) (e : Dart) : Prop :=
e.tail ∈ K ∧ e.head ∉ K
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:98
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
noncomputable def dartFace (e : Dart) : Site 2 :=
![ e.tail 0 + negPart (e.dir 0) + negPart (rot90Fun e.dir 0),
e.tail 1 + negPart (e.dir 1) + negPart (rot90Fun e.dir 1) ]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:120
noncomputable def dartNext (K : Set (Site 2)) (e : Dart) : Dart := by
classical
exact
if e.head + (-rot90Fun e.dir) ∈ K then
mkDart (e.head + (-rot90Fun e.dir)) (rot90Fun e.dir) (unitWt_rot90Fun_dir e)
else if e.tail + (-rot90Fun e.dir) ∈ K then
mkDart (e.tail + (-rot90Fun e.dir)) e.dir (unitWt_dir e)
else
mkDart e.tail (-rot90Fun e.dir) (unitWt_neg_rot90Fun_dir e)
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:111
Uses 17 · Used by 1
DefinitionClosed face walk of the canonical contour#✓fully proved
The closed walk of faces to the left of the darts of the canonical contour, based at the upper exit face.
StatMech.Lattice.canonicalFaceWalk · 16 lines
noncomputable def canonicalFaceWalk (hfin : (cluster 2 ω (origin 2)).Finite) :
(faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin) := by
refine (canonicalFaceWalkAux (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
(exitDart_isBoundaryDart (ω := ω) hfin)
(dartOrbitPeriod (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩)).copy
(dartFace_exitDart (ω := ω) hfin) ?_
have hret : (dartNext (cluster 2 ω (origin 2)))^[dartOrbitPeriod (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩]
(exitDart (ω := ω) hfin) = exitDart (ω := ω) hfin := by
have := dartOrbitPeriod_iterate (cluster 2 ω (origin 2))
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
have h2 := congrArg Subtype.val this
rwa [dartNextSub_iterate_val] at h2
rw [hret, dartFace_exitDart (ω := ω) hfin]
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
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
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:142
Uses 22
Theorem\(p_c(\mathbb{Z}^2) < 1\) via the canonical contour, assuming anchored cycles#✓fully proved
p_c(ℤ²) < 1, under the hypothesis that AnchoredCycleExists holds for every configuration
with a finite origin cluster.
theorem pc_lt_one_via_canonicalContour
(hres : ∀ (ω : ConfigSpace (Sym2 (Site 2))) (hfin : (cluster 2 ω (origin 2)).Finite),
AnchoredCycleExists ω hfin) :
StatMech.Percolation.pc 2 < 1
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def AnchoredCycleExists (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ c : (faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin),
c.IsCycle ∧ exitIndex (ω := ω) hfin < c.length
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:238
noncomputable def pc (d : ℕ) : ℝ≥0 :=
sSup (subcriticalSet d)
MathlibExt/Probability/Percolation/Theta.lean:76
DefinitionFace walk along a boundary orbit#✓fully proved
The walk in the face-boundary graph of K through the faces of e and its first n
successors.
noncomputable def dartOrbitFaceWalk (K : Set (Site 2)) (e : Dart) (he : IsBoundaryDart K e) :
(n : ℕ) → (faceBoundaryGraph K).Walk (dartFace e) (dartFace ((dartNext K)^[n] e))
| 0 => SimpleGraph.Walk.nil
| (n + 1) =>
((dartOrbitFaceWalk K e he n).concat
(dartFace_step_adj K _ (iterate_isBoundaryDart K e he n))).copy rfl (by
rw [Function.iterate_succ_apply'])
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
def IsBoundaryDart (K : Set (Site 2)) (e : Dart) : Prop :=
e.tail ∈ K ∧ e.head ∉ K
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:98
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
noncomputable def dartFace (e : Dart) : Site 2 :=
![ e.tail 0 + negPart (e.dir 0) + negPart (rot90Fun e.dir 0),
e.tail 1 + negPart (e.dir 1) + negPart (rot90Fun e.dir 1) ]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:120
noncomputable def dartNext (K : Set (Site 2)) (e : Dart) : Dart := by
classical
exact
if e.head + (-rot90Fun e.dir) ∈ K then
mkDart (e.head + (-rot90Fun e.dir)) (rot90Fun e.dir) (unitWt_rot90Fun_dir e)
else if e.tail + (-rot90Fun e.dir) ∈ K then
mkDart (e.tail + (-rot90Fun e.dir)) e.dir (unitWt_dir e)
else
mkDart e.tail (-rot90Fun e.dir) (unitWt_neg_rot90Fun_dir e)
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:111
theorem dartFace_step_adj (K : Set (Site 2)) (e : Dart) (he : IsBoundaryDart K e) :
(faceBoundaryGraph K).Adj (dartFace e) (dartFace (dartNext K e))
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:262
theorem iterate_isBoundaryDart (K : Set (Site 2)) (e : Dart) (he : IsBoundaryDart K e) (n : ℕ) :
IsBoundaryDart K ((dartNext K)^[n] e)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:317
Uses 17 · Used by 7
DefinitionFace loop of a boundary orbit in the face-boundary graph#✓fully proved
The closed walk of faces along one period of the boundary orbit of e, for finite K.
noncomputable def dartOrbitFaceLoop (K : Set (Site 2)) (hK : K.Finite) (e : Dart)
(he : IsBoundaryDart K e) : (faceBoundaryGraph K).Walk (dartFace e) (dartFace e) :=
(dartOrbitFaceWalk K e he (dartNext_periodic K hK e he).choose).copy rfl (by
rw [(dartNext_periodic K hK e he).choose_spec.2])
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
def IsBoundaryDart (K : Set (Site 2)) (e : Dart) : Prop :=
e.tail ∈ K ∧ e.head ∉ K
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:98
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
noncomputable def dartFace (e : Dart) : Site 2 :=
![ e.tail 0 + negPart (e.dir 0) + negPart (rot90Fun e.dir 0),
e.tail 1 + negPart (e.dir 1) + negPart (rot90Fun e.dir 1) ]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:120
noncomputable def dartOrbitFaceWalk (K : Set (Site 2)) (e : Dart) (he : IsBoundaryDart K e) :
(n : ℕ) → (faceBoundaryGraph K).Walk (dartFace e) (dartFace ((dartNext K)^[n] e))
| 0 => SimpleGraph.Walk.nil
| (n + 1) =>
((dartOrbitFaceWalk K e he n).concat
(dartFace_step_adj K _ (iterate_isBoundaryDart K e he n))).copy rfl (by
rw [Function.iterate_succ_apply'])
MathlibExt/Combinatorics/SimpleGraph/Lattice/OrbitEncloses.lean:71
theorem dartNext_periodic (K : Set (Site 2)) (hK : K.Finite) (e : Dart)
(he : IsBoundaryDart K e) :
∃ p > 0, (dartNext K)^[p] e = e
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:143
Uses 15 · Used by 3
DefinitionFace loop of the exit orbit of a finite cluster#✓fully proved
The closed face walk of the exit orbit of a finite origin cluster, based at the upper exit face.
noncomputable def exitOrbitFaceLoop (hfin : (cluster 2 ω (origin 2)).Finite) :
(faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin) :=
(dartOrbitFaceLoop (cluster 2 ω (origin 2)) hfin (exitDart (ω := ω) hfin)
(exitDart_isBoundaryDart (ω := ω) hfin)).copy
(dartFace_exitDart (ω := ω) hfin) (dartFace_exitDart (ω := ω) hfin)
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
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
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:142
noncomputable def dartOrbitFaceLoop (K : Set (Site 2)) (hK : K.Finite) (e : Dart)
(he : IsBoundaryDart K e) : (faceBoundaryGraph K).Walk (dartFace e) (dartFace e) :=
(dartOrbitFaceWalk K e he (dartNext_periodic K hK e he).choose).copy rfl (by
rw [(dartNext_periodic K hK e he).choose_spec.2])
MathlibExt/Combinatorics/SimpleGraph/Lattice/OrbitEncloses.lean:110
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
theorem exitDart_isBoundaryDart (hfin : (cluster 2 ω (origin 2)).Finite) :
IsBoundaryDart (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:67
theorem dartFace_exitDart (hfin : (cluster 2 ω (origin 2)).Finite) :
dartFace (exitDart (ω := ω) hfin) = exitFaceUp (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:140
Uses 19 · Used by 2
DefinitionCanonical orbit cycle condition#✓fully proved
The face loop of the exit orbit is a cycle, and the left exit dart lies in the exit orbit.
def CanonicalOrbitCycle (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
(exitOrbitFaceLoop (ω := ω) hfin).IsCycle ∧ ExitDartsSameOrbit ω hfin
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
noncomputable def exitOrbitFaceLoop (hfin : (cluster 2 ω (origin 2)).Finite) :
(faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin) :=
(dartOrbitFaceLoop (cluster 2 ω (origin 2)) hfin (exitDart (ω := ω) hfin)
(exitDart_isBoundaryDart (ω := ω) hfin)).copy
(dartFace_exitDart (ω := ω) hfin) (dartFace_exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/OrbitEncloses.lean:128
def ExitDartsSameOrbit (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ n : ℕ, (dartNext (cluster 2 ω (origin 2)))^[n] (exitDart (ω := ω) hfin)
= leftExitDart (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:339
Uses 8 · Used by 1
Theorem\(p_c(\mathbb{Z}^2) < 1\) assuming a canonical orbit cycle#✓fully proved
p_c(ℤ²) < 1, under the hypothesis that CanonicalOrbitCycle holds for every configuration
with a finite origin cluster.
theorem pc_lt_one_orbit
(h : ∀ (ω : ConfigSpace (Sym2 (Site 2))) (hfin : (cluster 2 ω (origin 2)).Finite),
CanonicalOrbitCycle ω hfin) :
(StatMech.Percolation.pc 2 : ℝ) < 1
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def CanonicalOrbitCycle (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
(exitOrbitFaceLoop (ω := ω) hfin).IsCycle ∧ ExitDartsSameOrbit ω hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/OrbitEncloses.lean:192
noncomputable def pc (d : ℕ) : ℝ≥0 :=
sSup (subcriticalSet d)
MathlibExt/Probability/Percolation/Theta.lean:76
Uses 46
DefinitionExit dart of a finite origin cluster#✓fully proved
The exit dart of a finite origin cluster, as an element of the subtype of boundary darts.
noncomputable def exitBaseSub (hfin : (cluster 2 ω (origin 2)).Finite) :
{d : Dart // IsBoundaryDart (cluster 2 ω (origin 2)) d} :=
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
structure Dart where
/-- The site the dart starts at. -/
tail : Site 2
/-- The site the dart points to. -/
head : Site 2
/-- The tail and head are nearest neighbours. -/
adj : (hypercubicLattice 2).Adj tail head
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartDef.lean:57
def IsBoundaryDart (K : Set (Site 2)) (e : Dart) : Prop :=
e.tail ∈ K ∧ e.head ∉ K
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:98
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
theorem exitDart_isBoundaryDart (hfin : (cluster 2 ω (origin 2)).Finite) :
IsBoundaryDart (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:67
Uses 12 · Used by 4
DefinitionMinimal-period face loop of the exit orbit#✓fully proved
The closed walk of faces along one period of the exit orbit, based at the upper exit face.
noncomputable def exitMinFaceLoop (hfin : (cluster 2 ω (origin 2)).Finite) :
(faceBoundaryGraph (cluster 2 ω (origin 2))).Walk
(exitFaceUp (ω := ω) hfin) (exitFaceUp (ω := ω) hfin) :=
((dartOrbitFaceWalk (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
(exitDart_isBoundaryDart (ω := ω) hfin)
(dartOrbitPeriod (cluster 2 ω (origin 2)) (exitBaseSub (ω := ω) hfin))).copy
rfl (by rw [exit_period_closure (ω := ω) hfin])).copy
(dartFace_exitDart (ω := ω) hfin) (dartFace_exitDart (ω := ω) hfin)
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
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
noncomputable def exitFaceUp (hfin : (cluster 2 ω (origin 2)).Finite) : Site 2 :=
![(exitIndex (ω := ω) hfin : ℤ), 0]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourAnchor.lean:142
noncomputable def dartOrbitFaceWalk (K : Set (Site 2)) (e : Dart) (he : IsBoundaryDart K e) :
(n : ℕ) → (faceBoundaryGraph K).Walk (dartFace e) (dartFace ((dartNext K)^[n] e))
| 0 => SimpleGraph.Walk.nil
| (n + 1) =>
((dartOrbitFaceWalk K e he n).concat
(dartFace_step_adj K _ (iterate_isBoundaryDart K e he n))).copy rfl (by
rw [Function.iterate_succ_apply'])
MathlibExt/Combinatorics/SimpleGraph/Lattice/OrbitEncloses.lean:71
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
theorem exitDart_isBoundaryDart (hfin : (cluster 2 ω (origin 2)).Finite) :
IsBoundaryDart (cluster 2 ω (origin 2)) (exitDart (ω := ω) hfin)
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:67
noncomputable def dartOrbitPeriod (K : Set (Site 2)) (a : {e : Dart // IsBoundaryDart K e}) :
ℕ := Function.minimalPeriod (dartNextSub K) a
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:193
noncomputable def exitBaseSub (hfin : (cluster 2 ω (origin 2)).Finite) :
{d : Dart // IsBoundaryDart (cluster 2 ω (origin 2)) d} :=
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanSingleCycle.lean:146
Uses 23 · Used by 1
DefinitionSimplicity of the exit orbit's face walk#✓fully proved
The exit orbit has period at least three and visits distinct faces during one period.
def OrbitFaceSimple (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
3 ≤ dartOrbitPeriod (cluster 2 ω (origin 2)) (exitBaseSub (ω := ω) hfin) ∧
Set.InjOn (fun k => dartFace ((dartNext (cluster 2 ω (origin 2)))^[k] (exitDart (ω := ω) hfin)))
(Set.Iio (dartOrbitPeriod (cluster 2 ω (origin 2)) (exitBaseSub (ω := ω) hfin)))
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
noncomputable def dartOrbitPeriod (K : Set (Site 2)) (a : {e : Dart // IsBoundaryDart K e}) :
ℕ := Function.minimalPeriod (dartNextSub K) a
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartOrbit.lean:193
noncomputable def exitBaseSub (hfin : (cluster 2 ω (origin 2)).Finite) :
{d : Dart // IsBoundaryDart (cluster 2 ω (origin 2)) d} :=
⟨exitDart (ω := ω) hfin, exitDart_isBoundaryDart (ω := ω) hfin⟩
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanSingleCycle.lean:146
noncomputable def dartFace (e : Dart) : Site 2 :=
![ e.tail 0 + negPart (e.dir 0) + negPart (rot90Fun e.dir 0),
e.tail 1 + negPart (e.dir 1) + negPart (rot90Fun e.dir 1) ]
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:120
noncomputable def dartNext (K : Set (Site 2)) (e : Dart) : Dart := by
classical
exact
if e.head + (-rot90Fun e.dir) ∈ K then
mkDart (e.head + (-rot90Fun e.dir)) (rot90Fun e.dir) (unitWt_rot90Fun_dir e)
else if e.tail + (-rot90Fun e.dir) ∈ K then
mkDart (e.tail + (-rot90Fun e.dir)) e.dir (unitWt_dir e)
else
mkDart e.tail (-rot90Fun e.dir) (unitWt_neg_rot90Fun_dir e)
MathlibExt/Combinatorics/SimpleGraph/Lattice/DartNext.lean:111
noncomputable def exitDart (hfin : (cluster 2 ω (origin 2)).Finite) : Dart where
tail := axisSite (exitIndex (ω := ω) hfin)
head := axisSite (exitIndex (ω := ω) hfin + 1)
adj := axisSite_exit_adj (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:56
Uses 10 · Used by 2
Theorem\(p_c(\mathbb{Z}^2) < 1\) assuming simple exit orbits#✓fully proved
p_c(ℤ²) < 1, under the hypothesis that for every configuration with a finite origin cluster
the exit orbit is simple (OrbitFaceSimple) and contains the left exit dart.
theorem pc_lt_one_of_orbitFaceSimple
(h : ∀ (ω : ConfigSpace (Sym2 (Site 2))) (hfin : (cluster 2 ω (origin 2)).Finite),
OrbitFaceSimple ω hfin ∧ ExitDartsSameOrbit ω hfin) :
(StatMech.Percolation.pc 2 : ℝ) < 1
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def cluster (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Set (Site d) :=
{y | Connected d ω x y}
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:103
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def OrbitFaceSimple (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
3 ≤ dartOrbitPeriod (cluster 2 ω (origin 2)) (exitBaseSub (ω := ω) hfin) ∧
Set.InjOn (fun k => dartFace ((dartNext (cluster 2 ω (origin 2)))^[k] (exitDart (ω := ω) hfin)))
(Set.Iio (dartOrbitPeriod (cluster 2 ω (origin 2)) (exitBaseSub (ω := ω) hfin)))
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanSingleCycle.lean:188
def ExitDartsSameOrbit (ω : ConfigSpace (Sym2 (Site 2)))
(hfin : (cluster 2 ω (origin 2)).Finite) : Prop :=
∃ n : ℕ, (dartNext (cluster 2 ω (origin 2)))^[n] (exitDart (ω := ω) hfin)
= leftExitDart (ω := ω) hfin
MathlibExt/Combinatorics/SimpleGraph/Lattice/ContourLinksExits.lean:339
noncomputable def pc (d : ℕ) : ℝ≥0 :=
sSup (subcriticalSet d)
MathlibExt/Probability/Percolation/Theta.lean:76
Uses 47 · Used by 1
DefinitionSet and walk interior share boundary edges#✓fully proved
The set K and the inside jec_leftRegion Vc of the closed walk Vc have the same boundary
edges.
def pww_BdEdgeMatch (K : Set (Site 2)) {a : Site 2} (Vc : (hypercubicLattice 2).Walk a a) : Prop :=
∀ e : Sym2 (Site 2), bdEdge K e ↔ bdEdge (jec_leftRegion Vc) e
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
def bdEdge (S : Set (Site 2)) (e : Sym2 (Site 2)) : Prop := by
classical
exact Sym2.lift ⟨fun x y => (x ∈ S ↔ y ∉ S), by
intro x y
simp only [eq_iff_iff]
by_cases hx : x ∈ S <;> by_cases hy : y ∈ S <;> simp_all⟩ e
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanEnclosure.lean:259
def jec_leftRegion {a : Site 2} (Vc : (hypercubicLattice 2).Walk a a) : Set (Site 2) :=
{z | ¬ Even (jec_rayCount z Vc)}
MathlibExt/Combinatorics/SimpleGraph/Lattice/JordanExteriorClosure.lean:282
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.