theorem
proved
empty_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 351.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
formal source
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) :
378 is_closed (square_loop j k) := by
379 intro axis
380 simp [square_loop, winding_number, step_displacement]
381 split <;> split <;> simp