The Verification Venue · a resonance, integrated until it answers

The Gap That Carves Itself

Every interactive orrery shows a mean-motion resonance as a quiet island where orbits lock and stay, and the received account of the 3:1 says the island is really a machine: it pumps the eccentricity of what it traps until nothing is left, and the gap is carved by chaos rather than by anything static. That is a claim about a computation nobody watching an orrery can afford. This page runs it: a compiled symplectic engine sweeps 1,028 particles across the 3:1 for three million steps each, 3.08 billion particle-steps, on every core you have. In this model, one perturber on a circular orbit at mass ratio 0.001, the measured answer is no. Zero of 1,024 particles crossed the escape threshold in 4,774 perturber orbits, and the chaos profile across the resonance is flat. A particle planted where the model really is chaotic escapes in the same run, which is what makes that zero a measurement rather than a broken detector.

Drag the slider to place a test particle inside or outside the resonance, press launch, and watch sixty-four clones integrate in front of you. The resonant clones librate in a tidy band, their neighbours circulate, everything looks calm, and from this picture the resonance looks like a place that holds things. The interesting question is whether that picture survives 4,774 perturber orbits for each of 1,028 particles, where the orrery above gives 637 orbits to 64 of them, and the honest way to find out is to run it rather than to assert it. The full sweep below starts its particles at e₀ = 0.2, an eccentricity at which the resonance is wide and any pumping should be at its fastest inside the run, and integrates every one of them for 30,000 time units. What comes back is a resonance that is plainly there and plainly not carving: read the escape fractions and the Lyapunov profile below, and then read the two planted controls that say what the same instruments do when there is something to see.

Where to watch · core of the resonance

Presets move the watched clone. They do not change the model: the same mass ratio, step and threshold govern every clone on this page.

eccentricity envelopes, 64 clones ←t = 0 perturber orbits →
resonant angle of the watched clone, wrapped to ±π ←libration is a band, circulation fills the strip →

Watched clone, e now

·

max so far ·

Resonant angle

·

librating = confined band

Simulated time

0

perturber orbits

Clones alive

64

launched at your slider value

The resonance centre sits at a = 0.4807498567691361, which is 3-2/3 in this model's units. A few percent away is already outside the chaotic band.

Keep it short and the orrery lies to you pleasantly. That is the point of the next button.

warm bars: fraction crossed, e ≥ 0.3 (all zero) · green: mean max e, scaled to its own range ←blue: median Lyapunov exponent γ →

Escape fraction, inner band (±0.01)

waiting

the sweep has not run yet

Planted chaotic control

waiting

the same detector, on an object that does leave

Escape fraction, outer bands (0.03 to 0.045)

waiting

the same integrator, the same length

Median crossing time, inner band

waiting

time units, among those that cross

Chaotic band (γ above 0.001)

waiting

where the Lyapunov profile lifts off its floor

The mechanism, named. The critical argument of the 3:1 commensurability is σ = λ − 3λ′ + 2ϖ: the particle's longitude minus three times the perturber's longitude plus twice the longitude of its perihelion. In the frame corotating with the perturber, where λ = θ + t and λ′ = t identically, this reduces exactly to σ = θ + 2ϖ, and that is the form integrated and displayed on this page. (An earlier revision displayed 2ϖ − 3θ, which differs from σ by −4θ and therefore winds four times per orbit for every particle, resonant or not; it carried no libration information.) Deep in a 3:1 resonance σ librates, swinging inside a bounded band instead of winding around the circle. Circulation versus libration is a winding number, so it is unchanged if mean longitudes are used instead of true ones; this page uses the true-longitude form because it needs no Kepler equation. Watch the σ strip under the traces: it is how you can tell a trapped clone from a passing one. Measured offline on the shipped reference over 1,000 time units, σ turns 0.7 and 0.9 times for the two particles planted at ares, 2.8 times for the sweep particle nearest to it, and 73 times for one at the low edge of the sweep: a hundredfold separation in the same instrument. The resonance is unmistakably there. What this page then measures is that being trapped in it, in this model, does not take you anywhere.

