Wilson lattice Yang–Mills theory with compact simple gauge group: gauge fields, Wilson loops, dyadic loops, and the axioms for a continuum theory with a mass gap (Jaffe–Witten §4, §6.5)
DefinitionYangMillsThis bundle fixes, in the namespace YangMills, the objects needed to state the Yang–Mills existence and mass gap problem of Jaffe–Witten in the precise form given by Wilson's lattice approximation (Jaffe–Witten §6.5; Osterwalder–Seiler 1978; Chatterjee 2019): a compact simple gauge group, Wilson's lattice gauge theory on finite boxes, Wilson loop observables on dyadic loops, the lattice symmetries, and the properties demanded of a continuum theory.
Gauge group. A compact Hausdorff topological group is a compact simple gauge group (IsCompactSimpleGaugeGroup G) when it is connected, non-abelian, and every closed normal subgroup is finite or equal to . For a compact connected Lie group this is equivalent to its Lie algebra being simple (a finite centre is allowed). is always used together with a homomorphism into the unitary group of ; in the goal is continuous and injective, which makes a compact Lie group.
Lattice, box, gauge fields. Sites are (Site d), is the unit vector (unit d μ), and the box of radius is (box d R). An edge is a pair , representing the segment from to ; boxEdges d R are the edges with both endpoints in the box, boxPlaquettes d R the plaquettes , , with all four corners in the box. A gauge field (Config d R G) assigns to every edge of the box; link U e returns for edges of the box and the junk value otherwise. The plaquette holonomy is (plaquette), a gauge transformation acts by (gaugeTransform), and the Wilson action is
Measure and expectation. haarProb G is the Haar probability measure of the compact group , configMeasure d R G its product over the edges of the box, gibbsWeight ρ β U , and
is the expectation of a complex observable in the Wilson lattice gauge theory on the box with free boundary conditions. plaquetteMeasure ρ β is the probability measure on .
Paths and dyadic loops. A step is with displacement () or (stepVec). pathVertices x s lists the vertices of the path with steps (the endpoint is omitted), pathEdges its undirected edges as (lower endpoint, direction), and pathHol U x s is the ordered product of the link variables along the path, a step from contributing . A dyadic loop (Loop d) is a scale , a base point and a list of steps whose displacements sum to zero (the closed field); its integer vertices stand for the physical points . Loop.refine γ j reads the same physical loop scales finer (base point times , every step subdivided into steps); Loop.atScale γ k is the path representing at scale (for it is the data of unchanged, a junk interpretation that never enters a limit ). Loop.vertices, Loop.edges are the vertices and edges at the loop's own scale, Loop.verticesAt γ k the vertices at scale ; Loop.IsSimple γ means non-empty with no repeated vertex and no repeated edge; Loop.Disjoint γ₁ γ₂ means the two loops share no vertex when read at the finer of their two scales (equivalently, they are disjoint subsets of ); Loop.InBox γ k R means all vertices at scale lie in the box of radius . Loop.rect k T R μ ν is the rectangle with corner , steps in direction and steps in direction , at scale .
Symmetries. Loop.translate γ j v is the translate by ; Loop.timeTranslate γ j n the translate by in the time direction ; Loop.PositiveTime / Loop.StrictlyPositiveTime say all vertices have time coordinate / ; Loop.reflect γ is the Osterwalder–Schrader reflection: time coordinate negated (timeFlip) and orientation reversed, so that for unitary , ; Loop.mapCoords γ σ ε is the image under the signed coordinate permutation of the hypercubic group.
Wilson loops and correlation functions. wilsonLoop ρ U k γ with read at scale ; loopProduct ρ U k A ; and
is the correlation function of the family at lattice spacing in the box of physical half-side (lattice radius ). A family is admissible (IsAdmissible A) when every loop is simple and the loops are pairwise disjoint.
Axioms for a continuum theory (a function from lists of loops to ):
IsContinuumLimit ρ β L Z W: , , , and for every admissible , as (continuum and infinite-volume limit after multiplicative renormalization of each loop);IsLatticeInvariant W: is invariant under all dyadic translations and all signed coordinate permutations, on admissible families;IsReflectionPositive W: for all and admissible families of loops with strictly positive time coordinates, is real and ;HasMassGap W Δ: for all admissible there is such that for every dyadic for which is admissible ( = time translation by );HasFiniteMass W: it is not the case that has mass gap for every — Jaffe–Witten's "the supremum of such is the mass , and we require ".
Formalization Note Jaffe–Witten give no formal definition of "quantum Yang–Mills theory"; this bundle follows their §6.5 and the constructive literature by defining the theory through the limits of Wilson-loop correlation functions of Wilson's lattice theory. Under Osterwalder–Schrader reconstruction from a reflection-positive , exponential decay of all connected time-translated correlations at rate is equivalent to the Hamiltonian having no spectrum in , so HasMassGap is Jaffe–Witten's mass gap in Euclidean form. Multiplicative renormalization constants are needed because raw Wilson loop expectations are expected to vanish in the continuum limit (perimeter divergence); they rescale connected correlations but cannot create time dependence. Only lattice symmetries (dyadic translations, hypercubic group, time reflection) can be imposed on axis-parallel loops; full Euclidean invariance and smeared field operators are not encoded. All integrals are Bochner integrals for the product Haar measure; the integrands are continuous on a compact space and the partition function is positive, so no junk value arises there. Edges outside the box carry the value , and a loop read at a scale coarser than its own is read unchanged; fixed-scale theorems carry the hypothesis γ.scale ≤ k.
import Mathlib
/-!
A. Jaffe, E. Witten, *Quantum Yang–Mills theory*, Clay Mathematics Institute Millennium Prize
Problem description (2000), §4 "The Problem" (p. 6) and §6.5 "Yang–Mills theory" (p. 11).
The objects needed to state the Yang–Mills existence and mass gap problem in the form made
precise by Wilson's lattice approximation (Jaffe–Witten §6.5; K. Osterwalder and E. Seiler,
Ann. Phys. 110 (1978); S. Chatterjee, *Yang–Mills for probabilists*, 2019):
* a **compact simple gauge group** `G`, presented with a faithful finite-dimensional unitary
representation `ρ : G →* U(N)` (every compact Lie group has one, and a compact group with one is
a Lie group);
* the **Wilson lattice gauge theory** on the finite lattice `{x ∈ ℤ^d : |x_μ| ≤ R}` with free
boundary conditions: link variables `U(x, μ) ∈ G`, plaquette holonomies, the Wilson action
`∑_p Re tr ρ(U_p)`, the product Haar probability measure, and the expectation
`⟨F⟩ = ∫ F e^{β ∑_p Re tr ρ(U_p)} / ∫ e^{β ∑_p Re tr ρ(U_p)}` at inverse coupling `β`;
* **Wilson loops** `tr ρ(U_γ)`, where `γ` is an axis-parallel closed lattice path with dyadic
vertices ("dyadic loop"), read at lattice spacing `2^{-k}`; their correlation functions in the
box of physical half-side `L`;
* the symmetries of the lattice (dyadic translations, coordinate permutations and reflections,
Osterwalder–Schrader time reflection) acting on loops;
* the axioms imposed on a **continuum theory** `W` (a correlation functional on families of
loops): being the continuum/infinite-volume limit of the lattice theories after a multiplicative
renormalization of each loop, lattice Euclidean invariance, reflection positivity, and the
**mass gap** in Euclidean form (exponential clustering in the time direction), together with
Jaffe–Witten's requirement that the mass `m = sup Δ` be finite.
Conventions. `Site d = ℤ^d` are lattice sites, direction `0 : Fin d` is Euclidean time. A
`Loop d` carries its own scale `k₀`: its integer data describe the physical loop with lattice
spacing `2^{-k₀}`; at a finer scale `k ≥ k₀` it is read by scaling the base point by `2^{k-k₀}`
and subdividing every step into `2^{k-k₀}` unit steps (`Loop.atScale`). For `k < k₀`,
`Loop.atScale` returns the coarse data unchanged (a junk interpretation that never matters for
limits `k → ∞`; fixed-scale statements carry the hypothesis `γ.scale ≤ k`). Link variables of
edges outside the box are the junk value `1`.
-/
namespace YangMills
noncomputable section
open MeasureTheory Filter Topology TopologicalSpace
/-! ### The gauge group -/
/-- `G` is a compact simple gauge group in the sense of Jaffe–Witten: connected, non-abelian, and
with no closed normal subgroups other than finite ones and `G` itself. For a compact Lie group
(which `G` is, as soon as it has a faithful finite-dimensional continuous representation) this is
equivalent to: `G` is connected and its Lie algebra is simple; it allows a finite centre (e.g.
`SU(N)`, `Spin(N)`, `G₂`, …) and excludes tori, `U(N)`, `SO(4)`, and all products. -/
structure IsCompactSimpleGaugeGroup (G : Type*) [Group G] [TopologicalSpace G] : Prop where
connected : ConnectedSpace G
nonabelian : ∃ a b : G, a * b ≠ b * a
normal_finite_or_top : ∀ K : Subgroup G, K.Normal → IsClosed (K : Set G) →
(K : Set G).Finite ∨ K = ⊤
/-! ### The lattice -/
/-- Lattice sites: `ℤ^d`. -/
abbrev Site (d : ℕ) := Fin d → ℤ
/-- The unit vector `e_μ`. -/
def unit (d : ℕ) (μ : Fin d) : Site d := Pi.single μ 1
/-- The box `{x ∈ ℤ^d : |x_μ| ≤ R for all μ}`. -/
def box (d : ℕ) (R : ℕ) : Finset (Site d) :=
Fintype.piFinset fun _ => Finset.Icc (-(R : ℤ)) R
/-- A directed edge `(x, μ)` of `ℤ^d`, from `x` to `x + e_μ`. -/
abbrev Edge (d : ℕ) := Site d × Fin d
/-- The edges with both endpoints in the box. -/
def boxEdges (d R : ℕ) : Finset (Edge d) :=
(box d R ×ˢ Finset.univ).filter fun e => e.1 + unit d e.2 ∈ box d R
/-- A plaquette `(x, μ, ν)`: the unit square with corners `x, x+e_μ, x+e_μ+e_ν, x+e_ν`. -/
abbrev Plaquette (d : ℕ) := Site d × Fin d × Fin d
/-- The plaquettes `(x, μ, ν)` with `μ < ν` and all four corners in the box. -/
def boxPlaquettes (d R : ℕ) : Finset (Plaquette d) :=
(box d R ×ˢ (Finset.univ ×ˢ Finset.univ)).filter fun p =>
p.2.1 < p.2.2 ∧ p.1 + unit d p.2.1 ∈ box d R ∧ p.1 + unit d p.2.2 ∈ box d R ∧
p.1 + unit d p.2.1 + unit d p.2.2 ∈ box d R
/-- A lattice gauge field on the box: one group element per edge of the box. -/
abbrev Config (d R : ℕ) (G : Type*) := boxEdges d R → G
section Lattice
variable {d R : ℕ} {G : Type*} [Group G]
/-- The link variable `U(x, μ)` of an edge; edges outside the box carry the junk value `1`. -/
def link (U : Config d R G) (e : Edge d) : G :=
if h : e ∈ boxEdges d R then U ⟨e, h⟩ else 1
/-- The plaquette holonomy `U_p = U(x,μ) U(x+e_μ,ν) U(x+e_ν,μ)⁻¹ U(x,ν)⁻¹`. -/
def plaquette (U : Config d R G) (p : Plaquette d) : G :=
link U (p.1, p.2.1) * link U (p.1 + unit d p.2.1, p.2.2) *
(link U (p.1 + unit d p.2.2, p.2.1))⁻¹ * (link U (p.1, p.2.2))⁻¹
/-- A gauge transformation `g : ℤ^d → G` acts by `U(x,μ) ↦ g(x) U(x,μ) g(x+e_μ)⁻¹`. -/
def gaugeTransform (g : Site d → G) (U : Config d R G) : Config d R G :=
fun e => g e.1.1 * U e * (g (e.1.1 + unit d e.1.2))⁻¹
variable {N : ℕ} (ρ : G →* Matrix.unitaryGroup (Fin N) ℂ)
/-- The Wilson action `S(U) = ∑_{p ⊆ box} Re tr ρ(U_p)` (the Gibbs density is `e^{β S}`). -/
noncomputable def wilsonAction (U : Config d R G) : ℝ :=
∑ p ∈ boxPlaquettes d R, (Matrix.trace (ρ (plaquette U p) : Matrix (Fin N) (Fin N) ℂ)).re
end Lattice
section Measure
variable {d R : ℕ} {G : Type*} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [MeasurableSpace G] [BorelSpace G]
/-- The Haar probability measure of the compact group `G`. -/
noncomputable def haarProb (G : Type*) [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [MeasurableSpace G] [BorelSpace G] : Measure G :=
Measure.haarMeasure (⊤ : PositiveCompacts G)
/-- The product Haar probability measure on the gauge fields of the box. -/
noncomputable def configMeasure (d R : ℕ) (G : Type*) [Group G] [TopologicalSpace G]
[IsTopologicalGroup G] [CompactSpace G] [MeasurableSpace G] [BorelSpace G] :
Measure (Config d R G) :=
Measure.pi fun _ => haarProb G
variable {N : ℕ} (ρ : G →* Matrix.unitaryGroup (Fin N) ℂ)
/-- The Gibbs weight `e^{β S(U)}` of the Wilson lattice gauge theory at inverse coupling `β`. -/
noncomputable def gibbsWeight (β : ℝ) (U : Config d R G) : ℝ :=
Real.exp (β * wilsonAction ρ U)
/-- The expectation `⟨F⟩_{R,β} = ∫ F e^{βS} dU / ∫ e^{βS} dU` of an observable `F` in the
Wilson lattice gauge theory on the box of radius `R`, with free boundary conditions. -/
noncomputable def expectation (β : ℝ) (F : Config d R G → ℂ) : ℂ :=
(∫ U, F U * (gibbsWeight ρ β U : ℂ) ∂configMeasure d R G) /
∫ U, (gibbsWeight ρ β U : ℂ) ∂configMeasure d R G
/-- The single-plaquette probability measure `e^{β Re tr ρ(g)} dg / ∫ e^{β Re tr ρ} dg` on `G`
(used in the exact solution of the two-dimensional theory). -/
noncomputable def plaquetteMeasure (β : ℝ) : Measure G :=
(ENNReal.ofReal (∫ g, Real.exp (β * (Matrix.trace (ρ g : Matrix (Fin N) (Fin N) ℂ)).re)
∂haarProb G))⁻¹ •
(haarProb G).withDensity fun g =>
ENNReal.ofReal (Real.exp (β * (Matrix.trace (ρ g : Matrix (Fin N) (Fin N) ℂ)).re))
end Measure
/-! ### Paths and loops -/
/-- A unit step `(μ, b)`: `+e_μ` if `b = true`, `-e_μ` if `b = false`. -/
abbrev Step (d : ℕ) := Fin d × Bool
/-- The displacement of a step. -/
def stepVec {d : ℕ} (s : Step d) : Site d := if s.2 then unit d s.1 else -unit d s.1
section Paths
variable {d : ℕ}
/-- The vertices `x = v₀, v₁, …, v_{m-1}` of the path starting at `x` with steps `s₁, …, s_m`
(the final endpoint `v_m` is not listed; for a closed path it is `v₀`). -/
def pathVertices : Site d → List (Step d) → List (Site d)
| _, [] => []
| x, s :: rest => x :: pathVertices (x + stepVec s) rest
/-- The undirected edges of a path, each written as `(lower endpoint, direction)`. -/
def pathEdges : Site d → List (Step d) → List (Edge d)
| _, [] => []
| x, s :: rest => (if s.2 then (x, s.1) else (x - unit d s.1, s.1)) :: pathEdges (x + stepVec s) rest
variable {R : ℕ} {G : Type*} [Group G]
/-- The holonomy (ordered product of link variables) along the path from `x` with steps `s`;
a step `-e_μ` from `x` contributes `U(x - e_μ, μ)⁻¹`. -/
def pathHol (U : Config d R G) : Site d → List (Step d) → G
| _, [] => 1
| x, s :: rest =>
(if s.2 then link U (x, s.1) else (link U (x - unit d s.1, s.1))⁻¹) *
pathHol U (x + stepVec s) rest
end Paths
/-- A dyadic loop: an axis-parallel closed lattice path, read at lattice spacing `2^{-scale}`.
Its physical vertices are `2^{-scale} · v` for the vertices `v` of the path. -/
structure Loop (d : ℕ) where
/-- the scale `k₀`: the loop lives on the lattice `2^{-k₀} ℤ^d` -/
scale : ℕ
/-- the starting vertex, in lattice units at scale `k₀` -/
base : Site d
/-- the unit steps -/
steps : List (Step d)
/-- the path returns to its starting vertex -/
closed : (steps.map stepVec).sum = 0
namespace Loop
variable {d : ℕ}
theorem sum_map_stepVec_flatMap_replicate (n : ℕ) (l : List (Step d)) :
((l.flatMap (List.replicate n)).map stepVec).sum = n • (l.map stepVec).sum := by
induction l with
| nil => simp
| cons s l ih =>
simp only [List.flatMap_cons, List.map_append, List.sum_append, List.map_replicate,
List.sum_replicate, List.map_cons, List.sum_cons, ih, smul_add]
/-- The same physical loop read `j` scales finer: base point scaled by `2^j`, each step
subdivided into `2^j` unit steps. -/
def refine (γ : Loop d) (j : ℕ) : Loop d where
scale := γ.scale + j
base := (2 ^ j : ℤ) • γ.base
steps := γ.steps.flatMap (List.replicate (2 ^ j))
closed := by rw [sum_map_stepVec_flatMap_replicate, γ.closed, smul_zero]
/-- The lattice path (base point, steps) representing `γ` at scale `k`; meaningful for
`k ≥ γ.scale` (for `k < γ.scale` it returns the data of `γ` unchanged). -/
def atScale (γ : Loop d) (k : ℕ) : Site d × List (Step d) :=
((γ.refine (k - γ.scale)).base, (γ.refine (k - γ.scale)).steps)
/-- The vertices of `γ` at its own scale (each listed once for a simple loop). -/
def vertices (γ : Loop d) : List (Site d) := pathVertices γ.base γ.steps
/-- The vertices of `γ` read at scale `k`. -/
def verticesAt (γ : Loop d) (k : ℕ) : List (Site d) :=
pathVertices (γ.atScale k).1 (γ.atScale k).2
/-- The undirected edges of `γ` at its own scale. -/
def edges (γ : Loop d) : List (Edge d) := pathEdges γ.base γ.steps
/-- `γ` is a simple closed curve: non-empty, visits no vertex twice, traverses no edge twice. -/
def IsSimple (γ : Loop d) : Prop := γ.steps ≠ [] ∧ γ.vertices.Nodup ∧ γ.edges.Nodup
/-- Two dyadic loops are disjoint as subsets of `ℝ^d`: read at the finer of their two scales,
they share no vertex. -/
def Disjoint (γ₁ γ₂ : Loop d) : Prop :=
List.Disjoint (γ₁.verticesAt (max γ₁.scale γ₂.scale)) (γ₂.verticesAt (max γ₁.scale γ₂.scale))
/-- All vertices of `γ` (read at scale `k`) lie in the box of radius `R`. -/
def InBox (γ : Loop d) (k R : ℕ) : Prop := ∀ x ∈ γ.verticesAt k, x ∈ box d R
/-- Translation of `γ` by the dyadic vector `2^{-j} v`. -/
def translate (γ : Loop d) (j : ℕ) (v : Site d) : Loop d where
scale := max γ.scale j
base := (γ.refine (max γ.scale j - γ.scale)).base + (2 ^ (max γ.scale j - j) : ℤ) • v
steps := (γ.refine (max γ.scale j - γ.scale)).steps
closed := (γ.refine (max γ.scale j - γ.scale)).closed
section Time
variable [NeZero d]
/-- Translation of `γ` forward in Euclidean time (direction `0`) by `n · 2^{-j}`. -/
def timeTranslate (γ : Loop d) (j n : ℕ) : Loop d := γ.translate j ((n : ℤ) • unit d 0)
/-- All vertices of `γ` have time coordinate `≥ 0`. -/
def PositiveTime (γ : Loop d) : Prop := ∀ x ∈ γ.vertices, 0 ≤ x 0
/-- All vertices of `γ` have time coordinate `> 0`. -/
def StrictlyPositiveTime (γ : Loop d) : Prop := ∀ x ∈ γ.vertices, 0 < x 0
/-- Time reflection `(x₀, x⃗) ↦ (-x₀, x⃗)` on sites. -/
def timeFlip (x : Site d) : Site d := fun μ => if μ = 0 then -x μ else x μ
theorem timeFlip_add (x y : Site d) : timeFlip (x + y) = timeFlip x + timeFlip y := by
funext μ; simp only [timeFlip, Pi.add_apply]; split_ifs <;> ring
theorem timeFlip_zero : timeFlip (0 : Site d) = 0 := by
funext μ; simp [timeFlip]
/-- Time reflection as an additive map. -/
def timeFlipHom : Site d →+ Site d where
toFun := timeFlip
map_zero' := timeFlip_zero
map_add' := timeFlip_add
/-- The step of the reflected-and-reversed loop: time steps keep their sign, spatial steps flip. -/
def reflectStep (s : Step d) : Step d := if s.1 = 0 then s else (s.1, !s.2)
theorem stepVec_reflectStep (s : Step d) : stepVec (reflectStep s) = -timeFlip (stepVec s) := by
obtain ⟨μ, b⟩ := s
funext ν
simp only [reflectStep, stepVec, timeFlip, unit, Pi.neg_apply]
by_cases hμ : μ = 0 <;> by_cases hν : ν = 0 <;> cases b <;>
simp [hμ, hν, Pi.single_apply]
theorem sum_map_stepVec_reflect (l : List (Step d)) :
(((l.map reflectStep).reverse).map stepVec).sum = -timeFlip (l.map stepVec).sum := by
induction l with
| nil => simp [timeFlip_zero]
| cons s l ih =>
simp only [List.map_cons, List.reverse_cons, List.map_append, List.sum_append, ih,
List.map_nil, List.sum_cons, List.sum_nil, add_zero, stepVec_reflectStep, timeFlip_add]
abel
/-- The Osterwalder–Schrader reflection of a loop: reflect the time coordinate and reverse the
orientation, so that `tr ρ(U_{reflect γ}) = conj (tr ρ(U_{θγ}))` for unitary `ρ`. -/
def reflect (γ : Loop d) : Loop d where
scale := γ.scale
base := timeFlip γ.base
steps := (γ.steps.map reflectStep).reverse
closed := by rw [sum_map_stepVec_reflect, γ.closed, timeFlip_zero, neg_zero]
end Time
section Hyperoctahedral
/-- The signed coordinate permutation `x ↦ (ε_μ · x_{σ⁻¹ μ})_μ` of `ℤ^d`, where `ε_μ = ±1`
according to `ε μ = true / false`. -/
def coordMap (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) (x : Site d) : Site d :=
fun μ => (if ε μ then 1 else -1) * x (σ.symm μ)
theorem coordMap_add (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) (x y : Site d) :
coordMap σ ε (x + y) = coordMap σ ε x + coordMap σ ε y := by
funext μ; simp only [coordMap, Pi.add_apply]; ring
theorem coordMap_zero (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) :
coordMap σ ε (0 : Site d) = 0 := by
funext μ; simp [coordMap]
/-- The signed coordinate permutation as an additive map. -/
def coordMapHom (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) : Site d →+ Site d where
toFun := coordMap σ ε
map_zero' := coordMap_zero σ ε
map_add' := coordMap_add σ ε
/-- The image of a step under a signed coordinate permutation. -/
def mapStep (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) (s : Step d) : Step d :=
(σ s.1, s.2 == ε (σ s.1))
theorem stepVec_mapStep (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) (s : Step d) :
stepVec (mapStep σ ε s) = coordMap σ ε (stepVec s) := by
obtain ⟨μ, b⟩ := s
funext ν
simp only [mapStep, stepVec, coordMap, unit]
by_cases hν : ν = σ μ
· subst hν
simp only [Equiv.symm_apply_apply]
cases b <;> by_cases hε : ε (σ μ) = true <;> simp [hε]
· have h1 : σ.symm ν ≠ μ := fun h => hν (by rw [← h, Equiv.apply_symm_apply])
have h2 : (Pi.single (σ μ) (1 : ℤ) : Site d) ν = 0 := Pi.single_eq_of_ne hν 1
have h3 : (Pi.single μ (1 : ℤ) : Site d) (σ.symm ν) = 0 := Pi.single_eq_of_ne h1 1
cases b <;> by_cases hε : ε (σ μ) = true <;> simp [hε, h2, h3]
/-- The image of `γ` under the signed coordinate permutation `(σ, ε)` of the hypercubic group. -/
def mapCoords (γ : Loop d) (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool) : Loop d where
scale := γ.scale
base := coordMap σ ε γ.base
steps := γ.steps.map (mapStep σ ε)
closed := by
rw [List.map_map]
have h1 : (stepVec ∘ mapStep σ ε) = fun s : Step d => coordMapHom σ ε (stepVec s) := by
funext s; simp [stepVec_mapStep, coordMapHom]
rw [h1]
have h2 : (fun s : Step d => coordMapHom σ ε (stepVec s)) = (coordMapHom σ ε) ∘ stepVec := rfl
rw [h2, ← List.map_map, ← map_list_sum, γ.closed, map_zero]
end Hyperoctahedral
/-- The rectangular loop with corner `0`, extending `T` lattice units in direction `μ` and `R`
in direction `ν`, at scale `k` (so of physical size `2^{-k} T × 2^{-k} R`). -/
def rect (k T R : ℕ) (μ ν : Fin d) : Loop d where
scale := k
base := 0
steps := List.replicate T (μ, true) ++ List.replicate R (ν, true) ++
List.replicate T (μ, false) ++ List.replicate R (ν, false)
closed := by
simp only [List.map_append, List.sum_append, List.map_replicate, List.sum_replicate, stepVec,
Bool.false_eq_true, ↓reduceIte, smul_neg]
abel
end Loop
/-! ### Wilson loops and their correlation functions -/
section Observables
variable {d R N : ℕ} {G : Type*} [Group G] (ρ : G →* Matrix.unitaryGroup (Fin N) ℂ)
/-- The Wilson loop `W_γ(U) = tr ρ(U_γ)`, the trace of the holonomy of `U` around `γ` read at
scale `k`. -/
noncomputable def wilsonLoop (U : Config d R G) (k : ℕ) (γ : Loop d) : ℂ :=
Matrix.trace (ρ (pathHol U (γ.atScale k).1 (γ.atScale k).2) : Matrix (Fin N) (Fin N) ℂ)
/-- The product `∏_{γ ∈ A} W_γ(U)` over a family of loops. -/
noncomputable def loopProduct (U : Config d R G) (k : ℕ) (A : List (Loop d)) : ℂ :=
(A.map (wilsonLoop ρ U k)).prod
variable [TopologicalSpace G] [IsTopologicalGroup G] [CompactSpace G] [MeasurableSpace G]
[BorelSpace G]
/-- The correlation function `⟨∏_{γ ∈ A} tr ρ(U_γ)⟩_{k,L,β}` of a family of dyadic loops in the
Wilson lattice gauge theory at lattice spacing `2^{-k}`, in the box of physical half-side `L`
(lattice radius `L · 2^k`), at inverse coupling `β`. -/
noncomputable def loopCorrelation (k L : ℕ) (β : ℝ) (A : List (Loop d)) : ℂ :=
expectation (R := L * 2 ^ k) ρ β fun U => loopProduct ρ U k A
end Observables
/-! ### Axioms for the continuum theory -/
section Continuum
variable {d : ℕ}
/-- A family of loops is admissible when each loop is simple and the loops are pairwise
disjoint; the continuum theory is only asked to assign correlation functions to such families. -/
def IsAdmissible (A : List (Loop d)) : Prop :=
(∀ γ ∈ A, γ.IsSimple) ∧ A.Pairwise Loop.Disjoint
variable {N : ℕ} {G : Type*} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
[CompactSpace G] [MeasurableSpace G] [BorelSpace G] (ρ : G →* Matrix.unitaryGroup (Fin N) ℂ)
/-- `W` is a continuum limit of the Wilson lattice gauge theories with gauge group `(G, ρ)`:
along the lattice spacings `2^{-k}`, with inverse couplings `β k`, boxes of half-side `L k → ∞`,
and positive multiplicative renormalization constants `Z k γ` for each loop, the renormalized
correlation functions of every admissible family of loops converge to `W`. -/
structure IsContinuumLimit (β : ℕ → ℝ) (L : ℕ → ℕ) (Z : ℕ → Loop d → ℝ)
(W : List (Loop d) → ℂ) : Prop where
β_pos : ∀ k, 0 < β k
Z_pos : ∀ k γ, 0 < Z k γ
L_tendsto : Tendsto L atTop atTop
tendsto : ∀ A : List (Loop d), IsAdmissible A →
Tendsto (fun k => ((A.map (Z k)).prod : ℂ) * loopCorrelation ρ k (L k) (β k) A)
atTop (𝓝 (W A))
/-- Invariance of `W` under the symmetries of the lattice that survive in the continuum:
all dyadic translations and all signed coordinate permutations. -/
structure IsLatticeInvariant (W : List (Loop d) → ℂ) : Prop where
translate : ∀ (A : List (Loop d)) (j : ℕ) (v : Site d), IsAdmissible A →
W (A.map fun γ => γ.translate j v) = W A
mapCoords : ∀ (A : List (Loop d)) (σ : Equiv.Perm (Fin d)) (ε : Fin d → Bool), IsAdmissible A →
W (A.map fun γ => γ.mapCoords σ ε) = W A
variable [NeZero d]
/-- Osterwalder–Schrader reflection positivity of `W`: for all coefficients `c_i ∈ ℂ` and
admissible families `A_i` of loops with strictly positive time coordinates,
`∑_{i,j} conj(c_i) c_j W(θA_i ∪ A_j)` is real and `≥ 0`, where `θ` is `Loop.reflect`. -/
def IsReflectionPositive (W : List (Loop d) → ℂ) : Prop :=
∀ (n : ℕ) (c : Fin n → ℂ) (A : Fin n → List (Loop d)),
(∀ i, IsAdmissible (A i) ∧ ∀ γ ∈ A i, γ.StrictlyPositiveTime) →
(∑ i, ∑ j, (starRingEnd ℂ) (c i) * c j * W ((A i).map Loop.reflect ++ A j)).im = 0 ∧
0 ≤ (∑ i, ∑ j, (starRingEnd ℂ) (c i) * c j * W ((A i).map Loop.reflect ++ A j)).re
/-- `W` has a mass gap of size at least `Δ`: connected correlations between any two admissible
families of loops decay at least like `e^{-Δ t}` in their Euclidean time separation `t`,
`|W(A ∪ τ_t B) - W(A) W(B)| ≤ C_{A,B} e^{-Δ t}` for all dyadic `t = n / 2^j ≥ 0` for which
`A ∪ τ_t B` is admissible. Under Osterwalder–Schrader reconstruction this is equivalent to the
Hamiltonian having no spectrum in `(0, Δ)`. -/
def HasMassGap (W : List (Loop d) → ℂ) (Δ : ℝ) : Prop :=
∀ A B : List (Loop d), IsAdmissible A → IsAdmissible B → ∃ C : ℝ, ∀ j n : ℕ,
IsAdmissible (A ++ B.map fun γ => γ.timeTranslate j n) →
‖W (A ++ B.map fun γ => γ.timeTranslate j n) - W A * W B‖ ≤
C * Real.exp (-Δ * ((n : ℝ) / 2 ^ j))
/-- Jaffe–Witten's requirement that the mass `m = sup {Δ : W has mass gap Δ}` be finite:
equivalently the theory is not trivial (its Hamiltonian is not zero). -/
def HasFiniteMass (W : List (Loop d) → ℂ) : Prop := ¬ ∀ Δ : ℝ, HasMassGap W Δ
end Continuum
end
end YangMills
Read-back
What the Lean code literally says, in plain math · claude-fable-5-1
Read-back: Def_YangMills bundle (namespace YangMills)
All declarations below live in the namespace YangMills, are noncomputable where marked, and open the Mathlib namespaces for measure theory, filters and topology. Throughout, unless stated otherwise; includes . Subtraction of natural numbers is truncated ( whenever ); I flag every place it occurs.
IsCompactSimpleGaugeGroup
A predicate (a Prop-valued structure) on a type equipped with only a group structure and a topology. No compatibility between the group law and the topology is assumed (no continuity of multiplication or inversion), no compactness, no Hausdorff-ness, no measurability. The predicate holds iff all three of the following hold:
connected: is a connected space, i.e. is nonempty and its underlying set is preconnected (cannot be split by two disjoint nonempty open sets).nonabelian: there exist with .normal_finite_or_top: for every subgroup which is normal and whose underlying set is closed in the topology of , either the underlying set of is finite, or (the top subgroup).
Nothing else is asserted; in particular the name's word "compact" does not correspond to any field.
Site d
An abbreviation: a site in dimension is a function , i.e. an element of , written . For there is exactly one site (the empty function). Sites form an additive group under coordinatewise addition, and admit scalar multiplication by integers, .
unit d μ
For , the site with if and otherwise (the standard basis vector).
box d R
The finite set
i.e. the discrete cube , constructed as the finite set of functions whose -th value lies in the integer interval for every . It has elements; for it is a singleton, for it is .
Edge d
An abbreviation: an edge is a pair with a site and a direction index. No geometric meaning is attached by the type itself.
boxEdges d R
The finite set of edges
obtained by filtering the product of with the full set of direction indices by the condition that (the site whose -th coordinate is increased by ) also lies in ; equivalently . For this set is empty.
Plaquette d
An abbreviation: a plaquette is a triple with and , stored as a pair .
boxPlaquettes d R
The finite set of plaquettes
obtained by filtering the product by the conjunction of the four conditions shown. The comparison is the usual order on , so each unordered pair of distinct directions appears once. For this set is empty.
Config d R G
An abbreviation: a configuration is a function from the finite set of box edges (as a subtype: an edge together with a proof that it belongs to ) into a type . In this abbreviation no structure on is required.
Section Lattice (assumptions: implicit; a type with a group structure)
link U e
For a configuration and an arbitrary edge (not necessarily in the box), the group element
The default value (identity of ) is a junk value for edges outside the box.
plaquette U p
For a configuration and an arbitrary plaquette (no membership in and no required), the group element
with products read left to right in the (possibly noncommutative) group . Links outside contribute via the default in link.
gaugeTransform g U
For a function (defined on all sites) and a configuration , the configuration given on an edge by
wilsonAction ρ U
Additional assumptions: implicit, and a monoid homomorphism (preserving multiplication and the identity) into the unitary group of complex matrices . No continuity or measurability of is assumed. The Wilson action is the real number
where is viewed as an complex matrix and is the matrix trace. There is no sign, no normalisation constant, and no subtraction of . If (e.g. ) then ; if the trace is and .
Section Measure (assumptions: implicit; a group with a topology making multiplication and inversion continuous, compact, equipped with a -algebra which is the Borel -algebra of the topology)
haarProb G
The measure on defined as Mathlib's left Haar measure associated to the positive compact set (the whole space, which is compact and nonempty since contains ). By Mathlib's normalisation this is the left-invariant Haar measure scaled so that , i.e. a probability measure. (All typeclass assumptions listed for the section are required explicitly by this definition.)
configMeasure d R G
The product measure
on the configuration space : Mathlib's finite product (Measure.pi) of one copy of per box edge. When the configuration space is a singleton and this is the Dirac mass of total measure .
gibbsWeight ρ β U
For a monoid homomorphism, (any sign) and a configuration , the positive real number
with the Wilson action above (note the sign: , not ).
expectation ρ β F
For and , the complex number
where is cast from to , both integrals are Bochner integrals in , and is division in . Junk conventions apply: a Bochner integral of a non-integrable (in particular non-measurable) integrand equals , and division by in yields . Since is not assumed continuous or measurable, neither integrand is asserted to be integrable; if the denominator's integral is (for whatever reason) the expectation is .
plaquetteMeasure ρ β
For , a measure on defined as
where sends negative reals to , the inner integral is a real Bochner integral (equal to if the integrand is not integrable), the inverse is taken in (so and ), "with density" is Mathlib's withDensity (defined for any function via the lower Lebesgue integral, no measurability required), and is scaling of a measure by an element of . If the normalising integral evaluates to the prefactor is .
Step d
An abbreviation: a step is a pair with a direction and a Boolean.
stepVec s
For a step , the site
Section Paths ( implicit)
pathVertices x [s_1,\dots,s_n]
Defined recursively on the step list. For a starting site and steps :
so the result is the list of sites : the starting point of each step, not including the final endpoint . For the empty step list it is the empty list (the start is not listed).
pathEdges x [s_1,\dots,s_n]
Defined recursively. , and for a first step ,
That is, each step is recorded as the edge whose lower endpoint is for a forward step and for a backward step, without recording orientation.
pathHol U x [s_1,\dots,s_n]
Additional assumptions: implicit, a group, a configuration. Defined recursively: , and for a first step ,
i.e. the ordered left-to-right product along the path of the link variables, inverted on backward steps, using (so any edge outside contributes ).
Loop d
A structure with four fields:
scale, a natural number ;base, a site ;stepsa finite list of steps ;closeda proof that in .
Nothing requires the step list to be nonempty (the empty list is closed), nothing relates scale to base or steps, and no bound on base is imposed. Two loops are equal iff their scale, base and steps agree (the proof field is irrelevant).
Namespace Loop ( implicit throughout)
Auxiliary sum_map_stepVec_flatMap_replicate n l
(Proof-obligation lemma.) For every and step list , replacing every step of by consecutive copies of itself and summing the step vectors gives .
refine γ j
For a loop and , the loop
where is coordinatewise integer scaling. Its closed field asserts , discharged from 's closedness via the lemma above. For , .
atScale γ k
For a loop and , the pair (base, steps) of , where is truncated natural subtraction. Explicitly:
The scale field of the result is discarded.
vertices γ
The list : the starting sites of each step of at its own base and step list (endpoint not repeated; empty if there are no steps).
verticesAt γ k
The list applied to the base and steps of , with the truncated-subtraction behaviour above (for it equals vertices γ).
edges γ
The list of (unoriented, lower-endpoint) edges traversed by at its own base and steps.
IsSimple γ
The conjunction of three conditions: the step list of is nonempty; the list vertices γ has no repeated entries; the list edges γ has no repeated entries. (Both no-repetition conditions are checked as lists at the loop's native scale.)
Disjoint γ₁ γ₂
Let . The predicate asserts that the lists and have no common element: for every site , it is not the case that belongs to both lists. (Since for both, no truncation occurs here.)
InBox γ k R
Every site in the list lies in the cube . Vacuously true if the list is empty (e.g. no steps). Subject to the truncation in atScale when .
translate γ j v
For a loop , , and a site , let . The loop with
scale;base(both exponents are honest since and ; exactly one of them is unless );stepsthe steps of each repeated times (the steps of );closedthe closedness proof of .
Section Time (additional assumption: , so that the index exists)
timeTranslate γ j n
: the translate above with , cast to .
PositiveTime γ
Every site in the list vertices γ (native scale) satisfies . Vacuous if the list is empty.
StrictlyPositiveTime γ
Every site in the list vertices γ satisfies . Vacuous if the list is empty.
timeFlip x
The site with and for .
Auxiliary timeFlip_add, timeFlip_zero
and .
timeFlipHom
packaged as an additive group homomorphism with the two lemmas above as its axioms.
reflectStep s
For :
That is, steps in direction are unchanged and steps in every other direction have their Boolean flipped.
Auxiliary stepVec_reflectStep, sum_map_stepVec_reflect
; and for any step list , the sum of step vectors of the reversed list of reflected steps equals .
reflect γ
The loop with scale , base , and steps the list obtained by applying reflectStep to every step of and then reversing the list. Its closed field asserts the step vectors of this new list sum to , discharged via the lemma above from 's closedness.
Section Hyperoctahedral
coordMap σ ε x
For a permutation of , a sign pattern , and a site , the site
Auxiliary coordMap_add, coordMap_zero
and .
coordMapHom σ ε
packaged as an additive group homomorphism .
mapStep σ ε s
For , the step
where the second component is the Boolean " equals ": it is itself when and when .
Auxiliary stepVec_mapStep
.
mapCoords γ σ ε
The loop with scale , base , steps the list of in the original order. Its closed field asserts the new step vectors sum to , discharged from 's closedness using additivity of .
rect k T R μ ν
For and directions (not required to be distinct), the loop with scale , base , and steps equal to the concatenation
i.e. forward steps in direction , forward in , backward in , backward in . Its closed field asserts . If the step list is empty; if the path retraces itself. (Here is a parameter of rect, unrelated to a box radius.)
Section Observables (assumptions: implicit; a group; a monoid homomorphism)
wilsonLoop ρ U k γ
For a configuration , a scale , and a loop , the complex number
i.e. the trace of the matrix applied to the path holonomy of along the base and step list of (with the truncation convention: for the loop's own base and steps are used). Links outside contribute . For an empty step list the holonomy is and the value is .
loopProduct ρ U k A
For a list of loops , the complex product (in list order; equals for the empty list).
loopCorrelation ρ k L β A
Additional assumptions: is a topological group, compact, with its Borel -algebra. For , , and a list of loops , the complex number
computed by expectation on the configuration space of box radius , i.e. over with measure , with all the junk conventions of expectation (non-integrable integrands give ; division by gives ). When the box is and .
Section Continuum ( implicit)
IsAdmissible A
For a list of loops : every satisfies IsSimple (nonempty steps, no repeated vertex, no repeated edge at native scale), and the list is pairwise Disjoint in the sense that for every pair of positions , holds (vertex lists at the common scale share no site). The empty list is admissible.
IsContinuumLimit ρ β L Z W
Assumptions: implicit; a compact topological group with Borel -algebra; a monoid homomorphism (no continuity assumed). Data: , , , . The predicate holds iff all of:
β_pos: for every .Z_pos: for every and every loop .L_tendsto: as (for every , eventually ).tendsto: for every admissible list ,
in (the real product is cast to ; convergence is with respect to the standard topology on , along in ).
No condition is placed on for non-admissible lists, and no condition relates to anything else.
IsLatticeInvariant W
For , both of:
translate: for every list , every , every site , if is admissible then .mapCoords: for every list , every permutation of , every , if is admissible then .
Only the source list is required to be admissible; nothing is required of the transformed list.
IsReflectionPositive W
Assumption: . For : for every , every family of coefficients , and every family of loop lists , if for every the list is admissible and every loop in satisfies StrictlyPositiveTime (all its native-scale vertices have ), then the complex number
where is the list obtained by applying Loop.reflect to each loop of and is list concatenation, satisfies and . For the sums are empty and the conclusion holds trivially.
HasMassGap W Δ
Assumption: . For and (any sign): for every two admissible lists there exists a real constant (any sign allowed, depending on ) such that for every , if the concatenated list is admissible, then
where is the modulus on , is cast to and is real division. For pairs for which the concatenated list is not admissible, nothing is asserted; if no such pair exists the condition on is vacuous.
HasFiniteMass W
Assumption: . The negation of "for every , HasMassGap W Δ"; equivalently, there exists some (possibly negative or zero) for which HasMassGap W Δ fails.