How does a wave travel through a CHAIN of atoms rather than a continuum — is sound's ω = ck good at every wavelength, or does the lattice itself impose a frequency ceiling, and where does it sit?
Units: dimensionless ω_max/√(K/m) at the Brillouin-zone boundary k = π/a (Born & von Kármán 1912; Kittel ch. 4)
▶ Run this simulationRead how it works
Phonon dispersion (phonons): validated → validated + honest-module — the lattice's speed limit, weighed by Newton alone: with NOTHING coded but m·ü_j = K(u_{j+1} − 2u_j + u_{j−1}) on a ring and random initial kicks, the frequency of each spatial Fourier component returns the zone-boundary ceiling ω_max/√(K/m) = 2.000000000000 ± 1.5e-15 vs Born–von Kármán's exact 2 (rel 1.1e-15, float-limited), the sine SHAPE emerges from a free 2-parameter fit (A = 2, B = a/2 to 1e-15; worst of 32 modes 2.6e-13), the k → 0 limit hands back non-dispersive sound c = a√(K/m) to 4.5e-12, a (K, m) sweep returns the stiffness–mass exponent p = 0.500000000000 from a free log–log fit (and (0.25,1) ≡ (1,4) to float: only K/m matters), and Debye's 1912 linear continuum — built from the lab's OWN measured sound speed — predicts a ceiling πc/a = 3.1416 that the chain refuses at 36.3% ≈ 7.5e14 SE: matter's discreteness is what bends the curve — and this run the derisk EXECUTES the shipped PhononModule.ts (sha256-pinned, TS-stripped, new Function + Babylon/DOM stubs): the real fixedUpdate over 3600 fl(1/120) engine ticks (99,000 sim steps, zero deficit) is bit-exact against a re-typed replica at EVERY tick across a full 20-mode k-sweep, all 20 on-screen measured periods sit inside the PREDICTED dt/4 peak-quantization ceiling of an independent N=40 oracle recovery (worst 62% of ceiling, worst ω gap 4.9e-4), the exact ceil-model predicts every per_n (20/20), and a real HUD bug found by reading the executed path — the measured ω was zeroed by _setMode in the same call that recorded it, so the screen said 'measuring…' forever — is fixed so the screen now shows each completed measurement against its own mode's theory
Velocity-Verlet integration of the bare Newtonian ring m·ü_j = K(u_{j+1} − 2u_j + u_{j−1}) — no dispersion relation, no eigensolver, no 2√(K/m)|sin(ka/2)| anywhere in the generator — from RANDOM initial displacements and velocities (8 mulberry32 seeds), so every normal mode starts with an arbitrary amplitude and phase. Each spatial Fourier projection A_n(t) = Σ_j u_j cos(2πnj/N) (a symmetry basis of the ring, not the law) is an EXACT discrete-time sinusoid of the linear Verlet map, so its frequency is read by the exact three-term recurrence A_{i−1} + A_{i+1} = 2cos(ΩΔt)·A_i in least squares, then deconvolved from the integrator's exact modified frequency by ω = (2/dt)·sin(Ω dt/2) — a property of the scheme, mirroring qwell's exact Crank–Nicolson deconvolution — leaving a float-limited estimator (zone-edge rel 1.1e-15). Sound speed from a free quadratic-in-k² extrapolation of ω/k at N = 256; noise robustness from an UNBIASED autocorrelation-recurrence estimator (white measurement noise lives only at lag 0; the naive zero-crossing estimator's +6e-5 interpolation bias was caught and rejected at design time). 13 gates in scripts/phonons-derisk.mjs (~0.9 s): A–J as validated, plus the K–M honest-module execution certificate; known value in scripts/oracles/phonons.reference.json, loaded ONLY to score; tamper ⇒ exit 1. ?world=phonons.
1.5300e-15
5.6000e-15
The Born–von Kármán dispersion relation of the 1-D monatomic harmonic chain, ω(k) = 2√(K/m)|sin(ka/2)| (Born & von Kármán 1912; Kittel ISSP ch. 4 eq. 9; Ashcroft & Mermin ch. 22) — the foundation of lattice dynamics and the phonon concept. It VALIDATES, not derives: the generator is Newton's second law on the ring and nothing else; the sine form, the half-angle, the zone-boundary ceiling 2√(K/m), the sound-speed limit a√(K/m) and the (K/m)^(1/2) scaling all appear ONLY in the reference file or emerge from free fits. Non-circularity is checked five ways in-script: the shape is recovered by a free 2-parameter fit seeded from the data (gate C), the perturbation exponent is a free log–log fit (gate E), the rival's prediction is built from the lab's own measured sound speed rather than any coded constant (gate F), the scoring self-test flips the exit code with the recovered value unchanged (gate J), and the initial conditions are random — no mode shape or frequency is ever injected. The falsified rival is the historically decisive one: Debye's 1912 linear continuum, extrapolated to the zone boundary, misses the ceiling by π/2 (36.3%, ~7.5e14 SE here) — the same-year fork between continuum elasticity and lattice dynamics that the Brillouin zone resolved. Completes the lab's oscillator arc (resonance → coupled → phonons): one pendulum, two coupled, N on a ring — the normal-mode ladder becoming a band.
The module (?world=phonons, src/modules/PhononModule.ts) is now EXECUTED by the derisk, not emulated: gates K–M sha256-pin the source, strip TS mechanically (33 exact pinned pairs + 2 counted bulk passes, banned-syntax scan), run it under new Function with Babylon/DOM recorder stubs, and bit-compare the full state against a re-typed replica at every one of 3600 fl(1/120) engine ticks (99,000 sim steps, zero step deficit, accumulator resets 0, max 1 batch/tick). The on-screen ω is measured from the simulated motion (mean interval between v₀ sign flips over 5 peaks); its systematic vs the oracle recovery is the dt-quantized peak timing, bounded by the DERIVED ceiling dt/4 on the 4-period baseline — observed worst 1.54e-3 s on the period (62% of ceiling, worst ω rel 4.9e-4), with the exact ceil model per_n = dt·(⌈5T/dt⌉−⌈T/dt⌉)/4 matching all 20 modes; the Verlet modified-frequency part is only 1.7e-5 rel and is re-convolved exactly in gate M. The cyan dispersion overlay is law-fed and labelled as theory; it is similarity-tied to the oracle's own free fit at every drawn sample (worst 4.4e-16). Two screen quirks were surfaced by execution and are disclosed: (1) a real HUD bug — _recordAndAdvance stored the measured ω and then called _setMode, which zeroed it, so the HUD's 'ω measured' line displayed 'measuring…' forever; FIXED this run by keeping the last completed measurement (_last) and showing it against its own mode's theory (verified live in headless Chrome: 'ω(k=0.94) = 0.9080 vs 2ω₀sin(k/2) = 0.9080'); (2) the dots plot never shows more than 19 of the 20 measured modes — the 20th record and the sweep-wipe happen in the same _recordAndAdvance call; certified as-is (max_dots pinned at 19), left unfixed as cosmetic.
REFINER run (validated → validated + honest-module). What the certificate adds over gate I's emulation: the emulation was a re-typed mirror that could silently diverge from the file it mirrors; gates K–M close the hole by executing the shipped source itself. Replica constants come from the reference (never read back from the module), so a module tamper cannot drag the replica along with it — verified: SUBSTEPS 55→54 tamper fires K (sha + statics) AND L (state divergence at tick 1, u/v/ac) AND M (no records); known_value→1.9 tamper fires A/G/J with the recovered value unchanged (2.000000000) while K/L/M stay green (the certificate never touches the known value); cert-sha flip fires ONLY K. All three tampers restored by hand, final run green 13/13 in 0.9 s. Gate M's tolerance is not fitted: the peak detector samples the v₀ sign once per step, so each peak time is late by < dt and the 4-period baseline divides the difference of two latenesses by 4 — a physical-cause ceiling (lesson #88), with the exact ceil-model match count (20/20) calibration-pinned. One module edit this run (the HUD-honesty fix, +_last field, ~8 lines); gates build + smoke + derisk all green; live preview verified in the worktree (vite preview + playwright, pageerrors none). Prior validated-rung notes retained in git history. Scope: PhononModule.ts (own module), oracle pair, this finding, fragment, loop-runs line.
npm run derisk -- phonons (scripts/phonons-derisk.mjs)scripts/oracles/phonons.reference.jsonM. Born & Th. von Kármán, 'Über Schwingungen in Raumgittern', Physikalische Zeitschrift 13, 297–309 (1912); C. Kittel, Introduction to Solid State Physics, 8th ed., Wiley (2005), ch. 4; N. W. Ashcroft & N. D. Mermin, Solid State Physics, Holt-Saunders (1976), ch. 22; P. Debye, 'Zur Theorie der spezifischen Wärmen', Annalen der Physik 39, 789–839 (1912) — the falsified rival.