Everything below is a stated parameter of this model, chosen for it, not a measurement of the solar system. No figure from the observational literature appears anywhere on this page.

parametervaluemeaning
mass ratio μ0.001perturber over total mass; stated, not surveyed
step h0.01fixed symplectic step, ~209 steps per resonant orbit
steps per particle3,000,00030,000 time units ≈ 4,774 perturber orbits
run length30,000time units
sweep particles1,024across ±4.5% of ares
total particles1,028sweep + 1 circular control + 3 planted
start eccentricity e₀0.2where the 3:1 is widest and any pumping fastest; raised from 0.08, see the note below
threshold e*0.3"escaped" means e crossed this
shadow offset d₀1e-8Benettin renormalisation scale
renorm interval50steps between shadow rescalings
diagnostic interval100steps between eccentricity samples
angle samples32per record, for the fingerprint
ares = 3-2/30.4807498567691361derived, not looked up
sweep low edge0.43574985676913613ares − 0.045
sweep high edge0.5257498567691361ares + 0.045
circular control a0.36measured quiet: forced e ≈ 0.0025 over the whole run; was 0.72, see the note below
chaotic control a0.9measured violent: escapes at t ≈ 29, which is what makes the sweep's zero a measurement
planted start e₀0.2same depth as the sweep, at the resonance centre
planted resonant count2different phases, same orbit; plus the two controls above
decomposition A2574 particles per chunk
decomposition B9711 per chunk, ragged tail
Jacobi drift bound0.005seven times the measured delivery of 7.2e-4; see the note below
chaotic classifier γ0.001annotation only, not load-bearing
inner band half-width0.01max distance from ares for the inner band
outer band low edge0.03min distance from ares for the outer bands
outer band high edge0.045max distance from ares for the outer bands
RK tolerance0.02cross-method agreement, regular orbits
pointwise horizon5,000steps compared pointwise against RK4; worst disagreement 1.9e-3
halving-test length2,000time units for the order check

Four numbers that moved, and why each moved. The diagnostics used to be read off the wrong state. Because the two half-kicks where neighbouring steps meet are fused into one full kick, the pair sitting in the registers between steps is the position at time t with the momentum at t + h/2, and every recorded eccentricity and Jacobi error was computed from that mismatched pair. It cost an order: the recorded Jacobi error was O(h) instead of the map's O(h²), measured 30 to 130 times larger than the map actually delivers, and every recorded eccentricity carried a bias of about 0.02. Undoing the half kick before each diagnostic fixed all four numbers at once. The drift ceiling goes back to 0.005, from the 0.1 it had been restated to: the 1e-2 delivery that justified 0.1 was the unsynchronised reading, and the real delivery over the full run is 7.2e-4. The pointwise cross-method horizon goes back to 5,000 steps from 2,000, because the comparison that was failing at 5,000 was comparing a leapfrog sample held for a hundred steps against a Runge-Kutta sample taken at the step, offset by one sample; sampled properly, the worst disagreement over 5,000 steps is 1.9e-3. The circular control moved from a = 0.72 to a = 0.36: at 0.72 a circular start reaches e ≈ 0.020, which two independent integrators agree on, so it is dynamics rather than artefact, but a control that pumps twice its own ceiling is not a control. At 0.36 the same measurement gives 0.0025. And the planted resonant starts are now asked for max e ≥ 0.23 rather than 0.25, because 0.25 was only ever reached through the 0.02 bias; read at the synchronised state the same two orbits deliver 0.2388 and 0.2356, and Runge-Kutta puts the second at 0.2355.

The check · run in front of you, and the one that runs offline

