def
definition
is_closed
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Foundation.WindingCharges on GitHub at line 347.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
344
345/-- A path is **closed** if its total displacement is zero along every axis.
346 Closed paths on ℤ³ are the analogues of loops in topology. -/
347def is_closed {D : ℕ} (p : LatticePath D) : Prop :=
348 ∀ k : Fin D, winding_number p k = 0
349
350/-- The empty path is closed. -/
351theorem empty_is_closed {D : ℕ} : is_closed ([] : LatticePath D) :=
352 fun k => winding_empty k
353
354/-- A cancelling pair is a closed path. -/
355theorem cancelling_pair_closed {D : ℕ} (a : Fin D) :
356 is_closed ([LatticeStep.plus a, LatticeStep.minus a] : LatticePath D) := by
357 intro k
358 simp [winding_number, step_displacement]
359 split <;> simp
360
361/-
362**THEOREM (Closed Paths Are Topologically Trivial in D ≤ 2)**:
363 In D ≤ 2, every closed path can be reduced to the empty path by
364 removing cancelling pairs. The path is homotopically trivial.
365
366 In D = 3, this is NOT true — closed paths can be knotted.
367 Knotted paths have non-trivial linking with other paths.
368
369 This asymmetry is WHY D = 3 supports topological conservation
370 while D ≤ 2 does not. -/
371
372/-- A square loop on the D-lattice: go +k, +j, −k, −j for two axes j ≠ k.
373 This is a closed non-trivial loop that exists iff D ≥ 2. -/
374def square_loop {D : ℕ} (j k : Fin D) : LatticePath D :=
375 [.plus j, .plus k, .minus j, .minus k]
376
377theorem square_loop_closed {D : ℕ} (j k : Fin D) :