pith. machine review for the scientific record. sign in
structure

NoetherCharge

definition
show as:
view math explainer →
module
IndisputableMonolith.Foundation.TopologicalConservation
domain
Foundation
line
166 · github
papers citing
none yet

open explainer

Read the cached plain-language explainer.

open lean source

IndisputableMonolith.Foundation.TopologicalConservation on GitHub at line 166.

browse module

All declarations in this module, on Recognition.

explainer page

A cached Ask Recognition explainer exists for this declaration.

open explainer

depends on

used by

formal source

 163/-! ## Part 5: Topological vs. Noether Conservation -/
 164
 165/-- A **Noether charge**: real-valued, conserved under dynamics. -/
 166structure NoetherCharge (N : ℕ) where
 167  value : Configuration N → ℝ
 168  conserved : ∀ (c next : Configuration N),
 169    IsVariationalSuccessor c next → value next = value c
 170
 171/-- Log-charge is a Noether charge (conserved, real-valued). -/
 172noncomputable def logChargeAsNoether (N : ℕ) : NoetherCharge N where
 173  value := log_charge
 174  conserved := fun _ _ h => h.1
 175
 176/-- Every topological charge induces a Noether charge by ℤ ↪ ℝ. -/
 177def topological_to_noether {N : ℕ} (Q : TopologicalCharge N) : NoetherCharge N where
 178  value := fun c => (Q.value c : ℝ)
 179  conserved := fun c next h => by simp [Q.conserved c next h]
 180
 181/-- **THEOREM (Noether Charges Need Not Be Quantized)**:
 182    There exist Noether charges that take non-integer values.
 183
 184    Proof: log(2) satisfies 0 < log(2) < 1, so it is not an integer. -/
 185theorem noether_not_necessarily_quantized :
 186    ∃ (N : ℕ) (Q : NoetherCharge N) (c : Configuration N),
 187      ¬∃ n : ℤ, Q.value c = (n : ℝ) := by
 188  use 1, logChargeAsNoether 1
 189  let c : Configuration 1 := {
 190    entries := fun _ => 2
 191    entries_pos := fun _ => by norm_num
 192  }
 193  use c
 194  intro ⟨n, hn⟩
 195  simp only [logChargeAsNoether, log_charge, Fin.sum_univ_one] at hn
 196  have h_pos : 0 < Real.log 2 := Real.log_pos (by norm_num : (1 : ℝ) < 2)