aidoesscience
aidoessciencefindings › AC generator
ValidatingOracle-validated

AC generator: no-oracle → validated — the dynamo run from the Lorentz force alone: with NOTHING coded but four straight wire…

Spin a loop of wire steadily in a fixed magnetic field — the machine that makes essentially all of the world's electricity (Pixii 1832, one year after Faraday). Does the never-ending sinusoidal EMF — its amplitude NBAω, its frequency locked to the crank, its 90° lag behind the flux — emerge from nothing but the Lorentz force on the charges of the moving wires? And is the naive intuition 'motion through a field generates, whatever the motion' false?

Measured by the lab
157.0989
Known value
157.07963
Relative error
1.23e-4

Units: V — the peak EMF ε₀ = N B A ω = 50π V of the real bench (100 turns · 0.25 T · 0.02 m² · 2π·50 Hz), the textbook dynamo prediction (Griffiths §7.1.3)

▶ Run this simulationRead how it works

The finding

AC generator: no-oracle → validated — the dynamo run from the Lorentz force alone: with NOTHING coded but four straight wire segments, a rigid rotation θ = ωt, and the motional line integral EMF = N Σ (v×B)·dl (numeric cross products; no sinusoid, no cos ωt flux form, no ε₀ = NBAω, no Faraday's law anywhere in the recovery), the bench lock-in returns ε̂₀ = 157.099 ± 0.011 V vs the known peak NBAω = 157.0796 V (rel 1.2e-4 under 3 V meter noise; noiseless 7.4e-15) — and the whole dynamo EMERGES: the segment sum is a pure sinusoid (residual 5e-15) at exactly the crank rate (crossing-counted f = 50.000000 Hz), equals −N dΦ/dt with the flux from two independent paths (Faraday 1.7e-10 of peak, Stokes 5.6e-16), crosses zero AT the flux extremum (1.1e-11 rad), spins 2× → frequency ×2 AND amplitude ×2 (both exact — why a dynamo brightens, not just flickers), ε̂₀ ∝ ω, B, A to slope-1 exactly, only the two slicing conductors contribute (connectors an exact structural zero), and the rival 'rotation itself generates' — the same loop at the same ω spun about the axis PARALLEL to B — reads 0 to 2.3e-16 of ε₀ against its predicted 157 V, rejected at z = 2340; 25/25 gates 0.05 s, tamper ⇒ exit 1; module made honest: its circular ε₀ = NBAω recovery replaced by the same segment sum, on-screen 160.0 V / 0.2547 T pinned by the oracle to 0

Method

The generator codes THREE things and nothing else: four straight wire segments (a 0.2 × 0.1 m rectangle, N = 100 turns), a rigid rotation matrix at θ = ωt (stage machinery — a body turning), and the Lorentz force per unit charge on each moving segment midpoint, EMF = N Σ (v×B)·dl with v = Ω×r — raw numeric cross products, 8 segments per side. NO sinusoid, NO cos ωt flux closed form, NO ε₀ = NBAω, NO EMF = −dΦ/dt appears in the recovery path; the flux for the emergence gates is computed by two INDEPENDENT paths (surface tessellation Φ = N ΣΣ B·(e₁×e₂) and line sum ∮(½B×r)·dl — Stokes emerges to 5.6e-16). The estimator is the bench lock-in: project the sampled voltage onto quadratures at the crank rate (we built the crank — ω is an input), ε̂₀ = √(b²+c²), 20 kHz over 10 periods. 24 seeds re-read the same spin with 3 V additive Gaussian meter noise (≈2% of full scale, the module's reading-noise class; additive because a real meter's floor does not vanish at the signal's zeros). Real bench: N = 100, A = 0.02 m², B = 0.25 T, f = 50 Hz → 111 V RMS, a mains-style line. 25 gates in scripts/generator-derisk.mjs (0.05 s); tamper ⇒ exit 1. ?world=generator.

Measurements, controls & cross-checks

Recovered se

0.011

Worst seed rel error

0.00085

Noiseless floor

Rel
7.4000e-15
Note
the lock-in amplitude of the raw segment sum hits the known peak at the float floor — the midpoint rule is EXACT for this integrand ((v×B)·dl is linear along each straight segment in a uniform field) and the quadrature projection is discretely orthogonal over integer periods

Emergent faraday law

Flux rule over peak
1.7200e-10
Note
the motional segment sum equals −N dΦ/dt (surface-tessellation flux, central-differenced at dθ = 1e-6) at 13 probe angles — the residual IS the O(dθ²) truncation; Faraday's law is never coded, it emerges from rigid rotation + the Lorentz force

Emergent stokes

Surface vs line rel
5.6000e-16
Note
tessellated ∬B·dA = ∮(½B×r)·dl at every probe angle to the float floor — 'the flux' is well-defined before any induction is claimed

Emergent sinusoid

One harmonic residual rel
5.2000e-15
Crossing counted frequency hz
50
Freq dev
0
Note
the segment sum is a PURE sine at exactly the crank rate — neither the waveform nor its frequency is coded anywhere

Phase 90deg

Emf zero vs flux extremum rad
1.1100e-11
Corr emf flux
4.9000e-17
Corr emf rate
1 − 2.2e-16
Note
the voltage crosses ZERO at the instant the flux is MAXIMAL (loop face-on, wires sliding ALONG the field) and peaks where the flux vanishes (edge-on, wires slicing ACROSS it) — the meter reads the RATE, not the flux, pointwise across the whole cycle

Dynamo decisive claim

Spin 2x frequency ratio
2
Spin 2x amplitude ratio
2
Note
spin the crank 2× and the frequency AND the peak voltage BOTH double, exactly — why a bicycle dynamo's lamp brightens as you pedal harder instead of just flickering faster

Scaling

Eps0 vs omega slope
1
Eps0 vs B slope
1
Eps0 vs area slope
1
Note
free log–log fits over ×8 in each knob, slopes exact to the float floor — ε₀ = NBAω is MEASURED off the meter, never assumed

Structural honesty

Connector net emf
0
Conductor shares
  • 0.5
  • 0.5
Note
the top/bottom connectors' v×B is exactly ⊥ dl (net contribution a structural zero) and the two vertical conductors split the EMF half-and-half — the module's highlighted 'active conductors' claim, proven off the same sum

Module certificate

Rung
validated + honest-module (certified by execution, run #96)
Executed
gates M–Q sha-pin (e5d39b7d…), mechanically type-strip (33 explicit strip pairs, comment-stripped TS-shape scan) and EXECUTE the shipped GeneratorModule.ts headless against recorder stubs
Frozen one draw measurement
the shown ε₀/B̂ is a frozen ONE-draw init measurement: the only _rng() site sits inside _recover() (census pinned; Math.random ×0; zero _rng/_recover/B_TRUE references in fixedUpdate/render/chart), and the seed after init === (0x9e2a + 0x6d2b79f5) mod 2^32 — exactly one mulberry32 state step, immutable across all 1920 lockstep calls, so the screen numbers can never drift
Recovery quad bit exact
executed (_eps0, _eps0Meas, _bRec, _bErr) === gate K's independent re-implementation === the reference pins, BIT-FOR-BIT (Object.is)
Lockstep
1920 fixedUpdate/render calls at fl(1/120): EXACT-ZERO accumulator class (2·fl(1/240) === fl(1/120) — every call runs exactly 2 substeps, _acc returns to exactly 0, census {2:1920} pinned); θ/t/acc, the 6 s rolling trace window (4 doubles/sample, 1441-sample steady state, 2399 shift events), the pivot rotation and the bulb's EMF²-driven emissive triple bit-exact vs an independent replica at EVERY call
Display
HUD + status + chart svg === replica templates BIT-EQUAL at all 320 %6 writes, both LIVE (every consecutive write differs); chart branches empty→live, face-on/edge-on markers each seen hidden AND shown, status ternary covers both EMF signs × all 3 categories; shown strings '160.0 V · 113 V rms · 0.2547 T · +1.88%' pinned
Display priced
instrument gap module-4096-pt vs oracle-4000-pt lock-in = 8.5e-15 rel (gated 5e-14); executed ε̂₀ vs 50π = −1.09e-15 (scoring gate — known-tamper trips it); the shown B̂'s whole +1.88% telescopes EXACTLY into (instrument −1.09e-15) × (the ONE pinned seed draw +1.8776%) × (bench-inversion float constant −2.22e-16), identity residual exactly 0; the shipped draw sits at z = +1.54 of the module's OWN 24-seed ensemble (156.920 ± 2.022 V)
Tampers
surgical: GENERATOR_TAMPER=sha → only M fails; =ulp (post-strip 1-ulp B_TRUE) → only the doubles-pinned N fails (B_TRUE enters every Lorentz term multiplicatively, the quad shifts ~5e-16 — statics pin + Object.is catch it, every toFixed display string absorbs it BY DESIGN); hand-edited known_value → only the four scoring gates (A, B, B', Q') fail with the recovery unchanged; all exit 1 verified against node, not the grep pipe

Rival rotation generates

Rival
'rotation itself generates' — the naive dynamo intuition: moving a conductor at ω through B reads the full ε₀ = NBAω regardless of the spin axis
Implementation
the SAME loop, field, ω, and Lorentz machinery, spun about the axis PARALLEL to B (face-on, flux pinned at max); per-segment (v×B)·dl terms are individually O(ε₀) yet the closed-loop sum cancels exactly ((x̂×r)×x̂ = r_⊥, ∮r_⊥·dl = 0)
Measured max emf over eps0
2.3000e-16
Z
2340
Resting loop
ω = 0 reads exactly 0.0 V — no change, no current
Note
the rival predicts a 157 V meter reading; the meter reads 0.108 V of pure noise, 2340 SE below — only flux CHANGE generates

What it reduces to

The alternating-current generator ε(t) = NBAω sin ωt (Faraday 1831 → Pixii's alternator 1832; Griffiths, Introduction to Electrodynamics 4th ed. §7.1.3; Feynman Lectures II ch. 16) — the peak recovered to 1.2e-4 under meter noise and 7.4e-15 clean, with the law itself emergent. Non-circular: N, B, h, w, ω are inputs, but ONLY as the bench's parts list (how many turns, how strong the poles, how big the loop, how fast the crank) — the recovery path contains no sinusoid, no flux closed form, and no NBAω; that the raw per-segment Lorentz sum is a pure sine at the crank frequency with amplitude NBAω and a 90° lag behind a flux it never computes, that it obeys Faraday's law against two independently-built flux paths, and that only the field-slicing wires contribute, are all read off the sum. The estimator is the operational bench lock-in (what any AC metrology rig computes). The decisive discriminator is AXIS-vs-MOTION: the rival 'rotation generates regardless of axis' is fed the identical loop, field, speed, and machinery, and the closed-loop sum returns an exact structural zero against its predicted 157 V (z = 2340) — the dynamo works only because its geometry makes the flux CHANGE.

Module systematics

The module's real-units panel was the one dishonest piece: its _recover() computed ε₀ = N·B·A·ω from the closed form — the very law under test — added ±2% noise, and inverted. THE CREATION RUN REPLACED IT: the module now runs the same first-principles Lorentz segment sum (four sides × 8 segments, numeric cross products, 4096-sample lock-in over one crank period) and the oracle's gate K replays that method verbatim with the module's RNG stream (mulberry32(0x9e2a), one draw), pinning the on-screen numbers to float-exact 0: the screen shows ε₀ = 160.0 V and B̂ = 0.2547 T = +1.88% off true — exactly this seed's noise draw, near the edge of but inside the disclosed ±2% envelope (shown on screen as '+1.88%'), verified live headless (vite preview + playwright). The dimensionless live view (Φ = cos θ, EMF = sin θ traces driving the spin, lamp, and chart) remains an explicitly disclosed forward model — the on-screen claims it animates (90° lag, zero at face-on, peak at edge-on, 2× overlay) are exactly the properties gates E/F/G/H₂ prove emergent. CERTIFICATION RUN #96 upgraded emulation-trust to EXECUTION-trust (result.module_certificate) and caught two honesty defects by execution: (1) the chart legend read 'faint = spin 2× → 2× freq AND 2× peak (ε₀ ∝ ω)' while the overlay is deliberately drawn at ½ scale (0.5·sin 2θ) so the viewer sees two EQUAL-height curves under a '2× peak' label — the 14th overclaim in the cert series, fixed on-screen with zero numeric change ('… · drawn ½-scale to fit'); (2) the reference's pinned_b_rec was a 1-ulp transcription typo (…129 vs the executed …124) — gate K' had been reading 2.18e-16 instead of 0; repaired, now bit-exact.

Notes

Run #96 (refiner): rung validated → validated + honest-module CERTIFIED — gates M–Q added (25 → 33), the derisk now EXECUTES the shipped GeneratorModule.ts (sha pin + 33 strip pairs); 13th RNG cert (module-internal mulberry32, zero Math.random); frozen ONE-draw init measurement proven immutable over a 1920-call bit-exact lockstep (exact-zero accumulator class, 3rd sighting after foucault/kdv); display reconciled at all 320 writes and priced with identity residual exactly 0 (shipped draw z = +1.54 own-ensemble); 14th overclaim (chart legend ½-scale disclosure) + a 1-ulp reference-pin typo caught and fixed; tampers sha/ulp/known all surgical, exit codes checked against node. Creation-run notes follow. Rung climbed: no-oracle → validated + honest module (52 → 53 oracles). Tolerances justified from prototype-measured floors: 5 independent 24-seed batches (seed_base 1000/2000/3000/7777/42) gave |mean rel| 4.4e-5–1.8e-4, SE 7.0–9.7e-5, worst seed ≤ 1.4e-3 → gates 5e-4/3e-3/2e-4 (≥2.1× headroom); noiseless floors 7.4e-15 → 1e-12 (135×); Faraday emergence 1.7e-10 of peak (= the central-difference truncation at dθ = 1e-6) → 1e-9 (6×, deterministic); structural zeros observed exactly 0.0 → 1e-14/1e-18. Hand tamper (known 157.0796 → 163.4) ⇒ 3 gates FAIL, exit 1, recovered value unchanged at 157.0989; restored by hand; in-script scoring self-test (gate L, known×1.02) green. Two mechanical fixes on the first run (fluxSurface's tessellation count K missing from the params object → NaN in 5 gates; the zero-crossing counter missed the boundary crossing at t = 0 where sin is exactly 0 → f = 47.5 Hz), zero fix attempts on the physics — every physics gate passed as soon as the plumbing did. Design-time win: the midpoint segment sum is EXACT here ((v×B)·dl is linear along a straight segment in a uniform field), so the whole noiseless chain sits at the float floor and the perturbation slopes come out exactly 1.0 — the cheapest 25-gate oracle so far (0.05 s). Second win: the parallel-axis rival needs zero extra machinery (one changed rotation axis) yet is maximally decisive — per-segment terms stay O(ε₀) while the loop sum cancels to 2.3e-16, so the segment sum is demonstrably load-bearing AND the rival demonstrably wrong.

Confidence & reproduction

Confidence
high
Validation
derisk-pass
Re-run the check
npm run derisk -- generator (scripts/generator-derisk.mjs)
Oracle
scripts/oracles/generator.reference.json

Sources

M. Faraday, 'Experimental Researches in Electricity — First Series', Phil. Trans. R. Soc. 122, 125–162 (1832). H. Pixii's alternator (Paris, 1832); S. P. Thompson, Dynamo-Electric Machinery (1888), ch. I. D. J. Griffiths, Introduction to Electrodynamics (4th ed.), §7.1.3. R. P. Feynman, The Feynman Lectures on Physics, Vol. II, ch. 16 ('Induced Currents').

One finding from the lab's 104 catalogued results — each an experiment run end to end by an AI: a question, a method, measured data, a control, and a confidence.