Before any headline is shown, the page runs a five-row battery through both the compiled engine and a slow, deliberately obvious JavaScript reference written from the same contract, and refuses to display a result if a single fingerprint disagrees. The full sweep then runs twice, under two different chunk decompositions, and all 1,028 per-particle records must come back byte-identical. The full-size number rests on that decomposition check and on the conservation invariants below. A 20-particle subset is also cross-checked against an independent Runge-Kutta integrator: four particles here, the full subset offline in research/the-gap-that-carves-itself/verify-the-gap-that-carves-itself.mjs.

battery rowengine fingerprintreference fingerprintagree
loading engine…

The control. A check that has never failed is a claim about the code, not evidence about it. This button breaks the reference's mass ratio by one part in a thousand and requires the comparison to notice:

control not yet run
decomposition check: waiting for the sweep
Jacobi drift: waiting for the sweep
step-halving order check: waiting
planted circular control: waiting for the sweep
planted chaotic control: waiting for the sweep
planted deep-resonance starts: waiting for the sweep
the measured result: waiting for the sweep
resonance location: waiting for the sweep
Lyapunov profile: waiting for the sweep
cross-method subset (RK4): waiting
engine hash: waiting for fetch
What none of this rules out. Two decompositions agreeing rules out a chunk-boundary bug and very little else, because every particle is integrated by the same code either way. The battery proves the two implementations agree with each other, not that either one encodes the celestial mechanics a specialist would endorse. A null result is the easiest thing in the world to get wrong, which is why there is a planted chaotic object in the same run and a planted quiet one: without them the zero above would be indistinguishable from a detector that never fires. What the controls cannot rule out is a slower effect. Thirty thousand time units is 4,774 perturber orbits, and an escape route that needs a hundred times that would leave exactly this trace. The honest form of the result is bounded in time, and it is stated that way. And nothing on this page measures the real asteroid belt: one perturber, on a circle, no secular resonances, no drifting supply.

Operations (counted, not estimated)

·

particle-steps reported by the engine's own counter

Wall time

·

sweep not started

Workers

·

·

Factor vs main-thread JS

·

extrapolated from a slice; fraction printed beside it

What's idealised here, and what's exactly true

Exactly true. The integrator splits the exact synodic Hamiltonian H = |p|²/2 − (q×p)z − Φ(q) into a Kepler part and a rotation part; the rotation is solved exactly and the Kepler part by leapfrog, so the composed map is exactly symplectic and second order. In these canonical variables the Jacobi constant is exactly −2H, so its error is bounded rather than drifting, and the page prints the measured value against a stated ceiling. Because the meeting half-kicks are fused, every diagnostic subtracts the half kick before it reads the momentum: the pair in the registers between steps is the position at t with the momentum at t + h/2, and reading it raw makes the recorded error O(h) on a map that delivers O(h²). The resonant angle displayed is the exact corotating-frame reduction of λ − 3λ′ + 2ϖ. The decomposition check is bitwise: each particle is independent and deterministic, so any chunking must reproduce every record exactly, and does. The engine and the reference agree bit for bit on the battery because both implement one stated contract down to the operation order, polynomials included.

Idealised. Planar motion; a perturber on a fixed circle; massless particles; one mass ratio; no secular resonances; no surface density of bodies drifting inward; starts placed at perihelion of an osculating heliocentric orbit, ignoring the Sun's reflex motion, an error of order μ in the start state only; the resonant angle in its true-longitude form; a finite-time Benettin estimator whose regular-orbit floor sits near 10⁻⁴.

Representative, not universal. The escape fractions, the eccentricity profile and the Lyapunov medians are properties of these stated parameters and of this run length. In particular the null result here is a result about a perturber on a circular orbit. The received account of the real 3:1, opened in the 1980s, turns on the perturber's own eccentricity, which supplies a second slowly varying angle that a circular perturber does not have; a one-degree-of-freedom averaged resonance cannot be chaotic, and that is the standard explanation for what this page measures. This page does not verify that explanation. It measures the circular case, states the result, and shows the controls. No number from that literature is quoted here, because none is needed to run the model.