diff --git a/AGENTS.md b/AGENTS.md index 9e80b70..13f8dd8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -63,7 +63,14 @@ presentation`) plus -game-valued heating/overheating/Norton operators (infrastructure for `under`, not -the associated-graded product theorem), the source-pinned (OEIS A380496) ordinal +game-valued heating/overheating/Norton operators and the proved positive-numeric-unit +regrading `gr_τ -> gr_{uτ+u-δ}`. The completed `under` theorem proves that the +game and place consumers are two tropical objects: `gr_0`'s nonzero `[*]` +2-torsion forbids a lift-compatible action by any full dyadic object +(ordinary or graded initial-form), and the exact nonnegative +Norton composition defect forbids a multiplicative dyadic action even after +any temperature-preserving residue refinement. The source-pinned (OEIS A380496) ordinal nim Kummer tower below `ω^(ω^ω)`, the characteristic-2 Artin-Schreier local-global layer over `F_{2^m}(t)` including the Aravire-Jacob wild summand, and the integral lattice/genus/mass/Leech/Niemeier/theta/code/Weil chain. These are diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index df65cb4..2faff70 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,11 +68,11 @@ asserted. ## Releasing The version in `Cargo.toml` is the single source of truth (pyproject and the -maturin build inherit it). The release workflow is **dormant** while the version is -`0.0.0`; bumping it arms the pipeline, which on the next push to `main` publishes to -crates.io and PyPI (both via OIDC trusted publishing), tags `vX.Y.Z`, and cuts a -GitHub release. Each target is checked independently, so a partial-failure run -resumes cleanly. +maturin build inherit it). On a push to `main` carrying a new version, the release +workflow publishes to crates.io and PyPI (both via OIDC trusted publishing), tags +`vX.Y.Z`, and cuts a GitHub release. Each target is checked independently, so a +partial-failure run resumes cleanly. The unpublished `grundy/` workspace member +(`publish = false`) is deliberately outside the pipeline. ## License diff --git a/Cargo.lock b/Cargo.lock index 04dbef4..4fc544b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -193,7 +193,7 @@ dependencies = [ [[package]] name = "ogdoad" -version = "1.0.0" +version = "1.0.1" dependencies = [ "proptest", "pyo3", diff --git a/Cargo.toml b/Cargo.toml index a16c022..1bd9fc5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["grundy"] [package] name = "ogdoad" -version = "1.0.0" +version = "1.0.1" edition = "2021" description = "Clifford algebras (with nilpotents) over the field-like subclasses of combinatorial games: nimbers, surreals, surcomplex." license = "AGPL-3.0-or-later" diff --git a/README.md b/README.md index 999839b..84ea10f 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,23 @@ [![docs.rs](https://img.shields.io/docsrs/ogdoad)](https://docs.rs/ogdoad) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) -The **Ogdoad** were eight Egyptian gods of the primordial waters, arranged in four -pairs — the world before there was a world. This `ogdoad` keeps a smaller pantheon: -eight number-systems, also in four pairs, also a little primordial. Surreals and -omnific integers; p-adics and Witt vectors; rational functions and polynomials; and -the plain old rationals and integers. Each pair is a **field beside its ring of -integers**. Off to one side sit the finite fields and the nimbers, who are their own -rings of integers and answer to no one. Eight, plus the loners. - -The conceit is that these exotic worlds are not a curiosity cabinet. They are **cells -of one table**, and the number eight is not an accident: read the table one way and -you get Clifford algebras, read it the other way and you get the classification of -quadratic forms, and the *same* structures keep surfacing cell after cell with the -characteristic and the place politely swapped. The eightfold periodicity of the real -Clifford table, `BW(ℝ) ≅ ℤ/8`, Bott, `E₈` — it is all one spine, and the code is laid -out to make the rhyming visible. +Clifford algebras — **with nilpotents**: the quadratic form may be degenerate +(`q[i] = 0` ⇒ `eᵢ² = 0`; all-zero `q` is the exterior algebra) — over the +commutative scalar worlds adjacent to Conway's combinatorial games. A pure Rust +engine, generic over a `Scalar` trait, whose backends are the nimbers, the +surreals and surcomplex numbers, and a bench of comparison worlds: p-adics and +Witt vectors, Laurent series, finite fields, the exact global function field +`F_q(t)`, and the plain rationals and integers. On top sit a quadratic-forms +classification layer across the characteristic trichotomy, an integral-lattice +wing, a combinatorial-games pillar, and per-backend Python bindings. + +The claim behind the collection is that these worlds are not a curiosity +cabinet. They are **cells of one table**: read the table one way and you get +Clifford algebras, read it the other way and you get the classification of +quadratic forms, and the *same* structures keep surfacing cell after cell with +the characteristic and the place politely swapped. The eightfold periodicity of +the real Clifford table, `BW(ℝ) ≅ ℤ/8`, Bott, `E₈` — it is all one spine, and +the code is laid out to make the rhyming visible. One honest caveat up front, because it shaped everything. Conway's games, under disjunctive sum, form an abelian **group but not a ring**: you can add games freely, @@ -40,7 +42,7 @@ Every backend is a cell in a table with two axes: is how `src/forms/` is grouped. The axes are independent. The place axis is what pairs each **field** with its **ring -of integers** — the four pairs of the Ogdoad: +of integers** — four such pairs, plus the finite worlds that are their own: | | field | ring of integers | | --- | --- | --- | @@ -291,17 +293,21 @@ one place a traveller may wander in circles. Closing the tour now wants a *third* Scalar–Clifford span — bridges C and D are the two it already has. None of the pending threads supplies one: **`*2` (S–I)**, the -Drinfeld/Carlitz mirror, would even Scalar but tip the Integral wing odd in turn; `*1` -(the spinor genus), `*4` (the wild local symbol), and `under` (a constructive -thermography ↔ Newton-polygon bridge) each matter on their own terms but land elsewhere -on the map. The round trip stays open — and the obstruction has simply walked from the -Integral shore to the Clifford one. - -## The research thread - -The narrow mathematical thread in `docs/OPEN.md` and `writeups/goldarf.tex` is *not* a -claim of a new Clifford classification theorem. It is an investigation of game-built -quadratic forms in the nimber backend: +Drinfeld/Carlitz mirror, would even Scalar but tip the Integral wing odd in turn; +`*1` (the spinor genus) and `*4` (the wild local symbol) matter on their own terms +but land elsewhere. `under` is closed rather than pending: the game filtration has +genuine numeric filtered transports, but its `[*]` 2-torsion and the exact Norton +composition defect prove that it cannot carry the place axis's full dyadic +coefficient object, even in graded initial-form form. It likewise lands elsewhere +on the map. The round trip stays open — +and the obstruction has simply walked from the Integral shore to the Clifford one. + +## The research threads + +The genuine open problems live in `docs/OPEN.md`, each named by a **loopy game +value** — an open problem is a game played without a termination guarantee. The +flagship, `tis`, is *not* a claim of a new Clifford classification theorem. It is +an investigation of game-built quadratic forms in the nimber backend: 1. Turning-Corners games realize nim multiplication. 2. Frobenius squaring and traces are built from nim multiplication and XOR. @@ -309,9 +315,48 @@ quadratic forms in the nimber backend: operations. 4. The Arf invariant gives the standard zero-count bias for a quadratic zero set. 5. **The open question:** is there a natural, non-tautological game rule whose - P-positions are exactly such a zero set? Current probes span normal play, misère - quotient, interactive (`kernel`), loopy (Draw-set), and bent-form searches; they - narrow the target but do not hit it. + P-positions are exactly such a zero set? + +The current frontier (`writeups/goldarf.tex`): the linear case is both floor and +ceiling — lexicodes show natural rules realize rich *linear* codes as P-sets, +and Theorem A shows every Winning Ways coin-turning P-set is the kernel of an +`F₂`-linear map — so `tis` asks precisely whether that phenomenon admits a +quadratic refinement. A no-go ladder kills the frame-blind tier (`Sp(B)`-invariant +rules see only orbit unions) and shows the known normal-play realizers are +clocks. The one verified positive object is **σ-valued**: the echo-fifo+dummy +realizer computes `Q` as a forced terminal charge, checked exhaustively at +`m = 8` (391,680/391,680, adversarial review), and its mechanism reduces to an +**odd-close parity game** whose isolated-coin linking theorem is machine-verified +on all 12,346 graph classes through `k = 8`. The two load-bearing open steps: +recast that charge readout into normal/misère/loopy outcome semantics, and prove +the general-`m` linking theorem. + +The rest of the board, briefly: + +- **`tisn`** — a game-native quadratic deformation of the game exterior algebra. + The torsion obstruction is now a theorem (integer-valued deformations are blind + to torsion: `2* = 0` forces `Q(*)` and all pairings with `*` to zero), and the + surviving escapes are tautological or off-core; what is missing is a + **directed/noncommutative** coefficient source whose squaring remembers the + first-/second-player asymmetry — the same obstruction `tis` hit in misère form. +- **`on`** — transfinite nim multiplication beyond the verified excess table. + Conway's Kummer carry below `ω^(ω^ω)` is `α_p = κ_{f(p)} + m_p` with `m_p` + Lenstra's finite excess; every source-pinned row obeys an unproved `0/1/4` + rule, and `writeups/excess.tex` reduces that rule *exactly* to four universal + order statements — the zero, ordinary-odd-spine, cubic, and exceptional arms. + The next unsupported carry is `α₇₁₉`. +- **`off`** — what, if anything, replaces the finite Arf/Brauer–Wall bit for + Clifford metrics with genuinely transfinite ordinal-nimber coefficients, where + no finite trace to `F₂` exists. +- **`over`** — whether the Brown `ℤ/8` invariant has a game reading the way the + Arf bit does: a natural *four*-class outcome census whose Gauss-sum phase is + `ζ₈^β`, lifting the two-class win-bias from `ℤ/2` to `ℤ/8`. +- **`under`** — *resolved 2026-07-20*: thermography and the Newton-polygon stack + are **two** tropical objects. Temperature is an honest tropical valuation and + every positive dyadic Norton unit `u = m/2^k` transports the temperature + filtration exactly (`gr_τ → gr_{uτ+u−δ}`), but `gr₀`'s `[*]` 2-torsion and the + exact Norton composition defect forbid any faithful dyadic-unital graded ring + (`writeups/thermo_newton.tex`). If you want to play along, the open-problem examples (`interactive_kernel`, `octal_hunt`, `loopy_quadric`, `misere_quotient`, `bent_route`) are the doors in. diff --git a/demo.py b/demo.py index c8341ea..e2d3342 100644 --- a/demo.py +++ b/demo.py @@ -580,6 +580,16 @@ def same_thermograph(a, b): norton = hot.norton_multiply(pl.Game.integer(2)) print(" heat by 2 / Norton by 2 :", heated.temperature(), heated.mean_value(), norton.mean_value(), norton.canonical_string()) +u = pl.Game.integer(2) +scale, shift = u.numeric_norton_regrade() +pred_mean, pred_temp = hot.numeric_norton_mean_temperature(u) +print(" numeric Norton descent u=2 :", f"regrade (scale,shift)=({scale},{shift})", + f" predicted (mean,temp)=({pred_mean},{pred_temp})", + " matches product:", (str(pred_mean), str(pred_temp)) == + (str(norton.mean_value()), str(norton.temperature()))) +over = hot.overheat(u, pl.Game.integer(1)) +print(" overheat ∫_2^1 = Norton·2 :", over == norton, + " temp:", over.temperature()) section("surreal sign-expansion & floor (the omnific bridge)") print(" sign expansion of 3/4 :", pl.Surreal.from_rational(3, 4).sign_expansion(), " (+ − +)") diff --git a/docs/CONSISTENCY.md b/docs/CONSISTENCY.md index b1fe544..25553f8 100644 --- a/docs/CONSISTENCY.md +++ b/docs/CONSISTENCY.md @@ -75,9 +75,46 @@ Recorded so the next auditor inherits the truth, not the first read: `smallest_prime_factor` is a different shape — early-exit smallest factor, not a factor list). +## Recorded 2026-07-30 — the polynomial altitude question (discussion, not audit) + +Prompted by "should polynomials be exposed publicly / unified into a pillar?" +Answered in discussion and recorded here so it isn't re-litigated: + +- **No polynomial pillar, no preemptive public factorization.** Pillars are + domains, not representations; `Poly` is already public at its correct altitude + (a place-table row — `F_q[t]` beside `F_q(t)` — with `Scalar` + + `HasFractionField`, py bindings, and the grundy `fp2[t]`/`fp2(t)` worlds). The + one private polynomial *capability* is `forms/poly_factor.rs`, and 1.0.0 makes + every export a semver commitment. The trigger for exposing it: the first + consumer that can't reach `pub(crate)` — realistically the Python experiments + tier or a grundy `factor` word (nothing on the 0.3.7/0.3.8 ladder demands one). + When it fires, export the small honest surface (monic irreducible support), + keep the Cantor–Zassenhaus internals private. +- **The pillar line, named**: operations *valued in* `Poly` (divrem, gcd, + factor) are ring arithmetic → `scalar/`; structures *indexed by places* + (residue forms, Hilbert symbols, reciprocity) → `forms/`. This sharpens + scalar/AGENTS.md's "per-place residues live at the forms layer" without + contradicting it: factorization takes a polynomial and returns polynomials, so + it sits on the scalar side, and its current `forms/` home is consumer-driven + placement (three call sites: the char-2 façade plus the two + `local_global/function_field*` layers). +- **`Fpn`'s `[u128; N]` arithmetic is NOT latent `Poly` duplication** — the same + refusal as `cnf.rs` (shared function, not shared type): quotient-ring elements + with `Copy` and a static modulus on the hot finite-field path vs free-ring + `Vec` elements. Folding them buys allocation in `F_{p^N}` mul and a false + identity. A cleanup pass that "unifies" these destroys a deliberate boundary. +- **`divrem`'s panic contract is fine until grundy consumes it.** The field-base + assumption is documented where it lives; the crate pattern once the language + becomes a consumer is a checked sibling (`Integer::div_exact` precedent). + Recorded, not pre-built. + ## ups — still open (worth less than any number, strictly positive) - **↑·(e_s∧e_i): `ordinal-factor-fold`** — the two ordinal-local helpers above. +- **↑·(e_s∧e_f): `poly-factor-altitude`** — move `forms/poly_factor.rs` beside + `scalar/poly.rs` per the pillar line above; three call sites, stays + `pub(crate)`. Rides with the next structural pass, not worth a dedicated + commit. - **`display-policy` — PLAYED 2026-07-02.** a9 made it policy: **every classifier report renders.** All 34 remaining glossary record types (the suffix net over `…Invariants`/`…Decomp`/`…Class`/`…Record`/`…Isotropy`/certificates plus diff --git a/docs/CONTINUATIONS.md b/docs/CONTINUATIONS.md index f0739d9..adf167c 100644 --- a/docs/CONTINUATIONS.md +++ b/docs/CONTINUATIONS.md @@ -86,7 +86,12 @@ reversal (transcript-first), `examples/grundy/*.og` gallery, the writeup argument, the honest CGSuite comparison), corpus split thematically + `stage_*` tests renamed by law; **name finalization** (the 2026-07-15 ogham→grundy rename is provisional — confirm the name and the crate-slot -question). Final full-surface pass gates the release. +question). Theory citation for the loopy envelope: Honsell–Lenisa 2011 +(loopy Conway games as a final coalgebra) — the stance note +(`grundy/docs/stance.md`, 2026-07-19) pins the data/codata reading of the +shipped constructs; whether spec §1 states the coalgebraic identity out +loud is a release-dress decision beside name finalization. Final +full-surface pass gates the release. ### `grundy-0.4.0` — **the public release** (after 0.3.8's gate; not a feature rung). Package/version alignment, publish decision execution. @@ -99,7 +104,13 @@ earns it through **one symmetric map/fold story over the three container shapes** (fixed/graded/free — the 0.3.6 container totality made this a three-world question, a better one than the two-world sketch). Mutual *function* `=:` groups land here (Function representation changes anyway; -Element systems shipped at 0.3.6). Whatever the release soak surfaces +Element systems shipped at 0.3.6). **Productive streams** are the codata +face of this rung (`grundy/docs/stance.md`): `ω = {0, 1, 2, … |}` +genetically has a non-periodic option stream — no finite cyclic +presentation exists — so a generator is a function, and lazy transfinites +arrive with higher-order rather than as a separate tack; the +Escardó–Oliva selection monad is the strategy-shaped star to steer by. +Whatever the release soak surfaces joins the docket. Value proposed at `4·e_o`; a9 to re-value. --- diff --git a/docs/CORRECTNESS.md b/docs/CORRECTNESS.md index 0037609..0783678 100644 --- a/docs/CORRECTNESS.md +++ b/docs/CORRECTNESS.md @@ -32,6 +32,38 @@ comment-only transcription swap, fixed). Post-sweep baseline: **968 lib tests** archived play record is [`DONE.md`](DONE.md) → `revision-sweep-2026-07-02`; residuals and standing switches below are what remains *of this ledger's scope*. +### Addendum — `under` separation theorem, 2026-07-20 + +The positive-dyadic Norton regrading is a proved result, not merely a bounded +pattern: for `u=m/2^k`, `a=u-2^-k` (or `u-1` for an integer), nonnumeric finite +thermographs satisfy `mean(G.u)=u mean(G)` and +`temp(G.u)=u temp(G)+a`, and numeric inputs land strictly below `a`. +The proof in `writeups/thermo_newton.tex` was adversarially reread; that pass +caught and removed the false shortcut “numeric differences remain numeric,” +supplied the load-bearing numeric-image lemma, and isolated the +temperature-zero no-premature-meeting argument. + +The final separation is also proved, under an explicit full-dyadic, +lift-compatible coefficient contract. First, `gr_0` retains the nonzero class +`[*]`; a homogeneous coefficient representing 2 sends it to the initial class +of `*+*=0`, while the full dyadic coefficient object also supplies the inverse +representing `1/2`, forcing a contradiction. This covers ordinary +`ℤ[1/2]`-algebras and graded initial-form/Rees coefficients without falsely +claiming that a valued field embeds additively in its associated graded. Second, +the numeric Norton degree maps have the exact nonnegative composition defect +`Δ(u,v)=v(1-δ_u)-δ_v+δ_(uv)`; `u=1/2`, `v=2` gives exact degree mismatch `1`, so +no temperature-preserving residue refinement makes them a multiplicative action. + +Machine verification is supporting rather than a formal proof: exact Rust +checks cover the complete 22-value day-two census, a bounded day-three +singleton-option census, dedicated numeric images, quotient representatives, +matching Berlekamp overheating, and five materialized composition defects. The +Python binding probe adds 210 thermic and 48 quotient/operator checks plus 2,304 +positive-dyadic pairs for defect nonnegativity and the exact zero classification. +The surviving structure is a filtered abelian group with external transports, +not an internal full-dyadic graded ring; valuation-ring/integer-only or +characteristic-2 restricted structures remain outside the theorem's contract. + ## What holds (the baseline — don't dilute it on any cleanup pass) - **The cross-validation spine is real, and this sweep widened it.** `verify_milgram` diff --git a/docs/DONE.md b/docs/DONE.md index b44a98a..a1b2c32 100644 --- a/docs/DONE.md +++ b/docs/DONE.md @@ -16,7 +16,8 @@ What remains unbuilt is tracked in the two buildable ledgers — the code) and [`CONTINUATIONS.md`](CONTINUATIONS.md) (genuinely new features), each carrying its slice of the deferred stars `*1`/`*2`/`*4` (`*8` converted to `CONTINUATIONS.md`'s numbered `ogham-0.3.0` when its sketch landed, 2026-07-09); genuine open problems -stay in [`OPEN.md`](OPEN.md), loopy-valued: `tis`/`tisn`, `on`/`off`, `over`/`under`. +stay in [`OPEN.md`](OPEN.md), loopy-valued: `tis`/`tisn`, `on`/`off`, and `over`. +`under` is the first former loopy-valued research entry closed into this ledger. **Naming note (2026-07-15):** the language shipped through 0.3.6 as **ogham**; it is renamed **grundy** (provisional — finalization at the 0.3.8 release @@ -313,21 +314,55 @@ integral genus and mass surfaces. all 23 rooted Niemeier classes. ### 1·e_g: `overheating` -**Completed:** 2026-06-19 +**Completed:** 2026-06-19; numeric associated-graded follow-up 2026-07-20 **Summary:** the games pillar now has game-valued heating, Berlekamp overheating, and Norton multiplication beside the thermograph/cooling surface. -**Pillars:** games **Claim level:** standard math, implemented and tested +**Pillars:** games **Claim level:** standard infrastructure + proved research follow-up, implemented and tested - surface: `heat`, `norton_multiply`, `overheat`, `is_positive_game`, and - `integer_game_value`, plus Python module functions and `Game` methods for - `heat`, `norton_multiply`, and `overheat`. + `integer_game_value`; the follow-up adds `numeric_norton_regrade` and + `numeric_norton_mean_temperature` plus matching Python `Game` methods. - oracles: heating fixes numbers and sends `{1|-1}` heated by `2` to `{3|-3}`; non-dyadic heating temperatures reject honestly; Norton multiplication by unit `1` is the identity, nonpositive units reject, integer-unit Norton products have the expected mean, and Berlekamp overheating uses Norton multiplication on integer leaves. -- boundaries: this is finite short-game infrastructure only. It does not claim - that Norton multiplication descends to a product on the temperature - associated graded; that compatibility remains the `under` open problem. +- follow-up theorem: every positive dyadic unit `u=m/2^k` induces the exact + additive regrading `gr_τ -> gr_{uτ+u-δ}` (`δ=2^-k`, or `1` for integers); + even when a cold noninteger number becomes hot, its image stays strictly below + the target layer. For integer `n`, shifted thermal height scales by `n`. +- boundaries: this is a family of external additive transports, not a + multiplicative action and not an internal product on the associated graded. + Indeed `A_2 A_(1/2)(*)` has temperature `1` while `A_1(*)` has temperature `0`. + Nonnumeric units can fail descent, and the full residue object remains the narrower + `under` problem resolved immediately below. + +### under·(e_g∧e_s): `thermography-newton-separation` +**Completed:** 2026-07-20 +**Summary:** thermography and Newton polygons are two tropical objects, joined by +a genuine filtered shadow but not by one faithful Newton-style dyadic graded ring. +**Pillars:** games ↔ scalar **Claim level:** proved + implemented and tested +- arbitrary-product theorem: `gr_0` contains the nonzero order-2 class `[*]`. + Any full dyadic coefficient object has an invertible homogeneous element + representing 2 (and its `1/2` inverse); lift-compatible action sends `[*]` to + the initial class of `*+*=0` and therefore kills it. This covers both an ordinary unital `ℤ[1/2]` algebra and the + graded initial-form coefficients of a valued dyadic field. +- Norton theorem: if `r_u(τ)=uτ+u-δ_u`, then + `r_v(r_u(τ))-r_(uv)(τ)=v(1-δ_u)-δ_v+δ_(uv) ≥ 0`, with all zero-defect pairs + classified. The pair `u=1/2`, `v=2` has defect `1`, so the individual + additive Norton transports are not a multiplicative dyadic action in any + temperature-preserving refinement. +- surface: `numeric_norton_composition_defect`, the expanded + `experiments/under_descent.py` arithmetic/game audit, and the complete proof in + `writeups/thermo_newton.tex`; `docs/OPEN.md` retains only the closure tombstone. +- oracles: the Rust heating suite pins five materialized composition defects; + the Python probe checks 2,304 positive-dyadic pairs for nonnegativity and the + exact zero classification, alongside the prior 210 thermic predictions and + quotient-descent witnesses. +- boundaries: characteristic-2 residue slices, valuation-ring/integer-only + actions without `1/2`, nonunital/nonassociative structures, and quotients + killing `[*]` are not ruled out. Each drops a defining part of the stated + full-dyadic unification contract, so they are follow-up structures rather than + counterexamples. ### 1·(e_c∧e_f∧e_i): `heisenberg-weil` **Completed:** 2026-06-19 diff --git a/docs/OPEN.md b/docs/OPEN.md index 1b793b8..b2a5d8b 100644 --- a/docs/OPEN.md +++ b/docs/OPEN.md @@ -28,7 +28,10 @@ the vocabulary. The values come in dual pairs, and so do the problems: every verified rung (`on`), and the classifier that switches off beyond the finite windows (`off`). - **`over`/`under`** — the two mirror questions: the mod-8 spine above the Arf - bit (`over`), and the MinPlus shadow beneath MaxPlus thermography (`under`). + bit (`over`) remains open; the MinPlus shadow beneath MaxPlus thermography + (`under`) was resolved on 2026-07-20: a substantive filtered transport exists, + while a faithful full-dyadic Newton-style ring is impossible. It is retained + below only as a closure tombstone. The games are the names: refer to a problem by its loopy value. `dud` stays unassigned: `dud + G = dud` for every `G`, and no problem has yet earned @@ -172,22 +175,43 @@ The program state (2026-06-10 — `writeups/goldarf.tex` §§5–9, backed by th bounded-window blocker conjecture is untouched (the FIFO queue is unbounded memory). The recasting is now the load-bearing open step; the Plambeck–Siegel Thm 6.4 regularity gate is still slug `ps-regularity`. -- The mechanism behind the verified realizer is now reduced and largely - explained (2026-06-10 second pass, goldarf §8 "linking reduction", +- The mechanism behind the verified realizer is now reduced and substantially + sharpened (2026-06-10 and 2026-07-20 passes, goldarf §8 "linking reduction", `experiments/linking_game.py`): FIFO forces closes in opening order (no nesting, linked = overlap), the whole σ-game is equivalent to an **odd-close parity game** (only closing a queue front with an odd number of untouched neighbors flips the outcome bit), ko/passes localize away, and the **general-m linking theorem** — flips forced even on any board with an isolated coin, hence exactness for ALL m — is machine-verified - for every graph isomorphism class through k = 7 (1,044 classes, both - seats), far beyond Gold-arising boards. The dummy's role is identified - (it defeats the unique local obstruction, the domination device, at - every root — matching the no-dummy Bad-graph census 1/4/34 at n=3/5/7, - all mover-controlled), and an explicit two-mode defender strategy - (prevention/debt menus) is strictly verified through k = 7. What - remains is the general-n induction (firewall segmentation - architecture); parity-local invariants provably do not suffice. + for every graph isomorphism class through k = 8 real coins plus dummy + (12,346 classes at k = 8, both seats), far beyond Gold-arising boards. + Two new exact reductions delimit the proof route. Every maximal + nonempty-queue block on b coins uses 2b touches, so the initial mover + starts every block. And, with L the still-unclosed vertices when x opens, + the flip parity is `sum_x deg_L(x) mod 2`: for the potential + `P = e(queue,U)`, a close changes P by its flip bit and an open changes P + by `deg_L(x)`. This second identity is FIFO-blind, so FIFO must enter the + strategy through its forced close target rather than through the + accounting itself. +- The old parity-local menu realization of the proof architecture is now + falsified precisely rather than merely unfinished. The original + prevention/debt menus remain strictly complete + through k = 7, but graph6 class `GCRU]w` at k = 8 requires a proactive + neighbor-open that creates an even odd-degree queue corridor even though + safe non-neighbor opens exist; `GCZMmw` then requires leaving an odd front + deliberately unrepaired. Thus a parity-local "repair whenever possible" + induction cannot prove the theorem. The broader no-self-flip prevention + envelope (every open plus even-front closes), paired with the existing + debt menu, is strictly complete on all 12,346 k = 8 classes, both seats. + The remaining question is whether that broader finite strategy has a + general recursive certificate. +- The dummy defeats the empty-queue domination device at every root, matching + the no-dummy Bad-graph census 1/4/34 at n = 3/5/7 (all mover-controlled), + but that device is not the unique local squeeze. On the path `z-f-y-h`, + state `queue=(f,h), U={y,z}` has an even front and no safe move: either + open makes f odd, while closing f exposes odd h. The isolated dummy kills + this squeeze while untouched, but once queued or spent it becomes exactly + the recursive repair-potential problem. The naturality dichotomy: @@ -258,12 +282,14 @@ Concrete progress targets (aligned with the goldarf §9 ranked moves): the family-boundary sweep (ko-window `w`, pass semantics, pair touches, no-dummy controls), which also puts the bounded-window blocker on valid data. - Close the **general-n linking theorem** (the mechanism half, reduced - 2026-06-10): prove that the odd-close parity game on any graph with an - isolated coin forces an even flip count from both seats. Verified for all - classes k ≤ 7 with a strictly-verified two-mode strategy - (`experiments/linking_game.py`); the open residue is the firewall-segmented - no-debt/one-debt induction with certificate-depth completeness (goldarf - §8). A proof upgrades the m∈{4,8} verification to exactness for all m. + 2026-06-10 and sharpened 2026-07-20): prove that the odd-close parity game + on any graph with an isolated coin forces an even flip count from both + seats. Verified for all 12,346 classes at k = 8 real coins plus dummy + (`experiments/linking_game.py`). The old R3/D3 induction fails first at + `GCRU]w`; the live route is the block-turn plus live-degree-pairing + formulation, with FIFO re-entering through forced front deletion and the + proactive-debt witnesses above. A proof upgrades the m∈{4,8} verification + to exactness for all m. - Repair or replace N3, the anti-clock axiom — the open definitional problem: the escape-edge construction passes N1–N3 while being morally a clock, and two-game criticality is unsatisfiable in two-class outcome semantics. @@ -408,215 +434,263 @@ Relevant surfaces: ### on·e_s: `ordinal nim multiplication beyond the verified excess table` -Push transfinite nim multiplication beyond the source-verified Lenstra-DiMuro -excess table. Historically the first missing carry in this checkout was -`alpha_47`; a local fixed-base finite-field oracle now verifies that carry, but -the general closed-form problem remains open. - -What is implemented: -- The algebraic closure of `F_2` is represented by ordinals `< omega^(omega^omega)` - under nim-arithmetic. -- The prime-power generator tower is implemented in `src/scalar/big/ordinal/tower.rs`. - Products are exact when every Kummer carry uses a finite Lenstra excess `m_u` for an - odd prime `u <= 709`: the finite `m_u` are sourced from OEIS A380496 ("Lenstra excess - of the n-th odd prime"), the b-file's 126 known rows (odd primes `3..=709`; the first - 14 reproduce DiMuro Table 1 + the old `m_47`). The first OEIS-unknown row is `p=719`, - so a carry at `u >= 719` returns `None`. The ordinal carry `alpha_u` is assembled in - code from `f(u)=ord_u(2)`, DiMuro's recursive `Q(f(u))`, and the finite `m_u`. -- Stage 1 handles scalar excesses such as `alpha_3 = 2`, `alpha_5 = 4`, and - `alpha_17 = 16`; Stage 2 handles nonscalar excesses such as `alpha_7 = omega+1` - by branching the monomial and recursing to lower places. -- The 126 finite excess rows (the *integers* `m_u`) are source-pinned to OEIS A380496 in - full — the vendored b-file is diffed against the table row-for-row by - `excess_table_matches_vendored_b380496_in_full` (`src/scalar/big/ordinal/ - b380496.txt`, fetched 2026-07-02). Caveat: the table extends *reach*, not - *feasibility* — for large primes `alpha_u` is in the table but its `Q(f(u))`/finite- - subfield reconstruction over the degree-`e_u` component field (`e_u` in the millions - for `u` near 709) is too costly to materialize in practice, so only the smaller-`e_u` - rows are usable end-to-end today. -- "Exact for `u <= 709`" means the construction is *defined* there (`alpha_ordinal(u)` - returns `Some`, since every input it needs — `f(u)`, `Q(f(u))`, and `m_u` — resolves). - It is a separate, narrower claim that the resulting *ordinal value* has been checked - against an oracle outside the construction itself: that per-row value pin currently - covers `u` in `{3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 73, 89}` - (DiMuro Table 1 for the first 14; `73`/`89` cross-checked against `experiments/ - ordinal_excess_probe.py`'s independently curated `Q_SET`/order-based excess - certification; `47` additionally re-derived by raw repeated multiplication in - `locally_verified_alpha_47_landmark`). The remaining rows up to `709` are defined and - internally consistent (the field-axiom sweeps exercise engine consistency) but do not - yet have an independent value oracle. The "large primes near 709" cost caveat above - actually bites much earlier than 709: `alpha_ordinal(179)` (`f=178=2*89`, - `Q(f)={89}`) already recurses into a `finite_subfield_degree` Frobenius minimization - on `chi(89)=omega^(omega^22)` that does not finish in a unit-test budget, confirmed - by hand while extending this table — so `179` is a genuine gap in the "cheap today" - set, not merely an oversight. - -The first fourteen rows (odd primes `3..=47`) are shown below for readability — the -historic DiMuro Table 1 + `m_47` landmarks, now also OEIS A380496 `a(1)..a(14)`; -production stores the finite `m_u` for all 126 rows (`3..=709`) and reconstructs the -displayed `alpha_u` values: - -| u | alpha_u | u | alpha_u | u | alpha_u | -|---|---|---|---|---|---| -| 3 | 2 | 13 | omega+4 | 29 | omega^(omega^2)+4 | -| 5 | 4 | 17 | 16 | 31 | omega^omega+1 | -| 7 | omega+1 | 19 | omega^3+4 | 37 | omega^3+4 | -| 11 | omega^omega+1 | 23 | omega^(omega^3)+1 | 41 | omega^omega+1 | -| | | 43 | omega^(omega^2)+1 | 47 | omega^(omega^7)+1 | - -Current external state: -- The first OEIS unknown in the extended table is now `p = 719`, where - `f(719) = 359` and `Q(359) = {359}`. The calculator notes the required finite - exponent as `e_719 = 1258230380`, which is the practical wall for the direct - Lenstra power test. -- A tempting pattern matches the checked OEIS/calculator records from this pass: - `m_p = 0` when `Q(f(p))` is not a singleton odd prime-power; `m_p = 1` for a - singleton odd `Q(f(p))`, except the observed `f(p) = 2*3^k` cases have - `m_p = 4`. A local audit matched this rule against the 950 calculator records - with known `Q`-sets, and against every OEIS-known row covered by those `Q`-sets. - This is still only a candidate rule, not a theorem. -- The exact finite-field reformulation is sharper than root-search language. If - `beta = kappa_{f(p)} + m` lies in the component field `F_{2^E}`, then `beta` - has no `p`-th root exactly when `p` divides the multiplicative order of `beta`. - Thus the excess is the least `m` such that - `p | ord(kappa_{f(p)} + m)`. -- The local fixed-base probe (`experiments/ordinal_excess_probe.py`) uses that - criterion to verify `m_47 = 1` from the lower rows. Since `f(47) = 23` and - `Q(23) = {23}`, this gives `alpha_47 = omega^(omega^7)+1` — historically the first - row past DiMuro Table 1, now subsumed by the OEIS A380496 import (the shipped table - is source-pinned, not per-row locally oracled). - -Since the 2026-06 research pass (`writeups/excess.tex`, `experiments/excess/`, -`experiments/cyclotomic_3k_family.py`): - -- The 3-power column is now structural: `C_k` — the exact formula - `ord(kappa_{3^k} + 1) = 3^(k+1) * (2^(3^k) - 1)` with `gamma_k` primitive — is - certified for `k <= 6` and consistent-but-uncertified for `k = 7, 8`, blocked - only by the unfactored cofactors of `Phi_{3^7}(2)` and `Phi_{3^8}(2)` (FactorDB - CF). Whether ECM/GNFS reaches those on a realistic budget is open. -- The `f(p) = 2*3^k` exception column is settled at every prime current factor - tables reach (2026-06-12, `experiments/exception_column_m4.py`): `m_p = 4` - *exactly*, universally for `k <= 6` (fully factored levels — 14 rows, 11 of - them new, anchors `19`/`163`/`1459` reproduced never assumed) and at every - known prime of `k = 7, 8`. The enabling fact is a corrected compositum norm: - `sigma(4) = 5` (the F_4-Artin-Schreier conjugate; the earlier draft's - `(kappa+4)(kappa+6)` was a Frobenius slip), so - `Norm(kappa+4) = (kappa+4)(kappa+5) = kappa^2 + kappa + 2`, which collapses - the `m = 4` test into the same trinomial field as the `C_k` chain: - `m_p = 4 <=> p | ord(M_k)`, `M_k = Nbar/N`, `N = zeta^2 + zeta + zeta^h`. - The per-level conjecture `D_k` (the prime-to-3 part of `ord(M_k)` is full) is - the new column analogue of `C_k`; the norm tower is *twisted* - (`Norm(N_k) = eta^2 + omega^2*eta + 1 != N_{k-1}`), so no `gamma`-style - propagation exists and each level stands alone. An `m_p >= 5` example, if one - exists, now hides strictly inside the unfactored cofactors of - `Phi_{2*3^7}(2)` and beyond. -- Wieferich caveat: the order criterion `m_p = min m : p | ord(kappa_{f(p)} + m)` - is valid only when `v_p(2^(f(p)) - 1) = 1`. The two known base-2 Wieferich - primes `1093` and `3511` sit inside the extended range and need the full power - criterion. -- Newly certified `m_r = 1` rows (`262657` at `f = 27`; `71119` and `97685839` at - `f = 81`; representatives at `f = 243, 729, 2187, 6561`) keep the candidate - `0/1/4` rule unbroken. Still no proof; boundedness outside the 3-power and - `2*3^k` columns (the 11-chain, the 23/29/47 components) has no structural - theory, and no `m_p >= 5` example is known. -- The `p = 719` dependency rehearsal advanced one rung and then hit a wall. The - local fixed-base oracle certifies `m_89 = 1` (`E = 220`) and `m_179 = 1` - (`E = 19,580`) via the fixed-base power path (`python3 - experiments/ordinal_excess_probe.py --deep`, ~1 min). `m_359 = 1` is the - remaining rehearsal row before `m_719` — already source-pinned by A380496, but - with no *independent* local certificate, and the 2026-06-16 pass diagnosed - precisely why it is blocked (`writeups/excess.tex`, "the m359 rehearsal - obstruction"): - - The structurally cheap **top-step Kummer norm** is the wrong norm. With - `f(359) = 179`, the tower has `F = F_{2^E}` over `B = F_{2^19580}`, and - `Norm_{F/B}(κ_179 + 1) = κ_89 ∈ B` — but `359 ∤ 2^19580 − 1` (since - `ord_359(2) = 179 ∤ 19580`), so `359` is *invisible* in `B`. The certified - `m_89` / `m_179` rows do not propagate up through the easy norm. - - The norm actually forced by the order criterion is the **transverse** - `Norm_{F/L}(β)`, `L = F_{2^179}` (`gcd(179, 19580) = 1`, so `F = B·L`): the - `F_{2^3504820} / F_{2^179}` norm is the genuinely required object. - - In the current pure-Python term basis that target-subfield element is - essentially **half-dense** (support `111/220` for the `p = 89` analogue, - `9691/19580` for `p = 179`), so the direct fixed-base root-test exponent is - slower than the cheap certificate — a representation diagnostic, not a no-go. - - The Wieferich caveat is *absent* at the live pressure points: `2^179 ≢ 1 - (mod 359²)` and `2^359 ≢ 1 (mod 719²)`, so the order form equals the full - power criterion for both `m_359` and the proposed `m_719` test. - A practical `m_359` certificate now needs either dense/sliced GF(2) arithmetic - (`gf2x` / NTL) or a tower-aware Frobenius representation that makes the - transverse orbit cheap; the pure-Python oracle cannot reach it. The same - `Norm_{E/K}(β) = ∏_i Frob^i(β)` orbit primitive is what Bridge K's - cyclic-algebra reduced norm needs — a reusable - `relative_norm_over_frobenius_orbit` is the shared engineering lever (not a - claim that the bounded `Fpn` norm certifies `m_719`). -- `p = 719` feasibility: the direct test needs ~3.5 million Frobenius steps in - `F_{2^1258230380}`; tower-aware Frobenius arithmetic (De Feo–Randriam–Rousseau - standard lattices) is the conjectured 10–100x lever — a cost model, not a - theorem. - -Why this is research: -- The same-coverage implementation improvement is now done: the shipped code computes - `f(u)`, `Q(f(u))`, and the `chi`-sum, while hardcoding only the finite excess - integer. That changes provenance hygiene, not reach. -- Extending past the verified finite-excess table is different. DiMuro's theorem proves that the - excess has a formulaic transfinite shape plus a finite correction, but the finite - correction has no closed form in the cited theorem. -- Weaker "closed forms" already fail: `Q(f(p))` alone does not determine the - excess, since `Q = {9}` gives `m_19 = 4` but `m_73 = 1`; similarly - `Q = {81}` gives `m_163 = 4` but `m_2593 = 1`, and `Q = {243}` gives - `m_1459 = 4` but `m_487 = 1`. -- The candidate `0/1/4` rule above would imply a global bound `m_p <= 4`. Lenstra - explicitly left absolute boundedness open after proving lower-bound rules such - as singleton-odd `Q(f(p))` forcing positive excess and `f(p)=2*3^k` forcing - excess at least `4` (the matching upper bound `m_p = 4` is now certified at - every visible prime of that column; see above). -- The order formulation explains the first weak-formula failures without appealing - to the production table. In the independent probe, `ord(kappa_9 + 1) = - 3^3*(2^9 - 1)`, so `73 | ord(kappa_9 + 1)` but `19` does not divide it; adding - `4` changes the order and picks up `19`. This is why the same `Q = {9}` gives - both `m_73 = 1` and `m_19 = 4`. -- Shipping new values would require an independent oracle, a root-search theorem, - or a new algorithmic proof. Otherwise the project would be numerology with a - pleasant API. - -Concrete progress targets: -- ~~Decide whether to import more known OEIS/calculator values through `p <= 709` as - cited data, or keep requiring a local finite-field oracle for each shipped row.~~ - **Done (2026-06-13):** the finite `m_u` table is now the full OEIS A380496 b-file - (126 rows, odd primes `3..=709`), source-pinned rather than per-row locally oracled. - The remaining gap is *feasibility* (materializing `alpha_u` for large-`e_u` rows), - not *coverage*. -- Derive or certify finite excess terms beyond the published table. (Done for - the `2*3^k` column at every visible prime — 11 new `m_p = 4` rows, 2026-06-12; - the `3`-power column's `m_r = 1` rows were certified in the earlier pass; - the `p=719` dependency rehearsal now locally certifies `m_89 = m_179 = 1`. - Other columns remain.) -- Prove or find a counterexample to the candidate `0/1/4` rule. The smallest - pressure point is `p = 719`, where the rule predicts `m_719 = 1` but the direct - calculator path is too large for ordinary local verification; the next - dependency to certify locally is `m_359 = 1`, now shown obstructed in the - pure-Python oracle (the required transverse norm is half-dense — see above), - pending faster GF(2) / tower-Frobenius arithmetic. -- Turn the order-divisibility criterion into an actual theorem about the prime - divisors of `ord(kappa_q + m)`, especially for singleton odd `Q = {q}` and for - the exceptional tower `q = 3^k`. -- Build a verified `u`-th-power/root-search oracle for the transfinite field. -- Prove enough about the search to avoid merely empirical extensions. -- ~~Decide what evidence is acceptable for shipping `alpha_53` and beyond.~~ Settled: - OEIS A380496 (a maintained sequence, values verified upstream by CGSuite's calculator) - is accepted as source-pinned evidence through `p <= 709`. The next question is what - evidence justifies rows past `p = 719` (the first OEIS-unknown), which need a fresh - computation, not a table lookup. +**Status:** open. The proof source of truth is +[`writeups/excess.tex`](../writeups/excess.tex); this entry is the concise +research ledger and implementation boundary. + +#### Problem + +For an odd prime \(p\), Conway's Kummer carry below +\(\omega^{\omega^\omega}\) has the form +\[ +\alpha_p=\kappa_{f(p)}+m_p,\qquad f(p)=\operatorname{ord}_p(2), +\] +where \(m_p\) is Lenstra's finite *excess*. Lenstra proved structural lower +bounds and conjectured absolute boundedness. Every source-pinned row presently +available is consistent with the sharper rule +\[ +m_p= +\begin{cases} +0,&\mathcal Q(f(p))\text{ is not a singleton odd prime-power},\\ +4,&f(p)=2\cdot3^k,\ k\ge1,\\ +1,&\text{otherwise}. +\end{cases} +\] +This \(0/1/4\) rule is not proved. + +#### Exact reduction + +The paper proves that the rule is equivalent to four universal order +statements. They are the permanent coordinates for this problem: + +| arm | exact assertion | proved so far | universal gap | +|---|---|---|---| +| \(Z\): zero | the structural norm of \(\kappa_h\) generates the full primitive-support quotient for every non-ordinary component set | synchronized multicomponent phase; exact two-component resultant; nontrivial primitive support on the power-of-two two-spine family; complete \(h=12,24\); Dickson dichotomy, reverse-Dickson trace divisor, and exact Kummer-coset transport | generation when the primitive quotient is composite; arbitrary synchronized phase; exclusion of the selected transported coset in the singleton-even Conway-Fermat case | +| \(O\): ordinary odd spine | the selected projective class of \(\kappa_{r^a}+1\) has full primary order for every odd \(r\ne3\) | transverse norm; relative Hilbert-90 unit; signed conjugate-ball lower bound; mixed-Jacobi formulas; projective minimal polynomial and binary-section ancestry; tower-faithful common-section no-go | selected-minimal-polynomial nondivisibility at the unscaled Conway value for the smaller primary factors | +| \(C\): cubic | \(\gamma_k=\zeta+\zeta^{-1}\in\mathbb F_{2^{3^k}}^\times\) is primitive for every \(k\) | \(C_1,C_2,C_3\) analytically; exact norm tower; partition bound; cyclic-parity and block reductions; Singer--Wendt factorization; selected \(S_3\)-quotient, reciprocal order seam, and prescribed-trace character boundary | exclusion of the recursively selected Wendt/trace fibre, equivalently the extra proper-subproduct relation, at the smaller current factors | +| \(D\): exceptional | \(\Psi_k\mid\operatorname{ord}(M_k)\) for every \(k\), with \(\Psi_k=\Phi_{2\cdot3^k}(2)/3\) | corrected norm; exact current-factor/Capelli forms; quadratic-twist antiunit; partition bound; mixed-Jacobi flatness and binary cyclic-parity equivalences; half-block norm and selected-trace form; selected reciprocal sextic and complete cubic Dickson-factor boundary; universal cubic-shape no-go and selected absolute-trace fingerprint | exclusion of the explicit recursively selected cubic from the Dickson factor list at the smaller current factors | + +The reduction is a theorem. None of the four universal assertions is claimed +complete. + +#### Shared finite-field criterion + +If the candidate translate +\(\beta=\kappa_{f(p)}+m\) lies in \(\mathbb F_{2^E}\), then it has no +\(p\)-th root exactly when +\[ +\beta^{(2^E-1)/p}\ne1, +\] +equivalently when \(\operatorname{ord}(\beta)\) contains the full +\(p\)-primary part of \(2^E-1\). Reducing this to +\(p\mid\operatorname{ord}(\beta)\) is valid only when +\(v_p(2^E-1)=1\). The correct valuation is +\[ +v_p(2^E-1) += +v_p(2^{f(p)}-1)+v_p(E/f(p)). +\] +Thus both base-2 Wieferich behavior and a factor of \(p\) in \(E/f(p)\) +must be retained. Relative norm to \(\mathbb F_{2^{f(p)}}\) gives the +exact smaller-field power test. + +#### What the four arms now say + +- **\(Z\), multicomponent phase.** Componentwise norms lose a synchronized + Frobenius phase. The paper retains that phase exactly, expresses the + two-component case by a resultant over the intersection field, and proves + primitive support for a power-of-two two-spine family. The associated + Hilbert-90 cross-ratio is exact, but the first divisor comparison has degree + up to \(2r-2\); it does **not** imply the formerly claimed \(2^r-1\) order + bound. That invalid bound has been removed. + +- **\(Z\), singleton-even chain.** The condition is precisely maximal order of + the Conway class in the quadratic quotient: + \(\delta_n=F_n=2^{2^n}+1\). Fibotomic, resultant, elliptic, Kummer-cover, and + generalized-Jacobian formulations all reduce to the same distinguished + Miller-unit value. They prove that degree, trace, norm, quarter-turn + symmetry, and the full natural boundary-character package do not decide + nonvanishing. The exact \(\ell\)-root descent now shows that even the full + lower trace/norm ancestry and the maximal predecessor order survive a + hypothetical failure automatically; the top step is equivalent to one + explicit Dickson power-sum equation. Its degree-\(\ell\) Dickson + polynomial has an all-or-nothing factorization: it splits completely on + failure and is irreducible on success, with an exact resultant and + absolute Capelli composition. A reverse-Dickson transform gives a sharper + exact criterion: failure occurs precisely when an explicit absolute norm + polynomial containing the selected minimal polynomial of \(a_{n-1}\) + divides the trace-one polynomial + \(1+\sum_{j=0}^{2^n-1}Z^{2^j}\). On success that norm polynomial is one + irreducible; on failure it is exactly \(\ell\) full-degree factors. The + resulting root count and long leading-coefficient gap are both compatible + with every composite Fermat case. More exactly, the trace-one hyperplane is + the inversion quotient of the norm-one torus, and the reverse-Dickson + factor is literally one multiplicative \(\mu_\ell\)-coset transported + through that quotient. Its fibotomic support is explicit and has automatic + capacity. Thus derivatives, root sums, coefficient gaps, and support are + all realized by nonselected cosets: this is a selected-factor reduction, + not yet a contradiction. + +- **\(O\), ordinary odd spines.** These now have a structural theory: a + projective quotient, a selected relative cyclotomic unit, and a signed + conjugate-ball sieve. The missing theorem is full order at the remaining + small primary factors. The unweighted reciprocity orbit cancels not only for + the second argument \(2\), but for every selector from the base cyclotomic + field. A Teichmuller-weighted product formula proves that pure + \(\mathbb Q(\mu_p)\) selectors cancel as well; mixed Jacobi sums escape + that cancellation and recover the target as one exact inverse-Fourier + coefficient, but its local \(p\)-adic phase is the original unresolved + Kummer datum. Equivalently, the selected relative unit has an explicit + degree-\(r\) projective minimal polynomial, and failure means that all + nonconstant binary sections of \((1+x)^{\mathcal L_{r,a}/p}\) vanish at + \(x_{a-1}\). Descending the ancestry makes this simultaneous divisibility + by the actual Conway minimal polynomial \(P_{\alpha_r}\). Relative norm and + submask complementation are automatic on that pattern, so only the selected + nondivisibility can close the arm. A character-sum construction makes the + point sharp: complete irreducible \(r\)-power towers with smooth exact + degree, the same bottom Kummer coset, matched multiplicative order, all + section divisibilities, and full Wieferich-safe bookkeeping can fail + abundantly. Only the unscaled Conway scalar remains distinguished. The + table value \(m_{359}=1\) is known from A380496; + what remains open at that row is an independent analytical evaluation of + its selected trace/resultant phase. + +- **\(C\), cubic spine.** The norm recursion carries old factors, while each + level introduces a new factor \(\Phi_{3^k}(2)\). The paper proves the first + three levels without order computation and gives several exact + reformulations and lower bounds. The derivative regulator is rigorous but + circular: its reduction is a power of the same unknown Gaussian period. An + exact counterexample also shows that the polynomial coefficient recursion + can carry a primitive irreducible input to an irreducible but nonprimitive + output, so primitivity is not a formal inductive invariant. A new cyclic + group-algebra reduction makes failure equivalent to a sharp subset-sum + parity pattern: every residue modulo \(3^{k+1}\) occurs oddly except one. + In the augmentation ideal this is an extra proper-subproduct relation; + the full Frobenius product and its immediate \(\ell\)-th-power exponent + consequence are unconditional, so they cannot supply the contradiction. + A block compression now proves that submask complementation forces the + unique even residue into exactly the position required by failure. Failure + is also equivalent to the distinguished minimal polynomial and its + reciprocal translate occurring in a binary Wendt gcd. Every factor of + that gcd has degree \(3^k\) and translation pairs the factors, so neither + Wendt-factor existence nor reciprocal symmetry singles out the selected + pair. More sharply, an exact Singer-difference-set factorization gives + the coset-intersection moments; when + \(\ell-1<\sqrt q+1/\sqrt q\), every coset necessarily contains + degree-\(3^k\) Wendt factors. The selected pair descends under the free + \(S_3\) action to the lower trace value + \(\eta_{k-1}^2+\eta_{k-1}+1=\gamma_{k-1}^{-2}\). The descended + elements satisfy an irreducible cubic with trace and norm equal to the + preceding one, and their orders factor exactly as the preceding order + times the current norm-one selector order. Thus this is a lossless + reciprocal formulation, not an induction. Equivalently, failure is the + extremal value \(3\) of one prescribed-trace character sum at + \(\eta_{k-1}\). Other trace fibres genuinely attain \(3\), so a uniform + Weil or character bound cannot exclude the selected fibre. + +- **\(D\), exceptional spine.** The corrected \(m=4\) norm is + \(N_k=\zeta^2+\zeta+\omega\), and the exact conjecture is current-level + \(D'_k\), not cumulative propagation of all old factors. The quadratic-twist + antiunit and partition regulator prove an explicit large-factor range. + Semiprimitive Fourier data, line saturation, Dirichlet coefficients, + relative Dickson forms, and proper-subfield norms are all compatible with + failure. Mixed Jacobi sums now give an exact first-order formulation: + failure is equivalent to simultaneous congruences + \(J_j\equiv-1\pmod{(\zeta_\ell-1)^2}\) for the full composite-conductor + family. Equivalently, binary submasks of \((2^{4\cdot3^k}-1)/\ell\) + occur evenly in residue zero modulo \(15\cdot3^k\) and oddly in every + nonzero residue; raising this identity to \(\ell\) is again automatic. + The binary exponent splits into two equal blocks, turning failure into a + quadratic norm equation. Its involution-fixed residue pushforward is + unconditional, and Hilbert--90 gives no obstruction. The remaining + selected \(\ell\)-th root is nontrivial exactly when one explicit relative + trace to \(\mathbb F_{2^{3^{k-1}}}\) is nonzero. More sharply, the + selected phase has an explicit reciprocal sextic over that field, and + failure is equivalent to one named irreducible cubic dividing + \(D_e\), where \(e=(2^{2\cdot3^{k-1}}-2^{3^{k-1}}+1)/\ell\). + The exact factorization of \(D_e\) is \(Y(Y+1)^2\) times squares of + irreducible cubics, so the ambient structure supplies many admissible + false positives. Every one of those cubics has constant coefficient equal + to the square of its trace coefficient, exactly matching the selected + cubic. The selected remaining coefficients have absolute traces \(1\) and + \(k\bmod2\), but the factorization supplies no contradictory coordinate + identity. The cubic and exceptional current groups also have coprime + orders, so their analogous torus formulations cannot transfer the result. + Excluding the recursively selected cubic, not generic + cubic-factor existence, is the remaining Kummer evaluation. + +#### Evidence boundary + +Use four distinct evidence levels: + +1. **Proved theorem / cited theorem.** A written proof in + `writeups/excess.tex` or an identified external theorem. +2. **Certified exact finite computation.** Exact arithmetic plus locally + checkable factorization and primality information for the stated finite + levels only. +3. **Source-pinned external value.** Imported from an identified maintained + source, without an independent proof in this checkout. +4. **Consistent incomplete evidence.** All known factors or sampled rows pass, + but an unfactored cofactor, unproved primality claim, or untested level + remains. + +Current evidence: + +- The implementation vendors and row-diffs all \(126\) A380496 entries for odd + primes \(3\le p\le709\). These *integer excesses* are source-pinned. The next + unsupported carry is \(\alpha_{719}\). +- The contributor-linked extended A380496 auxiliary table reports + \(m_{1093}=m_{3511}=0\), the two known base-2 Wieferich rows. The calculator + uses Lenstra's exact \((2^E-1)/p\) power test, so these values assert full + \(p^2\)-primary order rather than radical support. They are external exact + computations, however: they are outside the approved 126-row b-file and + carry no compact remainder certificate in this checkout. +- The resulting ordinal carry is independently value-checked only at the named + subset documented beside the tower tests; table coverage must not be confused + with per-row ordinal verification or practical constructibility. +- Cubic: \(C_1,C_2,C_3\) are theorems; \(C_4,C_5\) are locally certified; + \(C_6\) is source-assisted because the local path has only probable-prime + evidence for its 42- and 90-digit factors; \(k=7,8\) are consistent only, + with unfactored cofactors. +- Exceptional: \(k=2,\ldots,5\) are locally certified; \(k=6\) is + source-assisted because its 78-digit factor lacks a local certificate; + \(k=7,8\) are consistent only, again with unfactored cofactors. +- The finite exception rows do not prove \(D'_k\) universally, and the finite + cubic rows do not prove \(C_k\) universally. + +#### Current proof targets + +1. **\(Z\).** Exclude the selected reverse-Dickson divisor and thereby prove + the Conway-Fermat quotient order \(\delta_n=F_n\); prove generation of the + composite two-spine primitive quotient; then control the general + synchronized phase. +2. **\(O\).** Prove that at least one selected binary section is nonzero + modulo \(P_{\alpha_r}\) at every remaining small primary factor + (equivalently evaluate \(\Theta_{q,s}\)). +3. **\(C\).** Exclude the extremal prescribed-trace value at the Conway + fibre \(\eta_{k-1}\), equivalently prove that every current primary + factor of \(\Phi_{3^k}(2)\) occurs fully in + \(\operatorname{ord}(\gamma_k)\). +4. **\(D\).** Exclude the explicit selected cubic of + `prop:dk-selected-sextic` from its Dickson factor list at every factor + of \(\Psi_k\); equivalently prove the Capelli/antiunit condition \(D'_k\). + +Exact-order and factorization runs remain useful for falsification and audits, +but they are not the leading proof route. A solution must exploit the +distinguished Conway/cyclotomic value, because the paper now proves that the +obvious generic invariants are insufficient. Relevant surfaces: - `writeups/excess.tex` +- `writeups/excess.pdf` - `experiments/ordinal_excess_probe.py` - `experiments/cyclotomic_3k_family.py` - `experiments/exception_column_m4.py` +- `experiments/excess/` (archive; honor its per-file status table) - `src/scalar/big/ordinal/tower.rs` +- `src/scalar/big/ordinal/b380496.txt` - `src/scalar/big/ordinal/mod.rs` - `src/scalar/AGENTS.md` -- `examples/tour.rs` ### off·(e_f∧e_s∧e_c): `transfinite Arf/Witt classification for ordinal-nimber coefficients` @@ -726,17 +800,15 @@ Relevant surfaces: - `writeups/goldarf.tex` §5 (the extraspecial reframing this lifts) - `tis` — the `ℤ/2` floor of this question -### under·(e_g∧e_s): `thermography ↔ Newton polygons: one tropical object or two?` +### ~~under·(e_g∧e_s): `thermography ↔ Newton polygons: one tropical object or two?`~~ — resolved -Decide whether the project's two tropical consumers — thermography (`MaxPlus`, the -games axis) and the valuation/Newton-polygon stack (`MinPlus`, the place axis, -Bridge J) — are connected by a substantive transport, or whether the mirror is -purely notational. Either answer is the contribution; as of this pass the -thermograph-level mirror has a *negative* theorem and the positive question has a -sharper form (below). The duality is named (`scalar/tropical.rs` enforces the -two-type separation), and the place axis is fully standard. +**Resolved 2026-07-20: two objects, with a substantive filtered shadow.** The +project's two tropical consumers — thermography (`MaxPlus`, the games axis) and +the valuation/Newton-polygon stack (`MinPlus`, the place axis, Bridge J) — cannot +be one faithful Newton-style dyadic graded ring. The exact closure is in +`writeups/thermo_newton.tex`; the implementation record lives in `docs/DONE.md`. -Why this is research: +Why this was research: - On the place axis the valuation axiom `v(x+y) >= min(v(x), v(y))` makes Newton polygons additive under multiplication (Dumas), and passing to the graded ring `gr_v` "freezes" leading terms; `scalar/newton.rs` plus the Springer tests pin @@ -749,10 +821,11 @@ Why this is research: thermograph as a sum-compatible tropical object — provably fails, and replaced it with a sharper target. -The program state (2026-06-19 — `writeups/thermo_newton.tex` + +The closed program state (2026-07-20 — `writeups/thermo_newton.tex` + `experiments/under_descent.py`): a negative theorem at the thermograph level, -plus a sharper associated-graded obstruction after the Norton/overheating -infrastructure landed. +an unrestricted associated-graded obstruction, a positive exact descent theorem +for every numeric Norton unit, and two final no-go theorems excluding a faithful +dyadic-unital ring and a multiplicative Norton scalar action. - **The thermograph is not a sum invariant (proved).** `G ↦ Th(G)` is not a congruence for disjunctive sum: no operation taking only `Th(G)` and `Th(H)` can @@ -785,23 +858,57 @@ infrastructure landed. on all-small games (`aw(↑) = 1`, `aw(↓) = −1`, `aw(*) = 0`), but its kernel still contains nimber-like residues (`* + * = 0` shows the kernel matters) — so even the first graded piece is a genuine residual game object, not the mast. -- **Where it stalls (open).** Short games are not a ring. The repo now carries +- **Unrestricted descent fails.** Short games are not a ring. The repo now carries game-valued Norton multiplication / overheating operators as infrastructure, so - the question is sharper, and the unrestricted answer is now negative. In the + the unrestricted answer is negative. In the `τ = 0` quotient, `*` and `* + 1` differ by the cold number `-1`, but Norton multiplication by the positive infinitesimal unit `↑` sends that hidden integer residue to a leading temperature-0 difference (`aw = -1`); the degenerate overheating operator `∫_↑^0` gives the same obstruction (`aw = -2`). Thus - nonnumeric units do **not** descend to the naive `gr_T(Games)` quotient. The - bounded sanity scan found no failures for numeric units `1` and `2` on a - 21-game catalogue (126 representative-pair checks for Norton and for - `∫_s^0`), so the remaining live target is a restricted/normalized product or a - refined quotient that retains cold-number coefficients. The scalar temperature - hyperoperation (`a ⊞ b = max(a,b)` if `a ≠ b`, else "all temperatures `≤ a`") - is clean and useful, but lifting it to full thermographs without adding - residues is either false (no-congruence) or tautological. - -Concrete progress targets: + the unrestricted nonnumeric-unit family does **not** descend to the naive + `gr_T(Games)` quotient (this proves existence of failure, not failure for every + positive nonnumeric unit). +- **Numeric Norton descent is proved (new positive transport).** Let the positive + dyadic unit be `u = m/2^k`, put `δ = 2^-k` (`δ = 1` for an integer), and + `a = u - δ`. For every nonnumeric thermographic game, + `mean(G.u) = u mean(G)` and `temp(G.u) = u temp(G) + a`. A cold number `x` + with canonical mesh `ε = 1/den(x)` can become hot, but its exact temperature is + `a-uε` when that is nonnegative and `-1` otherwise — always strictly below `a`. + Standard Norton linearity therefore gives an additive graded map + `gr_τ -> gr_(uτ+a)` for every `τ >= 0`; the identical recursion is Berlekamp + overheating `∫_u^a`. For integer `u=n`, the shifted height `h=τ+1` scales + exactly as `h -> n h`. `numeric_norton_regrade` and + `numeric_norton_mean_temperature` compute the theorem without materializing the + product. Rust tests pin the formula and quotient descent on the complete + 22-value day-two census plus a bounded day-three singleton-option census; the + Python probe checked 210 thermic pairs and 24 representative pairs each for + Norton/matching overheating with zero numeric-unit failures. +- **The internal-ring hope is impossible under the full-dyadic coefficient + contract (proved).** The nonzero class `[*]` in `gr_0` has order 2. In either + an ordinary `ℤ[1/2]` algebra or a graded initial-form coefficient object for a + valued dyadic field, the element representing 2 is homogeneous and invertible; + lift-compatible action sends `[*]` to the initial class of `*+*=0` and would + therefore force `[*] = 0`. Thus a Rees or + secondary valuation does not evade the theorem when the full dyadic field still + acts. A characteristic-2 nimber-only slice or a valuation-ring action can evade + it only by omitting the `1/2` inverse. +- **The numeric transports are not a scalar action (proved exactly).** Their + degree maps `r_u(τ)=uτ+u-δ_u` obey + `r_v(r_u(τ)) = r_(uv)(τ) + Δ(u,v)`, where + `Δ(u,v)=v(1-δ_u)-δ_v+δ_(uv) ≥ 0`. At `u=1/2`, `v=2`, the defect is `1`: + `A_2 A_(1/2)(*)` has temperature `1`, while `A_1(*)` has temperature `0`. + No residue enrichment preserving temperature can repair an exact degree + mismatch. `numeric_norton_composition_defect` implements the formula; the + Python probe checks 2,304 dyadic pairs and five materialized witnesses. +- **Resolution.** The mirror is substantive but stops before multiplication: + the game side is a temperature-filtered abelian group with external numeric + regradings, while the place side is an associated graded ring. A + characteristic-2 slice, valuation-ring/integer-only action without `1/2`, + nonunital ringoid, hyperstructure, or quotient killing `[*]` may still be + interesting, but each abandons a stated part of the full-dyadic unification + contract and is not a reopening of `under`. + +Closure checklist: - ~~Formulate and test the lax law for `t(G+H)` as a hyperfield statement; locate the game-side vanishing locus.~~ **Done**: `temp(G+H) ≤ max(temp G, temp H)` holds with equal-temperature pairs as the vanishing locus, but it is provably too @@ -810,19 +917,22 @@ Concrete progress targets: dictionary works only in the trivial one-parameter switch family and does not extend to a sum theorem. - ~~Test whether unrestricted Norton multiplication / overheating descends to - the first temperature-filtration quotient.~~ **Done, negative for nonnumeric - units:** `* ≡ * + 1 (mod F_<0)`, but multiplying/overheating by `↑` leaves a - non-lower temperature-0 residue. This rules out the naive full Berlekamp/Norton - product on `gr_T(Games)`. -- The reframed central target: decide whether any restricted product survives: - numeric Norton units, mean-normalized positive units with the cold coefficient - retained separately, or a quotient refined by atomic-weight/nimber-kernel data. - **Yes** ⇒ one tropical object, but only after a stricter residue enrichment than - the naive associated graded; **no** ⇒ two tropical objects sharing only the - scalar hyperfield shadow. -- If every transport trivializes, write the no-go in the now-precise form: the - thermograph is not a sum congruence (done), and no residue enrichment recovers a - cooling-compatible product. + the first temperature-filtration quotient.~~ **Done, negative for the + unrestricted nonnumeric-unit family:** `* ≡ * + 1 (mod F_<0)`, but + multiplying/overheating by `↑` leaves a non-lower temperature-0 residue. + This existence witness rules out the naive full Berlekamp/Norton product on + `gr_T(Games)`; it does not assert failure for every nonnumeric unit. +- ~~Decide whether numeric Norton units survive on the temperature associated + graded.~~ **Done, positive for every positive dyadic unit:** the exact affine + regrading is `τ -> uτ + (u-δ)`, and the image of every cold-number difference is + strictly lower. This is the first substantive positive transport in `under`. +- ~~Decide whether anything larger survives under the Newton-style coefficient + contract.~~ **Done, negative:** the `[*]` 2-torsion obstruction rules out any + faithful dyadic-unital algebra, independently of the chosen internal product. +- ~~Promote the numeric composition failure from a witness to an exact theorem.~~ + **Done:** the nonnegative defect and all zero-defect pairs are classified; + `u=1/2`, `v=2` rules out a multiplicative Norton action in exact temperature + degree. Relevant surfaces: - `writeups/thermo_newton.tex` @@ -854,6 +964,8 @@ Relevant surfaces: quotient/kernel theory behind the misère obstruction (for `tis`). - Berlekamp, *The economist's view of combinatorial games*, in Games of No Chance (1996): the informal cooling dictionary (for `under`). +- Berlekamp, *Blockbusting and Domineering*, JCTA 49 (1988): generalized + overheating, the numeric-unit surface used by the positive `under` theorem. - Maclagan-Sturmfels, *Introduction to Tropical Geometry*; Viro, *Hyperfields for tropical geometry I*: valuations as (lax) tropicalization and the strictness repair (for `under`). diff --git a/experiments/linking_game.py b/experiments/linking_game.py index a6ad9e2..f17ecf9 100644 --- a/experiments/linking_game.py +++ b/experiments/linking_game.py @@ -30,45 +30,68 @@ sigma is forced = |E| mod 2, which on a Gold board is Q(x): m-uniform exactness of the echo-fifo+dummy realizer. -STATUS (2026-06-10), machine-verified by this file: - * Rigidity holds for ALL graph iso classes with k <= 7 real coins + - dummy, both seats (k=7: 1044 classes) -- far beyond the Gold-arising - boards of the m=8 sweep. +STATUS (2026-07-20), machine-verified by this file: + * Rigidity holds for ALL graph iso classes with k <= 8 real coins + + dummy, both seats (k=8: 12,346 classes, supplied by nauty ``geng``) -- + far beyond the Gold-arising boards of the m=8 sweep. * Without the dummy the failures ("Bad graphs") are exactly mover- controlled, census {3:1, 5:4, 7:34}; none contains an isolated vertex; 33/34 at n=7 have a dominating vertex (one composite exception). - * Core Lemma (the unique local obstruction; proof = 4-case check): with + * Core Lemma (the empty-queue obstruction; proof = 4-case check): with the queue empty, after opening v with R = U \\ {v}, the responder can re-even v before it becomes closable UNLESS R is a subset of N(v) with |R| even -- the "domination device" (ko-protected zugzwang, flip in 2 plies). An isolated coin in U defeats it at every root. |R| odd explains the bonus even-n no-dummy rigidity. - * A two-mode defender strategy (PREVENTION/DEBT menus, rule_R3/debt_D3 - below) beats an optimal unrestricted attacker on every class k <= 7, - both seats, with NO fallback outside the menus. NB: menu-EXISTENTIAL - semantics -- the menus always contain a winning move; not every menu - choice wins (Codex exhibited a losing poison choice on the star). - * General-n proof: OPEN. Architecture (after a Codex spar, thread - 019eb4ff-695b-7762-97e8-c0bea66c4e7e): segment the queue at firewall + * The original PREVENTION/DEBT menus (rule_R3/debt_D3 below) beat an + optimal unrestricted attacker on every class k <= 7, but fail first at + k = 8. ``GCRU]w`` needs a proactive odd-corridor poison despite safe + non-neighbor opens; ``GCZMmw`` needs an odd front left deliberately + unrepaired. The broader no-self-flip prevention envelope (every open, + even-front closes) plus debt_D3 is strictly complete on all 12,346 k=8 + classes, both seats. Menu semantics remain EXISTENTIAL: a winning move + is always present, not every admitted move wins. + * General-n proof: OPEN. A second pass exposed two additional exact + reductions. Queue-empty turns always belong to the initial mover: a + maximal nonempty-queue block on b coins consumes exactly 2b moves. + Also, if L is the still-unclosed vertex set when x opens, total flip + parity equals sum_x deg_L(x): for P = e(queue, U), closes change P by + the flip bit and opens change it by deg_L(x). This degree-pairing form + is the current proof route. An earlier architecture (Codex spar, thread + 019eb4ff-695b-7762-97e8-c0bea66c4e7e) segments the queue at firewall coins (deg_U == 0; the opened dummy is permanent, the untouched dummy virtual), mutual induction E (no debt) / O (one debt) per segment; certificates bounded by game-tree depth. The hard obligation is the poison transition E -> O (recursive repair-potential), which is also exactly where parity-local invariants provably fail (the safe/unsafe label is NOT a function of 13 natural parity features; minimal - distinguishing pairs differ in E(U) repair structure). - -Stages: validate | screen [K] | strategy [K] | all (default K = 5; the -k=7 screen ~45 s, k=7 strategy ~25 s). Stdlib only, no venv needed. + distinguishing pairs differ in E(U) repair structure). The two k=8 + menu witnesses now show that any such induction must admit proactive + debt before the parity-local trap appears. + +The old description of the empty-queue domination device as the unique +local obstruction was too strong. A nonempty queue can squeeze too: on +the path z-f-y-h, queue (f,h), U={y,z}, and an even front f, either open +makes f odd while closing f exposes the odd front h. The dummy defeats +this squeeze while untouched, but a proof must track the queued case. + +Stages: validate | screen [K] | strategy [K] | graph6 | all (default K = +5; the k=7 screen ~45 s, k=7 strategy ~25 s). ``graph6`` consumes a +nauty ``geng`` census through ``--graph6-path`` and can parallelize with +``--jobs`` (for example, ``geng -q 8 > graphs8.g6`` followed by +``python linking_game.py graph6 --graph6-path graphs8.g6 --jobs 12``). +Stdlib only, no venv needed. Cross-validated against experiments/echo_solver.py (the adversarially reviewed solver) through the SynthForm bridge in stage `validate`. """ import argparse +import multiprocessing import random import sys import time from itertools import permutations +from pathlib import Path from typing import Any sys.setrecursionlimit(10_000) # matches echo_solver.py; state-space recursion is shallow @@ -84,16 +107,21 @@ def adj_of(n: int, edges) -> list: return adj -def legal_moves(n, adj, u, seq, last): - """All legal moves as (kind, coin, flip, u2, seq2, touched).""" +def legal_moves(n, adj, u, seq, ko): + """All legal moves as (kind, coin, flip, u2, seq2, ko2). + + ``ko`` is true exactly after opening onto an empty queue. Opens are + otherwise never blocked: the last touched coin cannot still be untouched, + and after any close the new front differs from the coin just closed. + """ mv = [] for i in range(n): - if i != last and u >> i & 1: - mv.append(("o", i, 0, u ^ (1 << i), seq + (i,), i)) - if seq and seq[0] != last: + if u >> i & 1: + mv.append(("o", i, 0, u ^ (1 << i), seq + (i,), not seq)) + if seq and not ko: f = seq[0] fl = bin(adj[f] & u).count("1") & 1 - mv.append(("c", f, fl, u, seq[1:], f)) + mv.append(("c", f, fl, u, seq[1:], False)) return mv @@ -106,20 +134,20 @@ def rigid_values(k: int, edges, dummy: bool) -> list: adj = adj_of(n, edges) memo: dict = {} - def win(u, seq, last, g): + def win(u, seq, ko, g): # mover can force future flip count == g (mod 2) if u == 0 and not seq: return g == 0 - key = (u, seq, last, g) + key = (u, seq, ko, g) r = memo.get(key) if r is not None: return r - mv = legal_moves(n, adj, u, seq, last) + mv = legal_moves(n, adj, u, seq, ko) if not mv: - res = not win(u, seq, -1, 1 ^ g) # forced pass clears ko + res = not win(u, seq, False, 1 ^ g) # forced pass clears ko else: - res = any(not win(u2, s2, i, 1 ^ g ^ fl) - for (_t, _c, fl, u2, s2, i) in mv) + res = any(not win(u2, s2, ko2, 1 ^ g ^ fl) + for (_t, _c, fl, u2, s2, ko2) in mv) memo[key] = res return res @@ -128,7 +156,7 @@ def win(u, seq, last, g): out = [] for t in (0, 1): g = t ^ par # flips needed for sigma == t - out.append(t if win(full, (), -1, g) else 1 ^ t) + out.append(t if win(full, (), False, g) else 1 ^ t) return out @@ -198,84 +226,185 @@ def iso_classes(k: int) -> list: return reps +def decode_graph6(line: str) -> tuple[int, frozenset]: + """Decode the small (n <= 62) graph6 form emitted by nauty ``geng``. + + The linking screens are already factorial at the game layer, so the + extended graph6 size forms would not be useful here. Keeping the decoder + local also preserves this experiment's stdlib-only boundary. + """ + data = line.strip() + if data.startswith(">>graph6<<"): + data = data[len(">>graph6<<"):] + if not data: + raise ValueError("empty graph6 record") + n = ord(data[0]) - 63 + if not 0 <= n <= 62: + raise ValueError("only the one-byte graph6 order form is supported") + bits = [] + for char in data[1:]: + value = ord(char) - 63 + if not 0 <= value < 64: + raise ValueError(f"invalid graph6 byte: {char!r}") + bits.extend((value >> shift) & 1 for shift in range(5, -1, -1)) + need = n * (n - 1) // 2 + if len(bits) < need: + raise ValueError("truncated graph6 record") + edges = [] + cursor = 0 + for j in range(1, n): + for i in range(j): + if bits[cursor]: + edges.append((i, j)) + cursor += 1 + return n, frozenset(edges) + + +def verify_graph6_record(item: tuple[str, bool]): + """Return a counterexample description, or ``None`` on success.""" + line, check_strategy = item + k, edges = decode_graph6(line) + par = len(edges) & 1 + values = rigid_values(k, edges, True) + if values != [par, par]: + return ("theorem", line.strip(), values) + if check_strategy: + for seat in (0, 1): + if not strategy_holds(k, edges, seat): + return ("menu", line.strip(), seat) + return None + + # ---------------------------------------------------------------- strategy -def rule_R3(n, adj, u, seq, last): +def rule_R3(n, adj, u, seq, ko): """PREVENTION menu (debt 0). P1 re-even / P2 safe opens + safe close / P3 poison-or-close trap branch / P4 endgame close.""" front = seq[0] if seq else None allowed = set() if u == 0: - if front is not None and front != last: + if front is not None and not ko: allowed.add(("c", front)) return allowed if front is not None and bin(adj[front] & u).count("1") & 1: for i in range(n): - if i != last and (u >> i & 1) and (adj[front] >> i & 1): + if (u >> i & 1) and (adj[front] >> i & 1): allowed.add(("o", i)) return allowed nontog = {("o", i) for i in range(n) - if i != last and (u >> i & 1) + if (u >> i & 1) and (front is None or not adj[front] >> i & 1)} if nontog: allowed |= nontog - if front is not None and front != last: + if front is not None and not ko: nxt = seq[1] if len(seq) > 1 else None if nxt is None or bin(adj[nxt] & u).count("1") % 2 == 0: allowed.add(("c", front)) return allowed for i in range(n): - if i != last and (u >> i & 1): + if u >> i & 1: allowed.add(("o", i)) - if front is not None and front != last: + if front is not None and not ko: allowed.add(("c", front)) return allowed -def debt_D3(n, adj, u, seq, last): +def rule_R3_corridor(n, adj, u, seq, ko): + """PREVENTION plus the first recursive repair certificate. + + R3 fails first on the eight-real-vertex graph6 class ``GCRU]w``: it + preserves an even front with an isolated/non-neighbor open, but every such + move loses. Opening a neighbor instead turns the whole four-coin queue + into an even-length odd corridor; paired closes then discharge the debt. + This extension admits exactly those proactive poison moves in addition + to R3. + """ + allowed = rule_R3(n, adj, u, seq, ko) + front = seq[0] if seq else None + if front is None or bin(adj[front] & u).count("1") & 1: + return allowed + for i in range(n): + if not (u >> i & 1) or not (adj[front] >> i & 1): + continue + u2 = u ^ (1 << i) + seq2 = seq + (i,) + if len(seq2) % 2 == 0 and all( + bin(adj[v] & u2).count("1") & 1 for v in seq2): + allowed.add(("o", i)) + return allowed + + +def rule_no_self_flip(n, adj, u, seq, ko): + """The no-self-flip prevention envelope. + + The next eight-vertex obstruction, graph6 class ``GCZMmw``, must leave + an odd front odd by opening a non-neighbor. Together the first two R3 + failures say that prevention must allow debt proactively, not only in a + parity-local trap. The envelope therefore admits every open and exactly + the safe (even-front) closes: the defender never pays a flip on their own + move. + """ + allowed = {("o", i) for i in range(n) if u >> i & 1} + front = seq[0] if seq else None + if front is not None and not ko and \ + bin(adj[front] & u).count("1") % 2 == 0: + allowed.add(("c", front)) + return allowed + + +def debt_D3(n, adj, u, seq, ko): """DEBT menu (debt 1). D1 counter-close / D2 ko stall / D3 toggle or advance / D4 bare opens.""" front = seq[0] if seq else None allowed = set() if front is not None and bin(adj[front] & u).count("1") & 1: - if front != last: + if not ko: return {("c", front)} for i in range(n): - if i != last and u >> i & 1: + if u >> i & 1: allowed.add(("o", i)) return allowed if front is not None: for i in range(n): - if i != last and (u >> i & 1) and (adj[front] >> i & 1): + if (u >> i & 1) and (adj[front] >> i & 1): allowed.add(("o", i)) - if front != last: + if not ko: allowed.add(("c", front)) return allowed for i in range(n): - if i != last and u >> i & 1: + if u >> i & 1: allowed.add(("o", i)) return allowed -def strategy_holds(k: int, edges, seat: int) -> bool: - """Defender (flips-even) restricted to the R3/D3 menus, attacker +def strategy_holds(k: int, edges, seat: int, menu_version: int = 5) -> bool: + """Defender (flips-even) restricted to a prevention/debt menu, attacker unrestricted optimal; STRICT (an empty/illegal menu = defender loss). - Menu-existential: True means a winning move always exists IN the menu.""" + Menu-existential: True means a winning move always exists IN the menu. + Versions 3 and 4 reproduce the two superseded finite boundaries; version + 5 is the current no-self-flip prevention envelope.""" + if menu_version not in (3, 4, 5): + raise ValueError(f"unknown menu version: {menu_version}") n = k + 1 # always with dummy adj = adj_of(n, edges) memo: dict = {} - def W(u, seq, last, mover, g): + def W(u, seq, ko, mover, g): if u == 0 and not seq: return g == 0 - key = (u, seq, last, mover, g) + key = (u, seq, ko, mover, g) r = memo.get(key) if r is not None: return r - lm = legal_moves(n, adj, u, seq, last) + lm = legal_moves(n, adj, u, seq, ko) if mover == seat and lm: - rule = rule_R3 if g == 0 else debt_D3 - allowed = rule(n, adj, u, seq, last) + prevention = { + 3: rule_R3, + 4: rule_R3_corridor, + 5: rule_no_self_flip, + }[menu_version] + rule = prevention if g == 0 else debt_D3 + allowed = rule(n, adj, u, seq, ko) mv = [m for m in lm if (m[0], m[1]) in allowed] if not mv: memo[key] = False @@ -283,17 +412,17 @@ def W(u, seq, last, mover, g): else: mv = lm if not mv: - res = W(u, seq, -1, 1 - mover, g) + res = W(u, seq, False, 1 - mover, g) elif mover == seat: - res = any(W(u2, s2, i, 1 - mover, g ^ fl) - for (_t, _c, fl, u2, s2, i) in mv) + res = any(W(u2, s2, ko2, 1 - mover, g ^ fl) + for (_t, _c, fl, u2, s2, ko2) in mv) else: - res = all(W(u2, s2, i, 1 - mover, g ^ fl) - for (_t, _c, fl, u2, s2, i) in mv) + res = all(W(u2, s2, ko2, 1 - mover, g ^ fl) + for (_t, _c, fl, u2, s2, ko2) in mv) memo[key] = res return res - return W((1 << n) - 1, (), -1, 0, 0) + return W((1 << n) - 1, (), False, 0, 0) # ---------------------------------------------------------------- stages @@ -334,35 +463,46 @@ def stage_validate() -> None: cnt += 1 print(f" {cnt} agree (SynthForm bridge, q = 0)") - print("== reduction identities on random plays (R1/R2) ==") + print("== reduction identities on random legal plays (R1/R2/R4) ==") rng = random.Random(7) for _ in range(400): k = rng.randrange(2, 7) + dummy = rng.choice((False, True)) + n = k + int(dummy) pairs = [(i, j) for i in range(k) for j in range(i + 1, k)] edges = frozenset(p for p in pairs if rng.random() < 0.5) - adj = adj_of(k, edges) - hadj = [adj[i] & ~((2 << i) - 1) for i in range(k)] - u, sigma, tt = (1 << k) - 1, 0, 0 + adj = adj_of(n, edges) + hadj = [adj[i] & ~((2 << i) - 1) for i in range(n)] + u, sigma, tt = (1 << n) - 1, 0, 0 seq: tuple = () + ko = False windows = {} flips = 0 + live_degree_sum = 0 while u or seq: omask = 0 for c in seq: omask |= 1 << c - opens = [i for i in range(k) if u >> i & 1] - if opens and (not seq or rng.random() < 0.6): - i = rng.choice(opens) + moves = legal_moves(n, adj, u, seq, ko) + if not moves: + assert u == 0 and len(seq) == 1 and ko + ko = False # the unique terminal pass + tt += 1 + continue + opens = [move for move in moves if move[0] == "o"] + closes = [move for move in moves if move[0] == "c"] + if opens and (not closes or rng.random() < 0.6): + _kind, i, _flip, u2, seq2, ko2 = rng.choice(opens) + live_degree_sum ^= bin(adj[i] & (u | omask)).count("1") & 1 sigma ^= bin(omask & hadj[i]).count("1") & 1 - u ^= 1 << i - seq = seq + (i,) windows[i] = [tt, None] + u, seq, ko = u2, seq2, ko2 else: - c = seq[0] + _kind, c, flip, u2, seq2, ko2 = closes[0] sigma ^= bin(omask & hadj[c]).count("1") & 1 - flips ^= bin(u & adj[c]).count("1") & 1 - seq = seq[1:] + flips ^= flip windows[c][1] = tt + u, seq, ko = u2, seq2, ko2 tt += 1 overlap = 0 for (i, j) in edges: @@ -373,8 +513,39 @@ def stage_validate() -> None: overlap ^= 1 assert sigma == overlap, "sigma != overlap parity (R1)" assert flips == (len(edges) & 1) ^ sigma, "flips != |E| ^ sigma (R2)" - print(" 400 random plays: no nesting; sigma == overlap;" - " odd-close flips == |E| ^ sigma") + assert flips == live_degree_sum, \ + "flips != sum of live degrees at opens (R4)" + print(" 400 random legal plays (dummy on/off): no nesting; sigma == overlap;" + " odd-close flips == |E| ^ sigma == live-open degree sum") + + print("== nonempty-queue squeeze witness ==") + # The path z-f-y-h with queue (f,h) and U={y,z}. The front f is + # even, yet either open makes f odd and closing f exposes odd h. + squeeze_adj = adj_of(4, {(0, 1), (1, 2), (2, 3)}) + moves = legal_moves(4, squeeze_adj, (1 << 0) | (1 << 2), (1, 3), False) + assert {(kind, coin) for kind, coin, *_rest in moves} == \ + {("o", 0), ("o", 2), ("c", 1)} + for _kind, _coin, _flip, u2, seq2, ko2 in moves: + replies = legal_moves(4, squeeze_adj, u2, seq2, ko2) + assert any(kind == "c" and flip == 1 + for kind, _coin, flip, *_rest in replies) + print(" every defender move exposes an immediate odd close") + + print("== first recursive-menu witness ==") + corridor_k, corridor_edges = decode_graph6("GCRU]w") + assert corridor_k == 8 + assert rigid_values(corridor_k, corridor_edges, True) == [0, 0] + assert not strategy_holds(corridor_k, corridor_edges, 1, menu_version=3) + assert strategy_holds(corridor_k, corridor_edges, 1, menu_version=4) + print(" GCRU]w defeats R3/D3; an even odd-corridor poison repairs it") + + nonrepair_k, nonrepair_edges = decode_graph6("GCZMmw") + assert nonrepair_k == 8 + assert rigid_values(nonrepair_k, nonrepair_edges, True) == [1, 1] + assert not strategy_holds(nonrepair_k, nonrepair_edges, 1, menu_version=4) + assert strategy_holds(nonrepair_k, nonrepair_edges, 1, menu_version=5) + print(" GCZMmw defeats the corridor menu; deliberate nonrepair needs" + " the no-self-flip envelope") print("validate: PASS") @@ -409,17 +580,55 @@ def stage_strategy(kmax: int) -> None: fails = [(tuple(sorted(e)), seat) for e in reps for seat in (0, 1) if not strategy_holds(k, e, seat)] - print(f"k={k}: {len(reps)} classes x 2 seats | R3/D3 strict fails:" + print(f"k={k}: {len(reps)} classes x 2 seats | no-self-flip/D3 fails:" f" {len(fails)} [{time.time()-t0:.0f}s]", flush=True) for f in fails[:8]: print(f" FAIL {f}") +def stage_graph6(path: str, jobs: int, check_strategy: bool) -> None: + """Screen an externally generated nonisomorphic graph6 census. + + ``nauty-geng -q 8`` is the intended producer. The generator remains an + external research tool; the checked game and menu solvers stay here. + """ + if jobs < 1: + raise ValueError("jobs must be positive") + records = [line for line in Path(path).read_text(encoding="ascii").splitlines() + if line and not line.startswith(">>")] + if not records: + raise ValueError(f"no graph6 records in {path}") + orders = {decode_graph6(line)[0] for line in records} + menu = "no-self-flip/D3" if check_strategy else "skipped" + print(f"graph6: {len(records)} records, orders={sorted(orders)}," + f" jobs={jobs}, strict_menu={menu}", flush=True) + t0 = time.time() + items = ((line, check_strategy) for line in records) + failures = [] + with multiprocessing.Pool(processes=jobs) as pool: + for index, result in enumerate( + pool.imap_unordered(verify_graph6_record, items, chunksize=1), 1): + if result is not None: + failures.append(result) + pool.terminate() + break + if index % 1000 == 0: + print(f" {index}/{len(records)} [{time.time()-t0:.0f}s]", + flush=True) + if failures: + raise AssertionError(f"graph6 counterexample: {failures[0]}") + print(f"graph6: PASS ({len(records)} records in {time.time()-t0:.0f}s)") + + def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("stage", nargs="?", default="all", - choices=("validate", "screen", "strategy", "all")) + choices=("validate", "screen", "strategy", "graph6", + "all")) parser.add_argument("kmax", nargs="?", type=int, default=5) + parser.add_argument("--graph6-path") + parser.add_argument("--jobs", type=int, default=1) + parser.add_argument("--skip-strategy", action="store_true") args = parser.parse_args() if args.stage in ("validate", "all"): stage_validate() @@ -427,6 +636,10 @@ def main() -> None: stage_screen(args.kmax) if args.stage in ("strategy", "all"): stage_strategy(args.kmax) + if args.stage == "graph6": + if args.graph6_path is None: + parser.error("graph6 requires --graph6-path") + stage_graph6(args.graph6_path, args.jobs, not args.skip_strategy) if __name__ == "__main__": diff --git a/experiments/under_descent.py b/experiments/under_descent.py index e18f8e1..22d22d3 100644 --- a/experiments/under_descent.py +++ b/experiments/under_descent.py @@ -1,16 +1,18 @@ #!/usr/bin/env python3 -"""Bounded descent probe for the `under` thermography open problem. +"""Closure audit for the resolved `under` thermography problem. The question is whether the newly shipped Norton multiplication / overheating operators respect the temperature-filtration quotient gr_T = ⊕_τ F_{≤τ}/F_{<τ}. -This script keeps the test deliberately small and source-backed: build a compact -short-game catalogue, identify pairs equivalent modulo lower temperature, then -ask whether the operators produce equivalent leading outputs. A failure is a -bounded witness that the operator does not descend to the naive associated -graded with cold numbers quotiented out. +This script keeps the game-tree tests deliberately small and source-backed: +build a compact short-game catalogue, identify pairs equivalent modulo lower +temperature, then ask whether the operators produce equivalent leading outputs. +It records all three parts of the final `under` result: a nonnumeric-unit +counterexample, the exact affine regrading through which every positive dyadic +numeric unit descends, and the nonnegative composition defect that prevents +those transports from being a multiplicative scalar action. """ from __future__ import annotations @@ -27,11 +29,20 @@ class NamedGame: game: pl.Game +@dataclass(frozen=True) +class NumericUnit: + name: str + game: pl.Game + scale: Fraction + shift: Fraction + + @dataclass(frozen=True) class Failure: operator: str unit: str tau: Fraction + output_layer: Fraction g_name: str h_name: str delta_temp: Fraction @@ -51,6 +62,15 @@ def temp(g: pl.Game) -> Fraction: return Fraction(rational.numerator, rational.denominator) +def as_fraction(value: object) -> Fraction: + return Fraction(value.numerator, value.denominator) + + +def number(value: Fraction | int) -> pl.Game: + value = Fraction(value) + return pl.Game.from_surreal(pl.Surreal.from_rational(value.numerator, value.denominator)) + + def dedupe(games: list[NamedGame]) -> list[NamedGame]: seen: set[str] = set() out: list[NamedGame] = [] @@ -79,18 +99,100 @@ def catalogue() -> list[NamedGame]: shifted: list[NamedGame] = [] for item in base: - for n in [-1, 0, 1]: - shift = pl.Game.integer(n) - suffix = "" if n == 0 else f"{n:+d}" - shifted.append(NamedGame(f"{item.name}{suffix}", item.game + shift)) + for value in [Fraction(-1), Fraction(-1, 2), Fraction(0), Fraction(1, 2), Fraction(1)]: + if value == 0: + suffix = "" + elif value.denominator == 1: + suffix = f"{value.numerator:+d}" + else: + suffix = f"{value.numerator:+d}/{value.denominator}" + shifted.append(NamedGame(f"{item.name}{suffix}", item.game + number(value))) return dedupe(shifted) -def positive_units() -> list[NamedGame]: - return [ - NamedGame("1", pl.Game.integer(1)), - NamedGame("2", pl.Game.integer(2)), - ] +def positive_units() -> list[NumericUnit]: + out: list[NumericUnit] = [] + for scale in [ + Fraction(1, 4), + Fraction(1, 2), + Fraction(3, 4), + Fraction(1), + Fraction(3, 2), + Fraction(2), + ]: + game = number(scale) + result = game.numeric_norton_regrade() + if result is None: + raise AssertionError(f"positive numeric unit {scale} has no regrade") + bound_scale, bound_shift = map(as_fraction, result) + if bound_scale != scale: + raise AssertionError(f"binding reports scale {bound_scale}, expected {scale}") + out.append(NumericUnit(str(scale), game, scale, bound_shift)) + return out + + +def dyadic_mesh(value: Fraction) -> Fraction: + """The canonical option mesh delta_x = 1 / denominator(x).""" + return Fraction(1, value.denominator) + + +def composition_defect(first: Fraction, second: Fraction) -> Fraction: + """Degree of A_second A_first minus the degree of A_(first*second).""" + return ( + second * (1 - dyadic_mesh(first)) + - dyadic_mesh(second) + + dyadic_mesh(first * second) + ) + + +def zero_defect_is_expected(first: Fraction, second: Fraction) -> bool: + """The exact parity/mesh classification from the composition theorem.""" + if first.denominator > 1: + return second.numerator == 1 # second = 2^-ell, including 1 + return first.numerator % 2 == 1 or second.denominator == 1 + + +def composition_defect_scan() -> tuple[int, int, int]: + """Exhaust the theorem arithmetically and pin selected defects on actual games.""" + values = sorted( + {Fraction(n, 1 << k) for k in range(5) for n in range(1, 17)} + ) + checked = 0 + positive = 0 + for first in values: + for second in values: + defect = composition_defect(first, second) + if defect < 0: + raise AssertionError(f"negative defect for {first=}, {second=}: {defect}") + if (defect == 0) != zero_defect_is_expected(first, second): + raise AssertionError( + f"zero classification failed for {first=}, {second=}: {defect}" + ) + checked += 1 + positive += defect > 0 + + star = pl.Game.star() + witnessed = 0 + for first, second in [ + (Fraction(1, 2), Fraction(2)), + (Fraction(2), Fraction(1, 2)), + (Fraction(3), Fraction(1, 2)), + (Fraction(1, 2), Fraction(1, 4)), + (Fraction(3, 2), Fraction(3, 2)), + ]: + first_product = star.norton_multiply(number(first)) + composite = first_product.norton_multiply(number(second)) if first_product else None + direct = star.norton_multiply(number(first * second)) + if composite is None or direct is None: + raise AssertionError(f"missing numeric Norton composition for {first}, {second}") + actual = temp(composite) - temp(direct) + expected = composition_defect(first, second) + if actual != expected: + raise AssertionError( + f"game-level defect failed for {first}, {second}: {actual} != {expected}" + ) + witnessed += 1 + return checked, positive, witnessed def explicit_non_numeric_failures() -> list[Failure]: @@ -114,6 +216,7 @@ def explicit_non_numeric_failures() -> list[Failure]: operator=operator, unit=unit.name, tau=Fraction(0), + output_layer=Fraction(0), g_name=g.name, h_name=h.name, delta_temp=temp(g.game - h.game), @@ -138,84 +241,111 @@ def same_leading_output(a: pl.Game, b: pl.Game) -> tuple[bool, Fraction, Fractio return td < ta, ta, tb, td, aw -def bounded_numeric_unit_scan() -> tuple[list[Failure], dict[str, int], int, int]: +def exact_numeric_thermic_scan(games: list[NamedGame], units: list[NumericUnit]) -> int: + checked = 0 + for item in games: + for unit in units: + product = item.game.norton_multiply(unit.game) + predicted = item.game.numeric_norton_mean_temperature(unit.game) + if product is None or predicted is None: + raise AssertionError(f"numeric Norton product missing for {item.name}, {unit.name}") + predicted_mean, predicted_temp = map(as_fraction, predicted) + actual_mean = as_fraction(product.mean_value().as_rational()) + if actual_mean != predicted_mean or temp(product) != predicted_temp: + raise AssertionError( + f"thermic formula failed for {item.name}, {unit.name}: " + f"actual={(actual_mean, temp(product))}, " + f"predicted={(predicted_mean, predicted_temp)}" + ) + checked += 1 + return checked + + +def bounded_numeric_unit_scan() -> tuple[list[Failure], dict[str, int], int, int, int]: games = catalogue() units = positive_units() - taus = sorted({temp(g.game) for g in games if temp(g.game) >= 0}) + thermic_checks = exact_numeric_thermic_scan(games, units) failures: list[Failure] = [] - checked_by_operator = {"norton": 0, "overheat_s_unit_t_0": 0} - - for tau in taus: - for g in games: - if temp(g.game) > tau: - continue - for h in games: - if temp(h.game) > tau: - continue - delta_temp = temp(g.game - h.game) - if delta_temp >= tau: - continue - # Ignore pairs that both already lie in the lower filtration; - # they represent the zero class one layer earlier. The witness - # below is stronger: both representatives have leading temp tau. - if temp(g.game) < tau and temp(h.game) < tau: - continue + checked_by_operator = {"norton": 0, "overheat_s_unit_t_shift": 0} + half = number(Fraction(1, 2)) + representatives = [ + (Fraction(0), NamedGame("*", pl.Game.star()), NamedGame("*+1/2", pl.Game.star() + half)), + ( + Fraction(0), + NamedGame("up", pl.Game.up()), + NamedGame("up+1/2", pl.Game.up() + half), + ), + ( + Fraction(1), + NamedGame("{1|-1}", pl.Game.switch(1, -1)), + NamedGame("{1|-1}+1/2", pl.Game.switch(1, -1) + half), + ), + ( + Fraction(2), + NamedGame("{3|-1}", pl.Game.switch(3, -1)), + NamedGame("{3|-1}+1/2", pl.Game.switch(3, -1) + half), + ), + ] - for unit in units: + for tau, g, h in representatives: + delta_temp = temp(g.game - h.game) + if delta_temp >= tau: + raise AssertionError(f"bad representative pair {g.name}, {h.name}") + for unit in units: + output_layer = unit.scale * tau + unit.shift + for operator in ["norton", "overheat_s_unit_t_shift"]: + if operator == "norton": p = g.game.norton_multiply(unit.game) q = h.game.norton_multiply(unit.game) - if p is not None and q is not None: - checked_by_operator["norton"] += 1 - ok, tp, tq, td, aw = same_leading_output(p, q) - if not ok: - failures.append( - Failure( - operator="norton", - unit=unit.name, - tau=tau, - g_name=g.name, - h_name=h.name, - delta_temp=delta_temp, - left_temp=tp, - right_temp=tq, - output_delta_temp=td, - output_delta_aw=aw, - ) - ) - - p = g.game.overheat(unit.game, pl.Game.zero()) - q = h.game.overheat(unit.game, pl.Game.zero()) - if p is not None and q is not None: - checked_by_operator["overheat_s_unit_t_0"] += 1 - ok, tp, tq, td, aw = same_leading_output(p, q) - if not ok: - failures.append( - Failure( - operator="overheat_s_unit_t_0", - unit=unit.name, - tau=tau, - g_name=g.name, - h_name=h.name, - delta_temp=delta_temp, - left_temp=tp, - right_temp=tq, - output_delta_temp=td, - output_delta_aw=aw, - ) - ) - - return failures, checked_by_operator, len(games), len(units) + else: + shift_game = number(unit.shift) + p = g.game.overheat(unit.game, shift_game) + q = h.game.overheat(unit.game, shift_game) + if p is None or q is None: + continue + checked_by_operator[operator] += 1 + tp, tq, td = temp(p), temp(q), temp(p - q) + aw = (p - q).atomic_weight_int() + ok = tp <= output_layer and tq <= output_layer and td < output_layer + if not ok: + failures.append( + Failure( + operator=operator, + unit=unit.name, + tau=tau, + output_layer=output_layer, + g_name=g.name, + h_name=h.name, + delta_temp=delta_temp, + left_temp=tp, + right_temp=tq, + output_delta_temp=td, + output_delta_aw=aw, + ) + ) + + return failures, checked_by_operator, len(games), len(units), thermic_checks def main() -> None: explicit = explicit_non_numeric_failures() - failures, checked, game_count, unit_count = bounded_numeric_unit_scan() + failures, checked, game_count, unit_count, thermic_checks = bounded_numeric_unit_scan() + defect_checks, positive_defects, game_defect_witnesses = composition_defect_scan() print(f"catalogue games: {game_count}; positive units: {unit_count}") + print(f"exact numeric-unit thermic checks: {thermic_checks}") print(f"checked norton pairs: {checked['norton']}") - print(f"checked overheat(s=unit,t=0) pairs: {checked['overheat_s_unit_t_0']}") + print( + "checked matching overheat(s=unit,t=shift) pairs: " + f"{checked['overheat_s_unit_t_shift']}" + ) print(f"numeric-unit failures in bounded scan: {len(failures)}") print(f"explicit non-numeric-unit failures: {len(explicit)}") + print( + "composition-defect pairs: " + f"{defect_checks} ({positive_defects} positive); " + f"game-level witnesses: {game_defect_witnesses}" + ) if explicit: first = explicit[0] @@ -223,6 +353,7 @@ def main() -> None: print(f" operator: {first.operator}") print(f" unit: {first.unit}") print(f" layer tau: {first.tau}") + print(f" output layer: {first.output_layer}") print(f" representatives: {first.g_name} and {first.h_name}") print(f" temp(G-H): {first.delta_temp} < {first.tau}") print(f" output temps: {first.left_temp}, {first.right_temp}") diff --git a/grundy/docs/README.md b/grundy/docs/README.md index a102dd3..0413f46 100644 --- a/grundy/docs/README.md +++ b/grundy/docs/README.md @@ -29,8 +29,9 @@ over ‿‿ over // true — and yet both starters draw in over − |---|---| | [`spec.md`](spec.md) | **the normative language contract** — identity, grammar, sorts, semantics, display, errors, conformance obligations | | [`implementation.md`](implementation.md) | the runtime contract — architecture, resource guards, validation gates | -| [`conformance.txt`](conformance.txt) | the hand-blessed corpus (with `conformance_v*.txt` as provenance); harness in `tests/grundy_conformance.rs` | -| `../CONTINUATIONS.md` | the roadmap and version ladder (0.3.6 → 0.3.7 → 0.3.8 → 0.4.0 release → 1.0.0) | +| [`stance.md`](stance.md) | non-normative — the design tradition (total/codata, lazy where the objects are coinductive, ⊥ refused) | +| [`conformance.txt`](conformance.txt) | the hand-blessed corpus (with `conformance_v*.txt` as provenance); harness in `tests/conformance.rs` | +| `../../docs/CONTINUATIONS.md` | the roadmap and version ladder (0.3.6 → 0.3.7 → 0.3.8 → 0.4.0 release → 1.0.0) | ## Running it diff --git a/grundy/docs/implementation.md b/grundy/docs/implementation.md index ce2be45..7c25c35 100644 --- a/grundy/docs/implementation.md +++ b/grundy/docs/implementation.md @@ -28,7 +28,10 @@ plugin system. ```text grundy/src/ - mod.rs + lib.rs crate root: re-exports, module wiring + eval.rs GRUNDY_VERSION, eval_to_string/EvalLine, the guard + constants, and the #[path] wiring for runtime/, + session.rs, worlds/ ast.rs Expr (with Apply), Binder marks, spans lex.rs parse.rs diff --git a/grundy/docs/spec.md b/grundy/docs/spec.md index 6e19b8a..dfc5a52 100644 --- a/grundy/docs/spec.md +++ b/grundy/docs/spec.md @@ -9,9 +9,9 @@ gating and committing throughout). This document is the **normative language contract and nothing else**: identity, syntax, sorts, semantics, errors, display. The runtime architecture and resource guards live in [`implementation.md`](implementation.md); the roadmap lives in -[`docs/CONTINUATIONS.md`](../CONTINUATIONS.md) (the version ladder: +[`docs/CONTINUATIONS.md`](../../docs/CONTINUATIONS.md) (the version ladder: 0.3.6 → 0.3.7 → 0.3.8 → **0.4.0 = the public release** → 1.0.0 higher-order); -history lives in [`docs/DONE.md`](../DONE.md) and §17. +history lives in [`docs/DONE.md`](../../docs/DONE.md) and §17. Every observable semantic rule in this document is pinned by the **conformance suite** (§16): exact corpus vectors, law tests, or differential @@ -24,7 +24,7 @@ tradition, for the value the language deliberately keeps as four lines of user code rather than a primitive (§1). Born **ogham** (through 0.3.6, named for og(doad) + the ancient stroke-script); renamed 2026-07-15, provisionally — finalization is 0.3.8 release dress -([`docs/CONTINUATIONS.md`](../CONTINUATIONS.md)). +([`docs/CONTINUATIONS.md`](../../docs/CONTINUATIONS.md)). --- @@ -1268,7 +1268,7 @@ three parts, one obligation: Corpus files use `//` comments, on their own lines or trailing input. Blocks separated by blank lines. The harness is - `tests/grundy_conformance.rs` (pure Rust); it also asserts hint fields on + `tests/conformance.rs` (pure Rust); it also asserts hint fields on the vectors that pin them. Blessing remains an operator workflow: the engine can suggest values, the spec stays the oracle. @@ -1313,6 +1313,6 @@ singles' seam (`E_GraphBudget` with the stopper gate passed). | 0.3.6 | 2026-07-10 | **the second adversarial pass** (this contract): display law restored — self-contained equation-system display, mutual `=:` groups, collision-safe α-names; total sort-checking at non-strict positions; guardedness by the language's own reduction; budgeted finite→loopy embedding, DAG-safe `≡`; `if a then b else c` replaces `? :` (the Bool tier is all words; `:` freed for ordinal sum, `?` solely the binder mark); the binder mark triad (`#`/`?`/bare-is-Element); container totality (fixed/graded/free); dyadic game literals + recognition; `birthday`, `integral`, poly `coef`; world respelling (`fp2[t]`/`fp2(t)`) + dim-0 shorthand; Display v4 (poly joins the monomial family); strata corrections (multiform, outcome-as-observation, predicate refiling); `E_StackDepth`, `E_FixpointSort`; whitespace-agnostic exponents; extended continuation; the spec split (this document) | The ladder (0.3.7 → 0.3.8 → 0.4.0 = release → 1.0.0 higher-order) lives in -[`docs/CONTINUATIONS.md`](../CONTINUATIONS.md). Provenance: the staging -corpora, [`docs/DONE.md`](../DONE.md), and the session records (the +[`docs/CONTINUATIONS.md`](../../docs/CONTINUATIONS.md). Provenance: the staging +corpora, [`docs/DONE.md`](../../docs/DONE.md), and the session records (the `ogham-036-*` gaslamp threads and the 0.3.6 synthesis document). diff --git a/grundy/docs/stance.md b/grundy/docs/stance.md new file mode 100644 index 0000000..ec74430 --- /dev/null +++ b/grundy/docs/stance.md @@ -0,0 +1,119 @@ +# grundy — the stance + +Status: **non-normative** (drafted 2026-07-19, a9 + fable, out of a design +conversation — prompted by a9's observation that the language had grown +Haskell-shaped). [`spec.md`](spec.md) remains the only contract. This note +names the design tradition the shipped semantics already occupies, so that +future rungs steer by it deliberately rather than by drift. Claim level: +re-description of implemented v0.3.6 semantics, except where marked. + +## The claim + +grundy is a **total, observation-driven language, lazy exactly where the +objects are coinductive** — a member of the lazy-functional family through +the *total* line (Turner's total functional programming; the data/codata +discipline of Agda and Idris), not through Haskell's own semantics. The +kinship with Haskell is real and worn openly: the name is a person-name in +the Haskell tradition ([`spec.md`](spec.md), header note), the `=:` system +is a letrec, the branches are non-strict. One refusal separates the two +lines, and it is the language's most distinctive commitment: + +**⊥ is not a value.** Haskell's laziness comes bundled with partiality — +every type contains divergence, every equation holds only up to ⊥, and +equational reasoning happens in a domain. grundy took the other fork: +divergence is an *error, priced and named* — `E_Fuel` for μ-steps (§9.2), +`E_GraphBudget` for materialization (§10.7), `E_StackDepth` for the host +frame (§13) — never an inhabitant of a sort. The spec's own slogan is the +stance: "total" always means *mathematically total, operationally budgeted* +(§10.7). The conformance corpus depends on this — its equations are +set-level facts, not domain-level approximations. So "aligning with +Haskell" means mining the good parts — non-strictness, codata, the +equational culture — while keeping the refusal of ⊥ as the thing that +makes grundy grundy. + +## The shipped constructs, under their tradition names + +Nothing here is new semantics; it is the v0.3.6 surface, re-described. + +| construct | spec | tradition name | +|---|---|---| +| Function `=:` — substitution you can see, fuel-metered | §9.1, §9.2 | μ-recursion by visible unfolding (the data side) | +| Element `=:` with self-mention, guard required | §9.1, §10.7 | guarded coinductive definition, presented as a finite cyclic graph (the codata side) | +| Bool/Index `=:` self-mention → `E_FixpointSort` | §9.1 | the data/codata stratification, *enforced*: recursion is for Functions (unfolding) and game Elements (graphs), nowhere else | +| `if/then/else`, `and`/`or` lazy branches under total sort-checking | §4, §8.6 | non-strictness without ⊥ ("non-strictness is not an exemption") | +| `⧺`, coinductively total on the left | §10.4 | corecursion on codata | +| outcome as observation; `≡` with branch-local cycle assumptions | §10.1, §10.5 | copatterns; bisimulation up-to | +| fuel / node / frame budgets | §9.2, §10.7, §13 | the operational fence that replaces ⊥ | + +The loopy game world is the final-coalgebra account of Conway games — +standard math, worked out in Honsell–Lenisa 2011 (loopy games as a final +coalgebra, sum by corecursion) — and that is the theory citation the 0.3.8 +loopy-envelope rung carries. + +## The two infinities (laziness and the transfinite) + +Coinductive machinery comes in two strengths; grundy currently ships +exactly one. + +- **Cyclic**: finite graphs — the Element-`=:` systems — present exactly + the *eventually-periodic* infinite behaviors (`on`, `over`, `dud`, + `ones`). This is 0.3.8's territory, with Honsell–Lenisa as its theory. +- **Productive**: streams whose next option is *computed*, not looked up. + `ω = {0, 1, 2, … |}` genetically — Conway's construction view, as + opposed to the CNF normal-form view the ordinal worlds already give — + has an increasing, non-periodic left-option stream: **no finite cyclic + presentation exists**. A generator is a function. So lazy transfinites + are not a change of tack; they are the 1.0.0 higher-order rung's + content, arriving with its motivation attached. (Claim level: design + synthesis. Implementation sketch: call-by-need thunks with blackholing — + which doubles as principled vicious-circle detection for non-productive + systems; host stays Rust.) + +**`birthday` is the litmus** separating the strata, and it inverts across +them: a symbolic value (CNF ordinal, Hahn surreal) *knows* its birthday — +total, read off the representation. A stream-presented game only *reveals* +it: forcing n levels yields "birthday ≥ n"; the exact answer requires +recognizing the stream as a symbolic value (proving your generator is ω), +and comparison on naive non-wellfounded presentations is only +semi-decidable in general. This is why the symbolic core stays load-bearing +under any amount of laziness: **the lazy layer presents; the symbolic layer +computes.** Budgeted embeddings are already the fence between them. + +## Ladder impact + +(The ladder lives in [`docs/CONTINUATIONS.md`](../../docs/CONTINUATIONS.md).) + +- **0.3.7** — untouched. +- **0.3.8** — gains its theory citation (Honsell–Lenisa), and one + release-dress decision: whether §1 states the coalgebraic identity out + loud. Note that §1's "non-strictness exactly where the mathematics never + looks" becomes false the day a stream *is* the mathematical object — the + sentence is priced for revision at 1.0.0, not before. +- **0.4.0** — freezes the public story; the stance had to be decided by + then. (It is: this note.) +- **1.0.0** — productive streams as the codata face of higher-order; and a + star to steer by (claim level: speculation): the Escardó–Oliva selection + monad — selection functions compute optimal plays in sequential games, + and their infinite products run total searches over infinite spaces. If + the Function sort ever wants a strategy shape, that is the prior art. + (The reflexive cousin: game semantics interprets programming languages + *in* games — Hyland–Ong, Abramsky — so a language for games whose + functions are strategies would eat its own tail in the good way.) + +## References + +- D. A. Turner, *Total Functional Programming*, J.UCS 10(7), 2004 — the + stance itself: strong normalization plus codata, ⊥ refused. +- F. Honsell, M. Lenisa, *Conway Games, Algebraically and Coalgebraically*, + Log. Methods Comput. Sci. 7(3), 2011 — loopy Conway games as a final + coalgebra; the 0.3.8 theory. +- A. Abel, B. Pientka, D. Thibodeau, A. Setzer, *Copatterns: Programming + Infinite Structures by Observations*, POPL 2013 — outcome-as-observation + as a typing discipline. +- M. Escardó, P. Oliva, *Selection Functions, Bar Recursion and Backward + Induction*, Math. Struct. Comput. Sci. 20(2), 2010; and *What Sequential + Games, the Tychonoff Theorem and the Double-Negation Shift Have in + Common*, MSFP 2010 — the 1.0.0 temptation. + +Reading order for the incoming: Turner, then Honsell–Lenisa, then +Escardó–Oliva. diff --git a/ogdoad.pyi b/ogdoad.pyi index c31a90c..a0e23c6 100644 --- a/ogdoad.pyi +++ b/ogdoad.pyi @@ -9952,6 +9952,15 @@ class Game: """The surreal value of a number-valued game (`None` for non-numbers like `⋆`, `↑`, switches). """ + def numeric_norton_mean_temperature(self, *args: Any, **kwargs: Any) -> Any: + """Exact `(mean, temperature)` after Norton-multiplying `self` by `unit`, + without constructing the product; `None` unless `unit` is a positive + short-game number. + """ + def numeric_norton_regrade(self, *args: Any, **kwargs: Any) -> Any: + """Affine `(scale, shift)` for this positive numeric Norton unit, or `None` + when this game is nonnumeric/nonpositive. + """ @staticmethod def of(*args: Any, **kwargs: Any) -> Any: """A general game `{ left | right }` from explicit option lists.""" @@ -30189,6 +30198,7 @@ class WeylVersorReport: def simple_reflections_match_cartan(self) -> Any: ... @property def weyl_group_order(self) -> Any: ... + def display(self, *args: Any, **kwargs: Any) -> Any: ... def __repr__(self) -> builtins.str: ... class WittClass: diff --git a/src/clifford/AGENTS.md b/src/clifford/AGENTS.md index 29e8ae1..ec2c8f1 100644 --- a/src/clifford/AGENTS.md +++ b/src/clifford/AGENTS.md @@ -17,8 +17,9 @@ divided-power exponents, spinor/Dickson parities, and Frobenius subfield data. ## The engine (`engine.rs` + `engine/`) `engine.rs` is a thin hub (+ the engine's integration test suite: algebra -construction, the GA ops, Cayley, even subalgebra, exercised over the Ordinal/Surreal -backends). The associative-algebra core is split by concept under `engine/`; every +construction, the GA ops, even subalgebra, associativity, exercised over the +Ordinal/Surreal backends; the Cayley-transform test lives with its code in +`versor.rs`). The associative-algebra core is split by concept under `engine/`; every file there now carries its own `//!` module doc — read those for the full breakdown. The load-bearing facts worth knowing before opening a file: @@ -94,8 +95,9 @@ breakdown. The load-bearing facts worth knowing before opening a file: exact. `Cga::outer_join` is the CGA IPNS wedge join (infallible) — NOT to be confused with `CliffordAlgebra::meet`, the fallible regressive product (see "things that look like bugs"). -- **`spinor.rs`** — concrete left-ideal spinor matrices. Three paths, keyed on - `characteristic()` and whether the polar form `b` is diagonal: char-0 *orthogonal* +- **`spinor.rs`** — concrete left-ideal spinor matrices. Three underlying engines + (the general-bilinear case is a gauge-transport wrapper over the first two), keyed + on `characteristic()` and whether the polar form `b` is diagonal: char-0 *orthogonal* uses the `∏½(1+w)` idempotent search and matches the real-table classifier when it reaches a minimal ideal; char-0 *nonorthogonal* (`b ≠ 0`) first diagonalizes by congruence (tracking the transform), builds the ideal in the orthogonal basis, then @@ -132,8 +134,9 @@ Metric-free additive operations (`+`, `-`, unary `-`, `&` for exterior product) implemented as operators directly on `Multivector` — no algebra context required. Every metric-dependent operation (geometric product `mul`, `reverse`, contractions, dual, spinor norm, …) is a method on `CliffordAlgebra`, which provides the metric -as context. Use `a + b` / `a & b` for the metric-free ops; `alg.mul(&a, &b)` / -`alg.wedge(&a, &b)` (or the free wedge `alg.wedge(…)`) for metric-dependent ones. +as context. Use `a + b` / `a & b` for the metric-free ops; `alg.mul(&a, &b)` and friends for +metric-dependent ones (`&` and `alg.wedge` compute the same wedge — the operator +needs no metric, the method form is there for symmetry). Use `alg.pow(&v, k)` for repeated geometric multiplication — `^` is reserved for scalar power (`x ^ k: u128`), not multivector power. This mirrors the scalar layer: operators on the concrete type carry no extra context; diff --git a/src/forms/AGENTS.md b/src/forms/AGENTS.md index aadbbea..1ddb152 100644 --- a/src/forms/AGENTS.md +++ b/src/forms/AGENTS.md @@ -44,8 +44,9 @@ automorphism counts, node budgets. `usize` is for dimensions and matrix indices. element of an actual group/classifying set carrying a law (`WittClass`, `BrauerWallClass`, `Brauer2Class`, `BrauerClass`, `FqmWittClass`); `…Decomp` is a decomposition; `…Invariants` is a classifier's report record - (`ArfInvariants`, `BrownInvariants`, `CliffordInvariants`, `OddCharInvariants`, - `FiniteFieldInvariants`, `NikulinExistenceInvariants`, `SymplecticInvariants`); + (`ArfInvariants`, `BrownInvariants`, `CliffordInvariants`, + `RationalCliffordInvariants`, `OddCharInvariants`, `FiniteFieldInvariants`, + `NikulinExistenceInvariants`, `SymplecticInvariants`); `…Record` is a static catalogue record carrying no group law (`NiemeierRecord`, `KneserMassRecord`) — distinct from `…Class`, which is a group element with a law; `…Signature` stays for the literal mathematical signature; `…Isotropy` is a @@ -61,8 +62,9 @@ automorphism counts, node budgets. `usize` is for dimensions and matrix indices. glossary record type (`…Invariants`/`…Decomp`/`…Class`/`…Record`/`…Signature`/ `…Isotropy`/certificates, crate-wide — games and clifford included) carries `impl Display` + the inherent `display()` alias, render-pinned by at least one - exact-string test, with py `__repr__`s delegating to the core Display. Honesty - markers ride in the rendering (`Char2WittDecomp`'s complement-dependent flag, an + exact-string test, with py `__repr__`s delegating to the core Display. + Honesty markers ride in the rendering (`Char2WittDecomp`'s complement-dependent + flag, an incomplete `RelationSearchCertificate` says INCOMPLETE up front, `QuadricFit` renders `bias=n/a (degenerate)` when the count formula doesn't apply). New types follow this glossary. Leg dispatch: @@ -112,8 +114,11 @@ automorphism counts, node budgets. `usize` is for dimensions and matrix indices. - **`char0.rs`** — the char-0 Clifford classifier: Cl(p,q) → matrix algebra over ℝ/ℂ/ℍ via the 8-fold table (real-closed surreal/rational) and the 2-fold table (surcomplex). `classify_real(p,q,r)` / `classify_complex(n,r)` are the - bare-signature entry points (no metric needed); non-diagonal metrics are - diagonalized first. + bare-signature entry points (no metric needed); `classify_surreal` / + `classify_surcomplex` take metrics, and `classify_rational` returns the richer + `RationalCliffordInvariants` (dim, radical, discriminant, signature, plus a + per-place `RationalPlaceInvariant` Hasse vector — the `ClassifyForm` associated + `Class` for `Rational`). Non-diagonal metrics are diagonalized first. - **`oddchar/`** — odd-characteristic forms (re-exported flat): `field.rs` (`FiniteOddField` unifies Fp and Fpn square classes), `invariants.rs` (`classify_finite_odd`/`finite_odd_witt`/`discriminant_finite_odd`/ @@ -129,11 +134,13 @@ automorphism counts, node budgets. `usize` is for dimensions and matrix indices. **additive** mirror of `FiniteOddField`: carries `artin_schreier_class = Tr_{F_q/F₂}` instead of `is_square_value`, since in char 2 the multiplicative square class is trivial and the working datum is `F/℘(F) ≅ F₂`; impl for `Fp<2>`/`Fpn<2,N>`, - NOT `Nimber` — same boundary as `FiniteOddField`), `extraspecial.rs` (the - extraspecial 2-group `1→F₂→E→V→0` attached to a nonsingular `F₂` quadratic form, - with commutator `B`, squaring map `Q`, plus/minus type classified by the Arf bit, - and the finite Heisenberg/Pauli representation whose center acts by `-I` and whose - projective transvection intertwiners give the bounded Weil/metaplectic layer), + NOT `Nimber` — same boundary as `FiniteOddField`), `extraspecial.rs` + (`Extraspecial2Group`/`ExtraspecialElement` — the extraspecial 2-group + `1→F₂→E→V→0` attached to a nonsingular `F₂` quadratic form, with commutator `B`, + squaring map `Q`, plus/minus type classified by the Arf bit, and + `HeisenbergWeilRepresentation` — the finite Heisenberg/Pauli representation whose + center acts by `-I` and whose projective transvection intertwiners give the + bounded Weil/metaplectic layer), `brown.rs` (the **Brown invariant** `β ∈ ℤ/8` of a `ℤ/4`-valued quadratic refinement — the char-2 cell of the mod-8 spine, Bridge M: `brown_f2`/`double_f2` + `BrownInvariants`, computed by @@ -164,9 +171,9 @@ char-0 8-fold table, Bott, and `E₈` in `integral/`. checked group and ring operations; `try_mul` rejects Char2 because `W_q` is a module, not a ring. - **`witt/ring.rs`** — the Witt RING: `tensor_form`, Pfister forms, fundamental ideal - Iⁿ, the eₙ staircase (e0=dim, e1=disc, e2=Hasse). Stabilization per field (I²=0 over - F_q; infinite ℝ tower via `e_real`). DON'T claim Arf=e2 (char-2 indexing is Kato's, - pinned). + Iⁿ, the eₙ staircase (e0=dim, e1=disc, e2=Hasse; materialized as `EnStaircase` via + `e_staircase_finite_odd`). Stabilization per field (I²=0 over F_q; infinite ℝ tower + via `e_real`). DON'T claim Arf=e2 (char-2 indexing is Kato's, pinned). - **`witt/brauer_wall.rs`** — the Brauer–Wall group BW(F): `bw_class_real` (Bott index (q−p) mod 8 ⇒ BW(ℝ)=ℤ/8), `bw_class_complex` (ℤ/2), `bw_class_rational` (`RationalBrauerWallClass` over ℚ: dimension parity + signed discriminant + @@ -175,7 +182,9 @@ char-0 8-fold table, Bott, and `E₈` in `integral/`. the ungraded Clifford component represented by ramified `FunctionFieldPlace`s), `bw_class_finite_odd` (order-4 ≅ W(F_q)), `bw_class_nimber`, and façade dispatch for supported finite char-2 fields/windows (char-2 Arf/Witt class `ℤ/2`, - nonsingular metrics only). Law = graded_tensor/direct sum. + nonsingular metrics only). Law = graded_tensor/direct sum. The same file carries + the `F_q(t)` mirror of the next bullet's ungraded machinery: + `FunctionFieldBrauer2Class` with `hasse_brauer_class_ff`/`clifford_brauer_class_ff`. - **`witt/brauer_rational.rs`** — the **ungraded** rational 2-torsion Brauer class `Brauer2Class` (a set of ramified `Place`s, `add`/`local_invariant`/ `satisfies_reciprocity`/`quaternion`): `hasse_brauer_class` (the Hasse–Witt @@ -325,8 +334,8 @@ char-2 mirror, one shelf (`mod.rs` re-exports flat). nonsingular quadratic form lives here. - **`hermitian.rs`** — Hermitian forms, the involution sibling the symmetric leg never used. `HermitianForm` covers Surcomplex via `conj()`: conjugate-symmetric Gram, - unitary congruence diagonalize → real diagonal, signature (Sylvester, complete - invariant = U(p,q)); `from_skew` handles the skew-Hermitian case via mult by i. + unitary congruence diagonalize → real diagonal, `HermitianSignature` (Sylvester, + complete invariant = U(p,q)); `from_skew` handles the skew-Hermitian case via mult by i. `FiniteHermitianForm` covers finite fields of even prime-field degree using the middle Frobenius `x -> x^{p^k}` for `F_{p^{2k}}/F_{p^k}`; its complete invariant is `FiniteHermitianInvariants { rank, radical_dim, ... }`. This intentionally models diff --git a/src/forms/integral/AGENTS.md b/src/forms/integral/AGENTS.md index 7ffb01e..04f290c 100644 --- a/src/forms/integral/AGENTS.md +++ b/src/forms/integral/AGENTS.md @@ -20,8 +20,9 @@ unique rank-8 even unimodular lattice. Convention: **norm** `Q(x) = xᵀGx` (a rational diagonalization), `invariant_factors` (SNF → discriminant group `L#/L`), `level` (smallest `N` with `N·G⁻¹` even-integral, via the exact `Rational` inverse), `clifford_metric` (rational Clifford metric), `clifford_metric_f2` (even-lattice - mod-2 char-2 metric), `direct_sum`. Internal helpers `gcd_i128`, `lcm_i128`, - `bareiss_det`, `matvec`, `dot` are `pub(super)` for `geometry.rs`. + mod-2 char-2 metric), `direct_sum`. Integer gcd comes from `linalg::integer::gcd`; the internal + helpers `lcm_i128`, `bareiss_det`, `matvec`, `dot` are `pub(super)` for + `geometry.rs`. - **`lattice/geometry.rs`** — the positive-definite geometry: `short_vectors` (two-stage: an exact rational ellipsoid enumeration first for small boxes — up to `SHORT_VECTOR_EXACT_ENUM_LIMIT = 2_000_000` candidates via `short_vectors_exact_bounded` @@ -134,11 +135,11 @@ unique rank-8 even unimodular lattice. Convention: **norm** `Q(x) = xᵀGx` (a `NiemeierComponentKind` names the exceptional roots explicitly (`E6`/`E7`/`E8` variants, not a single `E(usize)`), and `coxeter_number`/`determinant`/ `root_lattice`/`root_count` all return `Option` uniformly — matching - `weyl_group_order` — instead of panicking out of domain. Substrate sharing keeps - the arithmetic deduplicated: integer gcd is `linalg::integer::gcd`/`gcd_u128`, - primality is `scalar::is_prime_u128`, prime-power-order detection is a shared - `is_prime_power`, and `checked_factorial`/`checked_pow2` are shared from the lattice - module (no per-file copies). Oracles: + `weyl_group_order` — instead of panicking out of domain. `checked_factorial`/ + `checked_pow2` are shared from the lattice module (no per-file copies; the wider + substrate — `linalg::integer::gcd`/`gcd_u128`, `scalar::is_prime_u128`, the shared + `is_prime_power` in `integral/mod.rs` — serves `kneser.rs`, `fqm_witt.rs`, and + `discriminant/form.rs`, not this file). Oracles: `glue^2 = det(R)`, anchor automorphism orders (Leech, `A_1^24`, `E_8^3`), `Σ 1/|Aut(N)| = mass_even_unimodular(24)`, and the exact weighted identity `(Σ theta_N/|Aut(N)|)/mass(24) = E12`. diff --git a/src/forms/integral/niemeier.rs b/src/forms/integral/niemeier.rs index b6edff9..6f7e7ad 100644 --- a/src/forms/integral/niemeier.rs +++ b/src/forms/integral/niemeier.rs @@ -96,6 +96,20 @@ impl NiemeierComponentKind { } } +impl fmt::Display for NiemeierComponentKind { + /// The Dynkin label (`A_2`, `D_4`, `E_8`), matching the component notation + /// inside the catalogue labels (`E_8^3`). + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + NiemeierComponentKind::A(n) => write!(f, "A_{n}"), + NiemeierComponentKind::D(n) => write!(f, "D_{n}"), + NiemeierComponentKind::E6 => write!(f, "E_6"), + NiemeierComponentKind::E7 => write!(f, "E_7"), + NiemeierComponentKind::E8 => write!(f, "E_8"), + } + } +} + /// A repeated irreducible component of a Niemeier root system. #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct NiemeierRootComponent { diff --git a/src/forms/integral/weyl_versors.rs b/src/forms/integral/weyl_versors.rs index 5b5b68b..a8cd3c2 100644 --- a/src/forms/integral/weyl_versors.rs +++ b/src/forms/integral/weyl_versors.rs @@ -17,6 +17,7 @@ use super::{IntegralForm, NiemeierComponentKind}; use crate::clifford::{determinant, versor_grade_parity, CliffordAlgebra, LinearMap, Multivector}; use crate::scalar::{Rational, Scalar}; +use std::fmt; /// The Clifford/Weyl report for one irreducible ADE component. #[derive(Clone, Debug, PartialEq, Eq)] @@ -32,6 +33,34 @@ pub struct WeylVersorInvariants { pub coxeter_versor_grade_parity: Option, } +impl WeylVersorInvariants { + /// `display()` alias kept for Python callers. + pub fn display(&self) -> String { + self.to_string() + } +} + +impl fmt::Display for WeylVersorInvariants { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let parity = self + .coxeter_versor_grade_parity + .map_or_else(|| "none".to_string(), |p| p.to_string()); + write!( + f, + "WeylVersorInvariants(kind={}, rank={}, weyl_group_order={}, coxeter_number={}, coxeter_versor_order={}, coxeter_order_matches={}, simple_reflections_match_cartan={}, simple_reflection_determinants_are_minus_one={}, coxeter_versor_grade_parity={})", + self.kind, + self.rank, + self.weyl_group_order, + self.coxeter_number, + self.coxeter_versor_order, + self.coxeter_order_matches, + self.simple_reflections_match_cartan, + self.simple_reflection_determinants_are_minus_one, + parity, + ) + } +} + fn r(n: i128) -> Rational { Rational::from_int(n) } @@ -207,6 +236,20 @@ mod tests { assert_eq!(report.coxeter_versor_grade_parity, Some(0)); } + #[test] + fn display_renders_the_full_report() { + let report = weyl_versor_report(NiemeierComponentKind::A(2)).unwrap(); + assert_eq!( + report.to_string(), + "WeylVersorInvariants(kind=A_2, rank=2, weyl_group_order=6, \ + coxeter_number=3, coxeter_versor_order=3, coxeter_order_matches=true, \ + simple_reflections_match_cartan=true, \ + simple_reflection_determinants_are_minus_one=true, \ + coxeter_versor_grade_parity=0)" + ); + assert_eq!(report.display(), report.to_string()); + } + #[test] fn d4_report_uses_weyl_order_not_full_diagram_automorphisms() { let report = weyl_versor_report(NiemeierComponentKind::D(4)).unwrap(); diff --git a/src/games/AGENTS.md b/src/games/AGENTS.md index 5472a68..43244ce 100644 --- a/src/games/AGENTS.md +++ b/src/games/AGENTS.md @@ -12,8 +12,8 @@ lives on the scalar backends and not on all games. `mod.rs` re-exports every module below flat. Fixed-width game payloads use `u128`/`i128`: finite nim heaps, octal codes, Grundy -values, scoring integers, and quotient counters. `usize` is for graph nodes, option -indices, and collection lengths. +values, and scoring integers. `usize` is for graph nodes, option indices, collection +lengths, and the `Quotient` class machinery (indices, not payloads). ## Values & arithmetic @@ -60,8 +60,16 @@ indices, and collection lengths. - **`thermography.rs`** — the thermograph of a short game: left/right scaffolds, stops, cooling (`cooled_stops`), temperature, and mean (mast) value. - **`heating.rs`** — game-valued heating, Berlekamp overheating `int_s^t G`, and - Norton multiplication `G.U` by a positive unit. Infrastructure only: it does not - assert the associated-graded product asked for in `docs/OPEN.md` `under`. + Norton multiplication `G.U` by a positive unit. The `under` pass proved the exact + positive-dyadic regrading: for `u=m/2^k`, `δ=2^-k`, numeric Norton multiplication + induces `gr_τ -> gr_{uτ+u-δ}`; `numeric_norton_regrade` and + `numeric_norton_mean_temperature` compute it without building the product, and + `numeric_norton_composition_defect` gives the exact nonnegative failure of the + dyadic action law. The completed separation theorem is stronger: `gr_0` retains + the nonzero order-2 class `[*]`, so no faithful unital `ℤ[1/2]`-algebra can retain + the needed residue at all. The game side is a filtered abelian group with external + numeric transports, not the Newton side's associated graded ring; nonnumeric + units can fail descent (the explicit unit `↑` is the minimal witness). - **`atomic_weight.rs`** — atomic weight of ALL-SMALL games (finishes thermography): the two-ahead rule (Siegel Constructive Atomic Weight; Larsson–Nowakowski arXiv:2007.03949 Thm 10). `aw` IS additive on all-small games. @@ -153,9 +161,9 @@ indices, and collection lengths. ## Things that look like bugs but are not (games layer) - **`Game`, `LoopyValue`, `NumberGame`, and `NimberGame` `impl Display`** — that is - the canonical render now. The old `display()`/`name()` inherent methods are retained - as thin aliases over `Display`, so existing callers keep working; new code can just - `{}`-format. + the canonical render now. `Game::display()` and `LoopyValue::name()` survive as thin + aliases over `Display` for existing callers; `NumberGame`/`NimberGame` never had + inherent render methods. New code can just `{}`-format. - **`Game::canonical_string` canonicalizes; `structural_string` does not.** `structural_string` is an order-independent fingerprint of the tree *as given* (so `(↑−↑).structural_string() ≠ 0`); `canonical_string` reduces first, so it *is* a diff --git a/src/games/heating.rs b/src/games/heating.rs index 146e21f..b7d5fca 100644 --- a/src/games/heating.rs +++ b/src/games/heating.rs @@ -8,13 +8,24 @@ //! `int_s^t G` uses Norton multiplication on integer leaves and shifts hot //! options by `t`. //! -//! Boundary: this module deliberately does **not** assert that overheating gives -//! the temperature filtration an associated-graded product. That remains the -//! `under` open problem. +//! The unrestricted associated-graded hope is false: a nonnumeric unit can turn +//! a hidden cold-number coefficient into a leading residue. Positive **numeric** +//! units do survive individually, however. [`numeric_norton_regrade`] and +//! [`numeric_norton_mean_temperature`] encode their exact affine regrading without +//! materializing the (potentially much larger) Norton product. +//! +//! They do **not** form a multiplicative scalar action. The exact obstruction is +//! [`numeric_norton_composition_defect`]: applying the `u` transport and then the +//! `v` transport differs in degree from the `uv` transport by a nonnegative dyadic +//! defect that is often positive. Together with the nonzero 2-torsion class of +//! `*` in the temperature-zero residue, this closes the one-ring reading of +//! `under`: the surviving connection is a filtered shadow, not a faithful +//! full-dyadic Newton-style graded ring. use crate::games::partizan::integer_value; use crate::games::Game; -use crate::scalar::{Rational, Surreal}; +use crate::scalar::{Rational, Scalar, Surreal}; +use std::cmp::Ordering; /// True iff `g > 0` in the short-game order. pub fn is_positive_game(g: &Game) -> bool { @@ -27,6 +38,112 @@ pub fn integer_game_value(g: &Game) -> Option { integer_value(g) } +/// The affine temperature regrading `(scale, shift)` for a positive numeric +/// Norton unit. +/// +/// Every short-game number is dyadic. Write the positive unit as +/// `u = m / 2^k` in lowest terms, put `delta = 2^-k` (and `delta = 1` when +/// `k = 0`), and set `a = u - delta`. Then every non-number `G` in the +/// thermographic domain satisfies +/// +/// ```text +/// mean(G.u) = u * mean(G) +/// temp(G.u) = u * temp(G) + a. +/// ``` +/// +/// Thus Norton multiplication by `u` sends the temperature layer `tau` to +/// `u*tau + a` for `tau >= 0`. The cold-number branch is strictly lower than `a`; see +/// [`numeric_norton_mean_temperature`] for its exact formula. Returns `None` +/// for nonnumeric or nonpositive units. +pub fn numeric_norton_regrade(unit: &Game) -> Option<(Rational, Rational)> { + if !is_positive_game(unit) { + return None; + } + let scale = unit.number_value()?.as_rational()?; + let mesh = Rational::new(1, scale.denom()); + let shift = scale.sub(&mesh); + Some((scale, shift)) +} + +/// The exact degree defect in composing two positive numeric Norton transports. +/// +/// Apply `first_unit = u` and then `second_unit = v`. If +/// `delta_x = 1 / denominator(x)` (with `delta_x = 1` for an integer), the +/// individual degree maps on nonnumeric temperature layers are +/// +/// ```text +/// r_x(tau) = x*tau + x - delta_x. +/// ``` +/// +/// Their composite and the transport by the ordinary dyadic product differ by +/// +/// ```text +/// r_v(r_u(tau)) - r_(uv)(tau) +/// = v*(1 - delta_u) - delta_v + delta_(uv) >= 0. +/// ``` +/// +/// The defect is independent of `tau`. It can be positive: for `u = 1/2` and +/// `v = 2` it is `1`, so `A_2 A_(1/2)(*)` has temperature `1` while +/// `A_1(*) = *` has temperature `0`. Consequently the numeric Norton transports +/// cannot be the scalar action of an associative graded algebra whose dyadic +/// coefficients multiply ordinarily. Returns `None` when either unit is not a +/// positive short-game number. +pub fn numeric_norton_composition_defect( + first_unit: &Game, + second_unit: &Game, +) -> Option { + let (first_scale, first_shift) = numeric_norton_regrade(first_unit)?; + let (second_scale, second_shift) = numeric_norton_regrade(second_unit)?; + let product = first_scale.mul(&second_scale); + let product_shift = product.sub(&Rational::new(1, product.denom())); + Some( + second_scale + .mul(&first_shift) + .add(&second_shift) + .sub(&product_shift), + ) +} + +/// Compute `(mean, temperature)` of `G.u` for a positive numeric unit `u` +/// without constructing the Norton product. +/// +/// For non-numbers this applies the affine regrading returned by +/// [`numeric_norton_regrade`]. If `G` is a number with canonical dyadic mesh +/// `epsilon = 1 / denominator(G)`, its Norton image is either still a number or +/// a lower hot residue: +/// +/// ```text +/// temp(G.u) = -1 if a - u*epsilon < 0, +/// a - u*epsilon otherwise, +/// ``` +/// +/// where `a` is the regrading shift. In particular every cold number maps +/// strictly below `a`, which is the missing fact needed for numeric Norton +/// multiplication to descend to the temperature associated graded. Returns +/// `None` when `unit` is not a positive number or `G` lies outside ordinary +/// thermography's domain. +pub fn numeric_norton_mean_temperature(g: &Game, unit: &Game) -> Option<(Rational, Rational)> { + let g = g.canonical(); + let (scale, shift) = numeric_norton_regrade(unit)?; + let input_mean = crate::games::thermography::mean_value(&g)?; + let output_mean = scale.mul(&input_mean); + + let output_temperature = if let Some(value) = g.number_value() { + let value = value.as_rational()?; + let epsilon = Rational::new(1, value.denom()); + let candidate = shift.sub(&scale.mul(&epsilon)); + if candidate.sign() == Ordering::Less { + Rational::from_int(-1) + } else { + candidate + } + } else { + let input_temperature = crate::games::thermography::temperature(&g)?; + scale.mul(&input_temperature).add(&shift) + }; + Some((output_mean, output_temperature)) +} + /// Heat a game by a dyadic rational temperature. /// /// Numbers are fixed; non-number options are recursively shifted as @@ -147,16 +264,52 @@ mod tests { use crate::games::atomic_weight_int; use crate::games::piecewise::req; use crate::games::thermography::{mean_value, temperature}; + use std::collections::BTreeMap; fn int(n: i128) -> Rational { Rational::from(n) } + fn dyadic(n: i128, d: i128) -> Game { + Game::from_surreal(&Surreal::from_rational(Rational::new(n, d))).unwrap() + } + fn assert_value_eq(a: &Game, b: &Game) { assert!(a.eq(b), "{} != {}", a.display(), b.display()); assert!(a.canonical().structural_eq(&b.canonical())); } + fn day_two_values() -> Vec { + let day_one = [ + Game::zero(), + Game::integer(1), + Game::integer(-1), + Game::star(), + ]; + let mut values = BTreeMap::new(); + for left_mask in 0u128..(1 << day_one.len()) { + for right_mask in 0u128..(1 << day_one.len()) { + let left = day_one + .iter() + .enumerate() + .filter(|(i, _)| left_mask & (1 << i) != 0) + .map(|(_, g)| g.clone()) + .collect(); + let right = day_one + .iter() + .enumerate() + .filter(|(i, _)| right_mask & (1 << i) != 0) + .map(|(_, g)| g.clone()) + .collect(); + let game = Game::new(left, right).canonical(); + values.entry(game.display()).or_insert(game); + } + } + let values: Vec = values.into_values().collect(); + assert_eq!(values.len(), 22); + values + } + #[test] fn heating_fixes_numbers_and_increases_switch_temperature() { let two = int(2); @@ -262,6 +415,268 @@ mod tests { assert!(req(&mean_value(&product).unwrap(), &int(2))); } + #[test] + fn positive_numeric_units_have_the_exact_affine_thermic_regrade() { + let star2 = Game::nim_heap(2); + let nested = Game::new(vec![Game::integer(3)], vec![Game::switch(1, -1)]); + let mut games = day_two_values(); + games.extend([ + Game::integer(-2), + dyadic(-3, 4), + dyadic(1, 4), + dyadic(1, 2), + dyadic(3, 4), + Game::star(), + star2, + Game::up(), + Game::up().neg(), + Game::switch(1, -1), + Game::switch(3, -1), + nested, + ]); + let units = [ + dyadic(1, 4), + dyadic(1, 2), + dyadic(3, 4), + Game::integer(1), + dyadic(5, 4), + dyadic(3, 2), + Game::integer(2), + Game::integer(3), + ]; + + for unit in units { + let (scale, shift) = numeric_norton_regrade(&unit).unwrap(); + assert!(scale.sign() == Ordering::Greater); + assert!(shift.sign() != Ordering::Less); + for g in &games { + let product = norton_multiply(g, &unit).unwrap(); + let (predicted_mean, predicted_temperature) = + numeric_norton_mean_temperature(g, &unit).unwrap(); + assert!( + req(&mean_value(&product).unwrap(), &predicted_mean), + "mean regrade failed for G={} and u={}", + g.display(), + scale + ); + assert!( + req(&temperature(&product).unwrap(), &predicted_temperature), + "temperature regrade failed for G={} and u={} (shift {})", + g.display(), + scale, + shift + ); + } + } + + assert!(numeric_norton_regrade(&Game::up()).is_none()); + assert!(numeric_norton_regrade(&Game::zero()).is_none()); + assert!(numeric_norton_regrade(&Game::integer(-1)).is_none()); + } + + #[test] + fn numeric_images_of_numbers_pin_the_lower_temperature_lemma() { + let numbers = [ + dyadic(1, 8), + dyadic(1, 4), + dyadic(1, 2), + dyadic(3, 4), + dyadic(5, 8), + Game::integer(2), + ]; + let units = [ + dyadic(1, 4), + dyadic(1, 2), + Game::integer(1), + dyadic(5, 4), + dyadic(3, 2), + Game::integer(2), + Game::integer(3), + ]; + for unit in units { + let (_, shift) = numeric_norton_regrade(&unit).unwrap(); + for number in &numbers { + let product = norton_multiply(number, &unit).unwrap(); + let (_, predicted_temperature) = + numeric_norton_mean_temperature(number, &unit).unwrap(); + assert!(req(&temperature(&product).unwrap(), &predicted_temperature)); + assert!( + predicted_temperature.cmp(&shift) == Ordering::Less, + "numeric image did not stay below shift for x={}, u={}", + number.display(), + unit.display() + ); + } + } + + // The load-bearing subtlety: numeric images need not remain numbers. + let half_times_two = norton_multiply(&dyadic(1, 2), &Game::integer(2)).unwrap(); + assert!(!half_times_two.is_number()); + assert_value_eq(&half_times_two, &Game::integer(1).add(&Game::star())); + assert!(req(&temperature(&half_times_two).unwrap(), &int(0))); + } + + #[test] + fn numeric_norton_is_the_matching_berlekamp_overheating() { + let games = [ + dyadic(1, 4), + Game::star(), + Game::up(), + Game::switch(1, -1), + Game::new(vec![Game::integer(3)], vec![Game::switch(1, -1)]), + ]; + let units = [dyadic(1, 2), dyadic(3, 4), dyadic(3, 2), Game::integer(2)]; + for unit in units { + let (_, shift) = numeric_norton_regrade(&unit).unwrap(); + let shift = dyadic(shift.numer(), shift.denom()); + for game in &games { + assert_value_eq( + &norton_multiply(game, &unit).unwrap(), + &overheat(game, &unit, &shift).unwrap(), + ); + } + } + } + + #[test] + fn numeric_norton_has_the_exact_composition_defect() { + // The theorem is degree-level, so test it on several nonnumeric layers. + let games = [Game::star(), Game::up(), Game::switch(1, -1)]; + let cases = [ + (dyadic(1, 2), Game::integer(2), int(1)), + (Game::integer(2), dyadic(1, 2), Rational::new(1, 2)), + (Game::integer(3), dyadic(1, 2), int(0)), + (dyadic(1, 2), dyadic(1, 4), int(0)), + (dyadic(3, 2), dyadic(3, 2), Rational::new(1, 2)), + ]; + + for (first, second, expected_defect) in cases { + let defect = numeric_norton_composition_defect(&first, &second).unwrap(); + assert!(req(&defect, &expected_defect)); + assert!(defect.sign() != Ordering::Less); + + let first_value = first.number_value().unwrap().as_rational().unwrap(); + let second_value = second.number_value().unwrap().as_rational().unwrap(); + let product_value = first_value.mul(&second_value); + let product_unit = dyadic(product_value.numer(), product_value.denom()); + for game in &games { + let composite = + norton_multiply(&norton_multiply(game, &first).unwrap(), &second).unwrap(); + let direct = norton_multiply(game, &product_unit).unwrap(); + let actual_defect = temperature(&composite) + .unwrap() + .sub(&temperature(&direct).unwrap()); + assert!( + req(&actual_defect, &defect), + "composition defect failed for G={}, u={}, v={}", + game.display(), + first_value, + second_value + ); + assert!(req( + &mean_value(&composite).unwrap(), + &mean_value(&direct).unwrap() + )); + } + } + + assert!(numeric_norton_composition_defect(&Game::up(), &Game::integer(2)).is_none()); + assert!(numeric_norton_composition_defect(&Game::integer(1), &Game::zero()).is_none()); + } + + #[test] + fn bounded_day_three_singleton_options_obey_numeric_regrade() { + let day_two = day_two_values(); + let mut candidates = BTreeMap::new(); + for left in std::iter::once(None).chain(day_two.iter().map(Some)) { + for right in std::iter::once(None).chain(day_two.iter().map(Some)) { + let game = Game::new( + left.into_iter().cloned().collect(), + right.into_iter().cloned().collect(), + ) + .canonical(); + candidates.entry(game.display()).or_insert(game); + } + } + let units = [dyadic(3, 4), dyadic(3, 2), Game::integer(2)]; + let mut checked = 0usize; + for game in candidates.into_values() { + if mean_value(&game).is_none() { + continue; + } + for unit in &units { + let product = norton_multiply(&game, unit).unwrap(); + let Some(actual_mean) = mean_value(&product) else { + continue; + }; + let actual_temperature = temperature(&product).unwrap(); + let (predicted_mean, predicted_temperature) = + numeric_norton_mean_temperature(&game, unit).unwrap(); + assert!(req(&actual_mean, &predicted_mean)); + assert!(req(&actual_temperature, &predicted_temperature)); + checked += 1; + } + } + assert!( + checked > 300, + "bounded census was unexpectedly small: {checked}" + ); + } + + #[test] + fn numeric_norton_units_descend_to_temperature_layers() { + // Each pair differs by the cold number 1/2, including the tau=0 + // all-small layer and two genuinely hot layers. The cold image need + // not remain a number, but the exact formula keeps it strictly below + // the affine output layer. + let half = dyadic(1, 2); + let representatives = [ + (Game::star(), Game::star().add(&half), int(0)), + (Game::switch(1, -1), Game::switch(1, -1).add(&half), int(1)), + (Game::switch(3, -1), Game::switch(3, -1).add(&half), int(2)), + ]; + let units = [dyadic(1, 2), dyadic(3, 4), dyadic(3, 2), Game::integer(2)]; + + for unit in units { + let (scale, shift) = numeric_norton_regrade(&unit).unwrap(); + for (g, h, tau) in &representatives { + let input_delta = g.add(&h.neg()); + assert!(temperature(&input_delta).unwrap().cmp(tau) == Ordering::Less); + + let output_layer = scale.mul(tau).add(&shift); + let output_delta = norton_multiply(g, &unit) + .unwrap() + .add(&norton_multiply(h, &unit).unwrap().neg()); + assert!( + temperature(&output_delta).unwrap().cmp(&output_layer) == Ordering::Less, + "numeric Norton descent failed for tau={}, u={}", + tau, + scale + ); + } + } + } + + #[test] + fn numeric_norton_is_additive_on_bounded_pairs() { + // Norton linearity is standard CGT; keep a source-level sentinel because + // it is the algebraic step that turns the thermic formula into quotient + // descent rather than a representative-by-representative coincidence. + let games = [Game::star(), Game::up(), Game::switch(1, -1)]; + let units = [dyadic(3, 4), Game::integer(2)]; + for unit in units { + for g in &games { + for h in &games { + let sum_product = norton_multiply(&g.add(h), &unit).unwrap(); + let product_sum = norton_multiply(g, &unit) + .unwrap() + .add(&norton_multiply(h, &unit).unwrap()); + assert_value_eq(&sum_product, &product_sum); + } + } + } + } + #[test] fn berlekamp_overheating_uses_lower_unit_on_integer_leaves() { let g = Game::switch(1, -1); diff --git a/src/linalg/AGENTS.md b/src/linalg/AGENTS.md index 2759eaa..3c22abe 100644 --- a/src/linalg/AGENTS.md +++ b/src/linalg/AGENTS.md @@ -24,6 +24,10 @@ solver data on the repo-wide width contract. by the game exterior algebra's lattice quotient (`games/game_exterior/`). - `gcd`/`gcd_u128` — the crate's one integer gcd, exported here beside `ext_gcd` (the integral/Niemeier layers consume these rather than carrying per-file copies). + - `prime_factors` — the crate's one integer factorizer (distinct primes by trial + division; membership, not multiplicity), consumed + by `forms/integral/fqm_witt.rs`, `forms/integral/genus.rs`, and + `scalar/finite_field/fpn.rs`. - `ext_gcd` (Bézout `a·x + b·y = gcd`) and `smith_normal_form` (invariant factors `d₀ | d₁ | …` via unimodular `ext_gcd`-based row/column combines; `∏ dᵢ = |det|`, cokernel `ℤⁿ/Mℤⁿ ≅ ⨁ ℤ/dᵢ`). Used by the integral-lattice layer: diff --git a/src/py/AGENTS.md b/src/py/AGENTS.md index 0636e8d..b20cde0 100644 --- a/src/py/AGENTS.md +++ b/src/py/AGENTS.md @@ -51,7 +51,8 @@ policy; consult `catalog.rs` for the actual instance set when you need it. char-0 scalar world with a matching MV carrier. MV methods cover the full GA suite (clifford_conjugate, scalar_product, commutator, anticommutator, undual, meet, is_blade, blade_subspace, factor_blade, cayley, cayley_inverse, spinor_norm, versor_grade_parity, - classify_versor → `VersorInvariants`, plus raw `(blade_mask, coeff)` terms, `grade_part`, + classify_versor → `VersorClass` (the pyclass name; it mirrors the core + `VersorInvariants` Display), plus raw `(blade_mask, coeff)` terms, `grade_part`, `versor_inverse`, `multivector_inverse`). Algebra methods add trace/char_poly/determinant/exterior_power_trace/apply_outermorphism/inverse_outermorphism, the typed `LinearMap` pyclass, fixed-dispatch Frobenius/Galois map constructors @@ -86,7 +87,11 @@ policy; consult `catalog.rs` for the actual instance set when you need it. (`fit_f2_quadratic`/`QuadricFit`), the trace/Gold-form helpers (`trace_twisted_form`, `trace_form_arf`, `gold_form_arf`, `gold_form`), and the integral-lattice layer (`IntegralForm`, the ADE constructors `a_n`/`d_n`/`e_6`/`e_7`/`e_8`/`d16_plus`, - `Genus`/`ScaleSymbol`, mass/automorphism constants, `BinaryCode`/Constructions A/B/D + `Genus`/`ScaleSymbol`, mass/automorphism constants, the Kneser-neighbor surface + (`KneserNeighbor`/`KneserMassClass`/`KneserMassReport`, `kneser_neighbor`/ + `kneser_neighbors` both as `IntegralForm` methods and module functions), the + ADE-versor bridge `weyl_versor_report` → `WeylVersorReport`, + `BinaryCode`/Constructions A/B/D including Reed-Muller `BW16`, the Clifford-side `BW16` certificate/report and Clifford/BRW order constants, odd-prime `PrimeCode`/ternary Golay Construction A, theta + modular q-expansion helpers `eisenstein_e4`/`eisenstein_e6`/`delta`/`as_modular_form`, @@ -98,12 +103,17 @@ policy; consult `catalog.rs` for the actual instance set when you need it. coin-turning/Tartan probes; `grundy_graph`/`grundy`/`mex`; the kernel surface (`outcomes`/`p_positions`/`scoring_values`, typed `Outcome`, `ScoreInterval`); the misère/octal surface (`misere_quotient`, `Quotient`, `AbstractGame`, octal helpers); - and the loopy engine (`LoopyGraph`, `LoopyPartizanGraph`, `LoopyWinner`, + the loopy engine (`LoopyGraph`, `LoopyPartizanGraph`, `LoopyWinner`, `LoopyPartizanOutcome`, `LoopyNimber`, `loopy_nim_values_certified`/ `LoopyNimCertificate`, `loopy_decision_sets`/`loopy_quadric_probe`, the - `LoopyValue` catalogue + typed `PartizanOutcome` projection). + `LoopyValue` catalogue + typed `PartizanOutcome` projection); and the lexicode + surface (`NimLexicode`, `lexicode`/`lexicode_naive`/`lexicode_bounded`, + `nim_lexicode_naive`/`nim_lexicode_naive_bounded`, the + `LEXICODE_NODE_BUDGET`/`NIM_LEXICODE_NODE_BUDGET` constants). The games carry Python arithmetic/order operators, heating / Norton multiplication / - overheating, the thermograph + tropical-mirror + atomic-weight calculus, and the exact + overheating (including the numeric-descent pair `numeric_norton_regrade`/ + `numeric_norton_mean_temperature` from the `under` closure), the thermograph + + tropical-mirror + atomic-weight calculus, and the exact `Pl`/`Thermograph` wall API. Callback-backed Rust-name variants (`grundy`/`try_misere_is_n`/`loopy_quadric_probe`/…) accept a Python move-generator. @@ -158,8 +168,9 @@ runtime type is bound. What stays Rust-only is structural, not a backlog: grundy `E_ExpSort` hint), `<<`/`>>` left/right contraction, `~` reverse, `/` divide (scalar or versor; `Integer` uses exact Euclidean division), `**` power, `+`/`-`, `==`, `Integer.__mod__` for - Euclidean remainder, `%` on the v0.1.1 polynomial classes, and `@` on the - v0.1.1 polynomial/ratfunc classes for eval/compose. + Euclidean remainder, `%` on the polynomial classes, and `@` on the + polynomial/ratfunc classes for eval/compose (both from the grundy-spec 0.1.1 + wave — a language-changelog tag, not a crate version). Scalar power: `x ^ k` (integer RHS) on total-product backends; Ordinal: `nim_pow` method. **Rust `&` binds looser than `+`/`*` in both Python and Rust — parenthesize.** - The smoke test is `demo.py` (rebuild via `maturin develop` first); add a section diff --git a/src/py/forms.rs b/src/py/forms.rs index 8681979..6b3ad54 100644 --- a/src/py/forms.rs +++ b/src/py/forms.rs @@ -5640,21 +5640,11 @@ struct PyWeylVersorReport { inner: crate::forms::WeylVersorInvariants, } -fn weyl_kind_label(kind: crate::forms::NiemeierComponentKind) -> String { - match kind { - crate::forms::NiemeierComponentKind::A(n) => format!("A_{n}"), - crate::forms::NiemeierComponentKind::D(n) => format!("D_{n}"), - crate::forms::NiemeierComponentKind::E6 => "E_6".to_string(), - crate::forms::NiemeierComponentKind::E7 => "E_7".to_string(), - crate::forms::NiemeierComponentKind::E8 => "E_8".to_string(), - } -} - #[pymethods] impl PyWeylVersorReport { #[getter] fn kind(&self) -> String { - weyl_kind_label(self.inner.kind) + self.inner.kind.to_string() } #[getter] fn rank(&self) -> usize { @@ -5688,13 +5678,13 @@ impl PyWeylVersorReport { fn coxeter_versor_grade_parity(&self) -> Option { self.inner.coxeter_versor_grade_parity } + fn display(&self) -> String { + self.inner + .display() + .replacen("WeylVersorInvariants", "WeylVersorReport", 1) + } fn __repr__(&self) -> String { - format!( - "WeylVersorReport(kind={}, weyl_group_order={}, coxeter_order={:?})", - weyl_kind_label(self.inner.kind), - self.inner.weyl_group_order, - self.inner.coxeter_versor_order - ) + self.display() } } diff --git a/src/py/games.rs b/src/py/games.rs index 042d2c5..507cd8f 100644 --- a/src/py/games.rs +++ b/src/py/games.rs @@ -1381,6 +1381,19 @@ impl PyGame { fn norton_multiply(&self, unit: &PyGame) -> Option { crate::games::norton_multiply(&self.inner, &unit.inner).map(|inner| PyGame { inner }) } + /// Affine `(scale, shift)` for this positive numeric Norton unit, or `None` + /// when this game is nonnumeric/nonpositive. + fn numeric_norton_regrade(&self) -> Option<(PyRational, PyRational)> { + crate::games::numeric_norton_regrade(&self.inner) + .map(|(scale, shift)| (wrap_rational(scale), wrap_rational(shift))) + } + /// Exact `(mean, temperature)` after Norton-multiplying `self` by `unit`, + /// without constructing the product; `None` unless `unit` is a positive + /// short-game number. + fn numeric_norton_mean_temperature(&self, unit: &PyGame) -> Option<(PyRational, PyRational)> { + crate::games::numeric_norton_mean_temperature(&self.inner, &unit.inner) + .map(|(mean, temperature)| (wrap_rational(mean), wrap_rational(temperature))) + } /// Berlekamp overheating `int_s^t G`; `None` if `s` is not positive. fn overheat(&self, s: &PyGame, t: &PyGame) -> Option { crate::games::overheat(&self.inner, &s.inner, &t.inner).map(|inner| PyGame { inner }) diff --git a/src/scalar/AGENTS.md b/src/scalar/AGENTS.md index e7584e1..1a989fc 100644 --- a/src/scalar/AGENTS.md +++ b/src/scalar/AGENTS.md @@ -40,7 +40,7 @@ and const-generic sizes that are inherently indices. - **`poly.rs`** — `Poly`, the shared dense-univariate polynomial ring `S[t]` (low-degree-first, trimmed). The crate's one polynomial primitive: `Gauss` and `RationalFunction` store `num/den` as `Poly` pairs, and the function-field place - layer (`forms/function_field.rs`) uses its `divrem`/`gcd`/`pow_mod`. As `S[t]` it + layer (`forms/local_global/function_field*.rs`) uses its `divrem`/`gcd`/`pow_mod`. As `S[t]` it is the **ring of integers** of `S(t)`, so it impls `Scalar` + `HasFractionField` (Frac = `RationalFunction`); its units are the nonzero constants, so `inv` is partial. `Poly::t()` is the indeterminate constructor (matching the `t` it Displays @@ -244,9 +244,9 @@ the project's central symmetries. - **`mod.rs`** — the `FiniteField` TRAIT: the shared Galois engine (degree, conjugates, min_poly_monic, relative_trace/_norm, multiplicative_order, is_primitive, - discrete_log) as default methods. An impl supplies only `frobenius`, integer `pow`, - `ext_degree`, `group_order`, `group_order_factors`. nimber + fpn both impl it — one - verified algorithm, two backends. + discrete_log) as default methods. An impl supplies only `frobenius`, `ext_degree`, + `group_order`, `group_order_factors` (integer `pow` has a default an impl may + override). nimber + fpn both impl it — one verified algorithm, two backends. The per-backend const-generic validators (formerly the separate `assert_prime_modulus`/`assert_supported_field`/`assert_supported_ring`/ `assert_supported_precision` guards across `Fp`/`Fpn`/`WittVec`/`Zp`/`Qp`/…) are @@ -264,9 +264,9 @@ the project's central symmetries. flat: `mod.rs` (wrapper + Scalar), `arithmetic.rs` (`nim_add`=XOR; `nim_mul` via Fermat-power recursion; `nim_square`/`nim_sqrt`/`nim_inv`), `artin_schreier.rs` (`nim_trace` + y²+y=c solver), `galois.rs` (impl FiniteField, with Pohlig–Hellman + - BSGS overrides for `is_primitive`/`discrete_log`). `Nimber::fuzzy` is the - game-value incomparability predicate: exactly `self != other`; do not turn that - into `PartialOrd`. + BSGS overrides for `is_primitive`/`discrete_log`), plus the layer's own `tests.rs`. + `Nimber::fuzzy` is the game-value incomparability predicate: exactly + `self != other`; do not turn that into `PartialOrd`. - **`wittvec.rs`** — `WittVec`: Witt vectors W_N(F_q) as the truncated unramified ring (Z/p^N)[t]/(f̃). The char-p analogue of Z_p; its field of fractions is `small/qq.rs`. @@ -300,10 +300,10 @@ Orthogonal to the place table: a 2×2 of (algebraic|transcendental) × `Adele` is a finite-precision restricted-product model over ℚ, with `LocalQp` as the runtime-prime p-adic cell. Useful for product-formula / Hilbert-reciprocity / -Hasse–Minkowski experiments in `forms/adelic.rs`; not an exact infinite-memory adele. -`LocalQp` (runtime prime, NOT const-generic) deliberately does NOT impl `Scalar` — -its world `(p,k)` is only known at construction — so it is the runtime-only analogue -of `forms`'s runtime `OddFiniteFieldForm`. +Hasse–Minkowski experiments in `forms/local_global/adelic.rs`; not an exact +infinite-memory adele. `LocalQp` (runtime prime, NOT const-generic) deliberately does +NOT impl `Scalar` — its world `(p,k)` is only known at construction — the same +runtime-world pattern as the py-facing `OddFiniteFieldForm` class. `RationalFunction` (in `global/function_field.rs`) is the **equal-characteristic mirror**: the global function field `F_q(t)`, the char-`p` analogue of `ℚ` as a @@ -312,7 +312,7 @@ den/num`, cross-mult equality) but a different ROLE — it carries *all* its pla valuations at once, so like `Adele` it is deliberately **not** `Valued`. Unlike the precision-model functors it is **exact**, so it joins the `scalar_axioms` fuzz and carries the `ExactScalar`/`ExactFieldScalar` markers. It feeds -`forms/function_field.rs`. +`forms/local_global/function_field.rs`. ## Things that look like bugs but are not (scalar layer) diff --git a/writeups/excess.pdf b/writeups/excess.pdf index ed97165..2c33d1b 100644 Binary files a/writeups/excess.pdf and b/writeups/excess.pdf differ diff --git a/writeups/excess.tex b/writeups/excess.tex index 3f8c497..c13fe9f 100644 --- a/writeups/excess.tex +++ b/writeups/excess.tex @@ -4,15 +4,18 @@ \usepackage{amsmath,amssymb,amsthm} \usepackage{array,booktabs} \usepackage{enumitem} +\usepackage{microtype} \usepackage[hidelinks]{hyperref} +\allowdisplaybreaks \theoremstyle{plain} -\newtheorem{proposition}{Proposition} -\newtheorem{lemma}{Lemma} -\newtheorem{corollary}{Corollary} -\newtheorem{conjecture}{Conjecture} +\newtheorem{theorem}{Theorem}[section] +\newtheorem{proposition}[theorem]{Proposition} +\newtheorem{lemma}[theorem]{Lemma} +\newtheorem{corollary}[theorem]{Corollary} +\newtheorem{conjecture}[theorem]{Conjecture} \theoremstyle{definition} -\newtheorem{remark}{Remark} +\newtheorem{remark}[theorem]{Remark} \newcommand{\F}{\mathbb{F}} \newcommand{\Q}{\mathbb{Q}} @@ -22,106 +25,314 @@ \newcommand{\Frob}{\operatorname{Frob}} \newcommand{\nimmul}{\otimes} \newcommand{\Qset}{\mathcal{Q}} -% claim-level tags (repo convention for this thread) -\newcommand{\PROVED}{\textbf{[\textsc{proved}]}} -\newcommand{\CERTIFIED}[1]{\textbf{[\textsc{certified} $#1$]}} -\newcommand{\CONSISTENT}{\textbf{[\textsc{consistent}]}} -\newcommand{\CONJECTURED}{\textbf{[\textsc{conjectured}]}} -\newcommand{\OPEN}{\textbf{[\textsc{open}]}} - -\title{Draft: the finite excess in transfinite nim multiplication} +% Evidence tags are reserved for statements outside theorem environments. +\newcommand{\CERTIFIED}[1]{\textbf{[certified $#1$]}} +\newcommand{\SOURCEPINNED}{\textbf{[source-pinned]}} +\newcommand{\CONSISTENT}{\textbf{[consistent]}} +\newcommand{\CONJECTURED}{\textbf{[conjectured]}} +\newcommand{\OPEN}{\textbf{[open]}} + +\title{Finite excess in transfinite nim multiplication\\ +\large Exact reductions, order bounds, and the \(0/1/4\) frontier} \author{a9lim} -\date{June 2026} +\date{July 2026} \begin{document} \maketitle \begin{abstract} -Conway's field $\mathrm{On}_2$ makes the ordinals below -$\omega^{\omega^{\omega}}$ an algebraic closure of $\F_2$ under -nim-arithmetic. Its multiplication is governed by a Kummer tower whose -carries are Lenstra's \emph{excess} values: for each odd prime $p$, the -carry is $\alpha_p=\kappa_{f(p)}+m_p$, where the transfinite part -$\kappa_{f(p)}$ has a known closed shape (Lenstra, DiMuro) but the finite -correction $m_p$ does not. This note consolidates the state of the excess -problem (\texttt{docs/OPEN.md} Problem~3 of \texttt{ogdoad}): the exact -finite-field reformulation of the root test as a multiplicative-order -criterion and its structural norm reduction; a complete analysis of the -$3$-power column via a half-angle splitting in the cyclotomic component -fields, certifying $m_r=1$ for all primes $r$ with -$f(r)\in\{3,9,\dots,3^6\}$ and forcing $m_p\geq4$ unconditionally on the -$f(p)=2\cdot3^k$ column --- now sharpened to $m_p=4$ \emph{exactly} at -every prime current factor tables reach (universally for $k\leq6$), via -a corrected compositum norm -$(\kappa+4)(\kappa+5)=\kappa^2+\kappa+\omega$ that collapses the $m=4$ -test into the same trinomial field; the empirically exact $0/1/4$ -candidate rule and the proof that the Lenstra component set alone cannot -decide the excess; and the reduction of Lenstra's open boundedness -question to that candidate. -Feasibility of the first open row, $p=719$, is assessed: a -Frobenius-orbit norm recurrence reduces it to arithmetic in -$\F_{2^{359}}$, with the cost concentrated in tower-aware Frobenius -composition. Each statement carries an explicit claim-level tag. +Conway's field $\mathrm{On}_2$ makes nim-multiplication below +$\omega^{\omega^{\omega}}$ depend on Lenstra's finite \emph{excess} +$m_p$ in the Kummer carry +$\alpha_p=\kappa_{f(p)}+m_p$. The observed rule is that every excess is +$0$, $1$, or $4$. We prove that this rule is equivalent to four exact +statements: a primitive-support norm condition, a projective-order +condition on each ordinary odd Kummer spine, Gaussian-period primitivity +on the cubic spine, and a current-factor condition on the exceptional +$2\cdot3^k$ spine. This is a complete reduction, not a proof of the rule. + +The zero arm is sharpened in two directions. For arbitrary component +sets we isolate the synchronized Frobenius phase that is lost by separate +component norms, and for two components express it by a resultant over the +intersection field. For the infinite power-of-two two-spine family +$h=2^ar^b$, where $d(\alpha_r)=2^t$ and $a\geq t+1$, the +distinguished Conway class in the primitive-support quotient is nontrivial +and the zero arm is equivalent to generation of that explicit cyclic +quotient. This proves the zero arm outright at \(h=12\) and \(h=24\), +where the quotient orders are prime. + +On an ordinary odd spine, the selected class is an explicit relative +Hilbert--90 unit. A signed conjugate-ball argument gives an unconditional +order lower bound $B_r^{\pm}$ and proves every primary factor +$p>\mathcal L_{r,a}/B_r^{\pm}$. For the first source-pinned safe-prime +row lacking an independent analytical certificate, \(p=359\), we reduce +the desired value exactly to one trace bit in +$\F_{2^{179}}$ and identify the selected phase among $179$ resultant +factors; the trace bit itself remains open. A Teichmuller-weighted +Hilbert-product formula proves that base-field and pure order-(p) +selectors have zero weight, while mixed Jacobi sums recover the desired +phase as one explicit inverse-Fourier coordinate; its nonvanishing remains +open. A projective minimal polynomial and its binary section expansion +make failure equivalent to simultaneous divisibility by the actual Conway +minimal polynomial; norm and complementation are automatic on that system. +A tower-faithful character-sum construction shows that this complete +section pattern occurs abundantly with irreducible ancestry, smooth exact +degree, and full primary bookkeeping, even within a fixed bottom Kummer +coset. It leaves only the unscaled Conway selector distinguished. +On the singleton-even Fermat +arm, a five-point generalized-Jacobian calculation proves that the full +natural equivariant divisor-and-pairing package carries exactly the +original Kummer scalar and supplies no independent relation. An exact +root-extraction descent now shows more: all lower trace, norm, and maximal +multiplicative-order ancestry is compatible with failure, which is +equivalent to one explicit Dickson power-sum equation at the top step. The +corresponding Dickson polynomial either splits completely in the failure +case or is irreducible in the success case, with an exact resultant and +absolute Capelli factorization. A reverse-Dickson transform sharpens +failure to divisibility of the trace-one polynomial by an explicit absolute +norm containing the selected minimal polynomial. Its degree count and long +coefficient gap are compatible with every composite Fermat case, so the +selected divisibility remains open. An exact semiconjugacy identifies the +trace-one polynomial with the inversion quotient of the norm-one torus and +the reverse-Dickson factor with one transported Kummer coset. It also gives +the precise fibotomic support, proving that all additive and support +constraints are realized by nonselected cosets. + +The cubic simple-zero derivative regulator is +\(\lambda_k^{3^k}/3\); its reduction is \(\gamma_k^{3^k}\), so both it +and its relative norm-one quotient carry exactly the original unknown +Kummer class. A cyclic group-algebra reduction sharpens cubic failure to +one exact subset-sum parity pattern: every residue occurs oddly except one. +After normalization inside the augmentation ideal, this is an extra +proper-subproduct relation among Frobenius-conjugate units; the full product +and the apparent \(\ell\)-th-power exponent test are unconditional identities. +A block compression shows that mask complementation forces the unique even +residue into exactly the position required by failure. The surviving +condition is equivalently the occurrence of a distinguished reciprocal pair +of degree-\(3^k\) factors in a binary Wendt gcd; all Wendt factors have that +degree and are paired, so factor existence alone is insufficient. An exact +Singer-difference-set factorization and its quotient moments go further: +for a substantial small-index range every multiplicative coset contains +such factors. The selected pair descends through the \(S_3\) invariant to +one lower trace polynomial. Its selector is exactly the reciprocal +Gaussian period \(\gamma_{k-1}^{-2}\), and an exact order product proves +that this recursion is lossless rather than inductive. Failure is the +extremal value of one prescribed-trace character sum; other trace fibres +genuinely attain that value, so only the selected fibre can be excluded. +The cubic and exceptional arms also admit a common +norm-coherent antiunit. For the exception column, a distinct-part +regulator gives order at least +$B_-(h)=\exp((\pi/(6\sqrt2)+o(1))\sqrt h)$ and proves every current +primary factor above the corresponding threshold. Exceptional failure +is also equivalent to simultaneous first-order flatness of a complete +mixed Jacobi family, and to an exact complementary binary-submask parity +pattern modulo \(15\cdot3^k\). Raising that parity identity to the +\(\ell\)-th power is again unconditional. A half-block factorization makes +the parity identity a quadratic norm equation. Its fixed-residue +pushforward is automatic, and the remaining selected residue symbol is +nontrivial exactly when one explicit relative trace is nonzero. Parallel partition +bounds hold on the cubic spine. A further antiunit descent makes the +selected exceptional phase a root of an explicit reciprocal sextic, and +failure is exactly divisibility of one named irreducible cubic by a Dickson +polynomial whose complete factorization consists of cubic squares. The +ambient factorization contains many admissible cubics, and every such cubic +has the same trace--constant shape as the selected one. Two further +absolute traces of its coefficients are explicit but yield no conflicting +ambient identity, so the remaining +problem is exclusion of the recursively selected one. The remaining small factors in these +three order problems, and maximality of the zero-arm primitive quotient, +are genuine distinguished-value nonvanishing statements not forced by +degree, norm, reciprocity, or generic character-sum bounds. Thus the full +$0/1/4$ rule and Lenstra's absolute boundedness question remain open, but +the exact proof frontier and several infinite subfamilies are now rigorous. \end{abstract} -\paragraph{Claim levels.} -\PROVED{} -- unconditional, machine-checked or classically verified; -\CERTIFIED{k\leq6} -- proved for the stated range, blocked beyond it only -by unfactored cofactors; \CONSISTENT{} -- no counterexample found, not -proved; \CONJECTURED{} -- explicitly open in the literature or posed in -this thread; \OPEN{} -- neither confirmed nor refuted, no feasible attack -on record. +\paragraph{Evidence taxonomy.} +Statements in theorem, proposition, lemma, and corollary environments are +proved in this note or deduced from a cited theorem. +\CERTIFIED{I} denotes an exact finite computation for the displayed +instances \(I\), with no claim about untested levels. +\SOURCEPINNED{} denotes a value imported from an external table. +\CONSISTENT{} denotes agreement with incomplete computational evidence. +\CONJECTURED{} and \OPEN{} mark statements for which no proof or +counterexample is known. + +\tableofcontents + +\section{Introduction and main results}\label{sec:introduction} + +Conway's nim-multiplication turns the ordinals into a field of +characteristic two. Below \(\omega^{\omega^\omega}\), the multiplication +law is organized by a Kummer tower. At an odd prime \(p\), its new carry +has the form +\[ + \alpha_p=\kappa_{f(p)}+m_p,\qquad f(p)=\ord_p(2), +\] +where the transfinite term \(\kappa_{f(p)}\) is structural and the finite +integer \(m_p\) is Lenstra's \emph{excess}. Lenstra proved general lower +bounds but left absolute boundedness open. All presently tabulated +values suggest the following much sharper rule. + +\begin{conjecture}[the \(0/1/4\) rule]\label{conj:rule} +For every odd prime \(p\), +\[ + m_p= + \begin{cases} + 0 & \text{if \(\Qset(f(p))\) is not a singleton odd prime-power},\\ + 4 & \text{if \(f(p)=2\cdot3^k\) for some \(k\geq1\)},\\ + 1 & \text{otherwise}. + \end{cases} +\] +\end{conjecture} + +The principal result of this note is a case-exhaustive reduction of the +conjecture to four explicit order problems. The notation +\(\Pi_h,T_h,\mathcal L_{r,a},\gamma_k,\Psi_k,M_k\) is developed in the +corresponding arm sections below. + +\begin{theorem}[four-arm reduction]\label{thm:rule-four-arms} +Conjecture~\ref{conj:rule} is equivalent to the conjunction of the +following four universal statements. +\begin{enumerate}[label=(\roman*),leftmargin=*] +\item[\((Z)\)] For every \(h>1\) for which \(\Qset(h)\) is not a +singleton odd prime-power, +\[ + \Pi_h\mid + \ord\!\left( + \Norm_{\F_{2^{d(\kappa_h)}}/\F_{2^h}}(\kappa_h) + \right). +\] +\item[\((O)\)] For every odd prime \(r\ne3\) and every \(a\geq1\), the +class of \(y_a=\kappa_{r^a}+1\) in the projective quotient +\(G_{r,a}=F_a^\times/F_{a-1}^\times\) has maximal prime-to-\(r\) +order: for every prime \(p\ne r\) dividing +\(\mathcal L_{r,a}\), +\[ + v_p\!\left(\ord(y_aF_{a-1}^\times)\right) + =v_p(\mathcal L_{r,a}). +\] +\item[\((C)\)] The Gaussian period +\(\gamma_k\in\F_{2^{3^k}}^\times\) is primitive for every \(k\geq1\). +\item[\((D)\)] The current exceptional factor satisfies +\(\Psi_k\mid\ord(M_k)\) for every \(k\geq1\). +\end{enumerate} +\end{theorem} + +\begin{proof} +If \(\Qset(h)\) is not a singleton odd prime-power, the conjecture asks +for \(m_p=0\) at every prime with \(f(p)=h\). +Proposition~\ref{prop:support} identifies this exactly with \((Z)\). + +If \(\Qset(h)=\{r^a\}\) with \(r\ne3\), then +Proposition~\ref{prop:singleton-projective-spine} partitions the eligible +row primes among the primary divisors of \(\mathcal L_{r,a}\) and +identifies \(m_p=1\) with the equality in \((O)\). + +For \(r=3\), one has \(d(\alpha_3)=2\), so the possible residue degrees +are \(3^a\) and \(2\cdot3^a\). Proposition~\ref{prop:gauss-arm} +identifies the first family with \((C)\). The unconditional lower bound +\(m_p\geq4\), together with Proposition~\ref{prop:dk-current-level}, +identifies the second family with \((D)\). These cases are disjoint and +exhaust the definition of Conjecture~\ref{conj:rule}. +\end{proof} + +\subsection{What is proved and what remains open} + +The theorem is a reduction, not a proof of any universal arm. The +present frontier is summarized below; finite certifications are listed +separately in Appendix~\ref{sec:provenance}. + +\begin{center} +\small +\setlength{\tabcolsep}{4pt} +\begin{tabular}{>{\raggedright\arraybackslash}p{0.07\linewidth} + >{\raggedright\arraybackslash}p{0.25\linewidth} + >{\raggedright\arraybackslash}p{0.31\linewidth} + >{\raggedright\arraybackslash}p{0.27\linewidth}} +\toprule +Arm & Exact target & Proved here & Remaining universal assertion \\ +\midrule +\((Z)\) & +full primitive-support order & +synchronized-phase reduction; exact two-component resultant; +nontrivial support in the power-of-two two-spine family; complete +\(h=12,24\); exact root-ancestry, Dickson dichotomy, and reverse-Dickson +trace-divisor and Kummer-coset criteria & +generation for composite two-spine quotients, the general synchronized +phase, and the singleton-even Conway--Fermat quotient \\ +\((O)\) & +maximal primary projective order & +transverse norm and relative-unit formulas; nontrivial order; signed +conjugate-ball factor range; weighted-selector and mixed-Jacobi formulas; +projective minimal polynomial and binary-section ancestry; tower-faithful +common-section no-go & +nondivisibility at the selected Conway polynomial for the remaining smaller +primary factors \\ +\((C)\) & +\(\gamma_k\) primitive & +proof for \(k\leq3\); partition order bounds; exact derivative +regulator, reciprocity boundary, cyclic-parity obstruction, and +augmentation-ideal and block normalization; Singer--Wendt factorization +and selected \(S_3\)-trace quotient; reciprocal order seam and +prescribed-trace character boundary & +exclusion of the selected Wendt/trace fibre at the remaining current +factors \\ +\((D)\) & +\(\Psi_k\mid\ord(M_k)\) & +exact current-factor criterion; projection and antiunit partition +bounds; equivalent polynomial, character, Jacobi-flatness, and +binary cyclic-parity formulations; half-block norm, selected-trace form, +selected reciprocal-sextic/Dickson factorization, universal cubic-shape +no-go, and selected absolute-trace fingerprint & +exclusion of the explicit selected cubic from the Dickson factor list at +the remaining current factors \\ +\bottomrule +\end{tabular} +\end{center} + +The extensive non-determination results below serve one purpose: they +separate these four selected-value problems from statements that follow +only from degree, trace, norm, reciprocity, or generic character-sum +bounds. They are obstructions to standard proof strategies, not +additional conjectural arms. + +\subsection{Organization} + +Section~\ref{sec:notation} fixes the tower notation, and +Section~\ref{sec:norm} gives the exact power and norm criteria. +Sections~\ref{sec:zero}, \ref{sec:ordinary}, \ref{sec:family}, +\ref{sec:fermat}, and \ref{sec:exception} treat the zero, ordinary, +cubic, singleton-even, and exceptional structures. The singleton-even +section is part of arm \((Z)\), but is separated because its quadratic +tower and generalized-Jacobian reformulations are substantial. +Section~\ref{sec:bounded} records the boundedness consequence and the +four exact remaining theorem targets. Computational and implementation +evidence is isolated in Appendix~\ref{sec:provenance}. -\section{Notation, implemented state, external data}\label{sec:notation} +\section{Mathematical setup}\label{sec:notation} -\subsection{Notation} +\subsection{Tower notation} For an odd prime $p$: \begin{itemize}[leftmargin=*,itemsep=0pt] \item $f(p)=\ord_p(2)$, the multiplicative order of $2$ modulo $p$; +\item \(d(x)=[\F_2(x):\F_2]\), the least finite-field degree containing +the algebraic nimber \(x\); \item $\kappa_h$ is the Lenstra/DiMuro tower element indexed by $h$; \item $\Qset(h)$ is Lenstra's set of prime-power components appearing in $\kappa_h$; \item the \emph{excess} $m_p$ is the least finite $m$ such that -$\kappa_{f(p)}+m$ has no $p$-th root in the relevant finite component -field; +\(\kappa_{f(p)}+m\) has no \(p\)-th root in +\(\F_{2^{d(\kappa_{f(p)}+m)}}\); \item the Kummer carry is $\alpha_p=\kappa_{f(p)}+m_p$. \end{itemize} For the ordinal tower, a row with $\Qset(f(p))=\{q\}$ and finite excess $m$ gives the ordinal sum corresponding to $\kappa_q+m$. Addition of nimbers is XOR; $\nimmul$ is the nim product. -\subsection{Implemented tower state} - -In the Rust tower (\path{src/scalar/big/ordinal/tower.rs}), as of 2026-06-13: -\begin{itemize}[leftmargin=*,itemsep=0pt] -\item the finite excess rows $m_p$ are now sourced from OEIS -A380496~\cite{OEIS}, the b-file's $126$ known rows (odd primes -$3 \le p \le 709$); the first $14$ rows reproduce DiMuro Table~1 + the -formerly locally verified $\alpha_{47}=\omega^{(\omega^7)}+1$; -\item the operational boundary is $\alpha_{719}$, the first OEIS-unknown -row: a carry needing $\alpha_{719}$ or beyond returns \texttt{None}; -\item the table extends \emph{reach}, not \emph{feasibility}: each -$\alpha_p$ is reconstructed in code from $\ord_p(2)$, $\Qset(f(p))$, and -$m_p$, but for large $p$ the $\Qset$/finite-subfield reconstruction lives -in the degree-$e_p$ component field ($e_p$ in the millions; see the -snapshot below), so only the small-$e_p$ rows are materializable -end-to-end today. -\end{itemize} - -\subsection{External data snapshot (2026-06-09)} - -\begin{itemize}[leftmargin=*,itemsep=0pt] -\item OEIS A380496~\cite{OEIS} has $1417$ extended rows: $799$ known and -$618$ unknown; the b-file has $126$ initial known rows. -\item The first OEIS unknown is row $n=127$, the $127$th odd prime -$p=719$. For $p=719$: $f(719)=\ord_{719}(2)=359$ and -$\Qset(359)=\{359\}$. -\item The transfinite-nim-calculator logs~\cite{Peeters} record the direct -component exponent as $e_{719}=1{,}258{,}230{,}380$, the practical wall -for direct exponentiation. -\end{itemize} - +The implementation boundary, external table provenance, and finite +certifications are collected in Appendix~\ref{sec:provenance}; none is +used as evidence for an unbounded theorem. \section{The order criterion and structural norm reduction} \label{sec:norm} @@ -132,7 +343,7 @@ \subsection{The exact criterion} $p\mid 2^{E}-1$. \begin{proposition}[power criterion]\label{prop:power} -\PROVED{} $\beta\in\F_{2^E}^{\times}$ has no $p$-th root in $\F_{2^E}$ +$\beta\in\F_{2^E}^{\times}$ has no $p$-th root in $\F_{2^E}$ iff $\beta^{(2^E-1)/p}\neq1$. Hence \[ m_p=\min\bigl\{m\geq0:\ (\kappa_{f(p)}+m)^{(2^E-1)/p}\neq1\bigr\}. @@ -146,7 +357,7 @@ \subsection{The exact criterion} \end{proof} \begin{corollary}[order form]\label{cor:order} -\PROVED{} If $v_p(2^E-1)=1$, then $\beta$ has no $p$-th root in +If $v_p(2^E-1)=1$, then $\beta$ has no $p$-th root in $\F_{2^E}$ iff $p\mid\ord(\beta)$, so $m_p$ is the least $m$ with $p\mid\ord(\kappa_{f(p)}+m)$. \end{corollary} @@ -154,23 +365,28 @@ \subsection{The exact criterion} \begin{remark}[Wieferich caveat]\label{rem:wieferich} In general ``no $p$-th root'' is equivalent to $v_p(\ord\beta)=v_p(2^E-1)$, which collapses to -$p\mid\ord(\beta)$ only when $v_p(2^E-1)=1$. Since -$v_p(2^E-1)=v_p(2^{f(p)}-1)$ whenever $p\nmid E/f(p)$ (lifting the -exponent), the hypothesis can fail only at base-$2$ Wieferich-type primes -with $p^2\mid 2^{f(p)}-1$; the only known instances are $p=1093$ and -$p=3511$, both of which lie inside the extended A380496 range. For those -rows the exact test of Proposition~\ref{prop:power} (or the full-$p$-part -order condition) must be used. The certifications of -Section~\ref{sec:family} compute orders exactly, with squarefreeness -checks, and are unaffected. The research-note predecessor of this -document stated only the order form; the power criterion is the -correct general statement. +$p\mid\ord(\beta)$ only when $v_p(2^E-1)=1$. By lifting the exponent, +\[ +v_p(2^E-1)=v_p(2^{f(p)}-1)+v_p(E/f(p)). +\] +Thus the hypothesis can fail either at base-$2$ Wieferich-type primes +with $p^2\mid 2^{f(p)}-1$ or when $p\mid E/f(p)$. The only known +base-$2$ Wieferich primes are $p=1093$ and $p=3511$, both of which lie +inside the contributor's extended A380496 auxiliary range. Its calculator +uses the exact test of Proposition~\ref{prop:power}, so the reported zeroes +assert full \(p^2\)-primary order; Appendix~\ref{sec:provenance} records +their thinner certificate boundary. For those rows, and for any row with +$p\mid E/f(p)$, the exact power test (or the full-$p$-part order condition) +must be used. The local certifications of Section~\ref{sec:family} compute +orders exactly and include squarefreeness checks. The research-note +predecessor of this document stated only the order form; the power criterion +is the correct general statement. \end{remark} \subsection{Norm reduction} \begin{proposition}[norm reduction]\label{prop:norm} -\PROVED{} For $\beta\in\F_{2^E}^{\times}$ with $f=f(p)\mid E$, +For $\beta\in\F_{2^E}^{\times}$ with $f=f(p)\mid E$, \[ \beta^{(2^E-1)/p} = @@ -183,442 +399,8935 @@ \subsection{Norm reduction} $\bigl((2^E-1)/(2^f-1)\bigr)\cdot\bigl((2^f-1)/p\bigr)=(2^E-1)/p$. \end{proof} -So the $p=719$ test reduces to: (1) compute -$N=\Norm_{\F_{2^E}/\F_{2^{359}}}(\kappa_{359}+1)$ in $\F_{2^{359}}$; -(2) test whether $719\mid\ord(N)$ in $\F_{2^{359}}^{\times}$, a field of -degree $359$ in which $719\mid2^{359}-1$. - -\begin{proposition}[Galois-conjugacy invariance]\label{prop:galois} -\PROVED{} The order of $\kappa_{f(p)}+m$ is constant on its Frobenius -orbit in $\F_{2^E}$, and the norm -$N=\prod_{i=0}^{E/f-1}\Frob^{if}(\kappa_{f}+m)$ is determined -structurally by the tower equations without materialising the full orbit. -\end{proposition} - -\begin{proposition}[tower pinning]\label{prop:pinning} -\PROVED{} The tower equations pin $\kappa_{359}$ up to Frobenius -conjugacy: each composed minimal polynomial along the component chain -$359\to179\to89\to11\to5\to\text{finite}$ is irreducible (the -non-$q$-th-power property defining the lower excess guarantees this), so -$\kappa_{359}$ is a well-defined conjugacy class and $N$ is a well-defined -element of $\F_{2^{359}}$. -\end{proposition} - -\subsection{Feasibility for $p=719$} - -The component field degree is -$E=2\cdot2\cdot5\cdot11\cdot89\cdot179\cdot359=1{,}258{,}230{,}380$; the -norm requires $E/f=3{,}504{,}820$ Frobenius steps. - -\CONSISTENT{} The norm can in principle be computed by the -binary-splitting Frobenius recurrence -$N_{2k}=N_k\cdot\Frob^{fk}(N_k)$ (iterated-Frobenius technique, von zur -Gathen--Shoup~\cite{vzGS92}, Kaltofen--Shoup~\cite{KS98}), requiring about -$\log_2(3{,}504{,}820)\approx22$ squarings-with-Frobenius-composition at -degree $E$ over $\F_2$. Each Frobenius composition is a modular -composition in $\F_2[x]$ modulo a degree-$E$ polynomial; with dense -polynomial arithmetic at $E\approx1.26\times10^9$ this is not locally -feasible. - -\CONJECTURED{} (as a cost model, not a theorem) Kummer-tower-aware -Frobenius -- standard-lattice arithmetic for compatibly embedded finite -fields in the style of De~Feo--Randriam--Rousseau~\cite{DFRR19}, where -$q$-power Frobenius acts near-monomially per tower level -- is the likely -$10$--$100\times$ lever: the sparse factored structure -$E=2\cdot2\cdot5\cdot11\cdot89\cdot179\cdot359$ admits a stepwise -Frobenius representation in which each level contributes a small-degree -modular composition. A \emph{measured} cost model, not a run, is the -correct first deliverable. - -\OPEN{} Whether the Kummer-tower Frobenius model makes the $m_{719}$ -computation feasible in wall-clock hours rather than months on available -hardware (a single consumer GPU; GF(2) arithmetic is XOR-sliced and -GPU-friendly). - -\PROVED{} (2026-06-14 local rehearsal.) The first two dependency rows for -the $p=719$ norm path are locally certified by -\path{experiments/ordinal_excess_probe.py}: $m_{89}=1$ in the -$E=220$ component field, and $m_{179}=1$ in the $E=19{,}580$ component -field via the fixed-base power path (\texttt{--deep}, about one minute -locally). The remaining local rehearsal row is $m_{359}=1$, with -$E=3{,}504{,}820$. This row is already source-pinned by the imported -A380496 table ($359\leq709$); what remains open here is an independent -certificate on the same code path needed for the genuinely unknown -$p=719$ row. - -\subsection{\texorpdfstring{The $m_{359}$ rehearsal obstruction}{The m359 rehearsal obstruction}} -\label{sec:m359-obstruction} +Frobenius conjugacy preserves multiplicative order, and relative norms +are Frobenius invariant. Consequently each later selected-value test +depends only on the Conway conjugacy class fixed by the irreducible +Kummer steps, not on a choice of root or field presentation. -Set +\section{The zero arm}\label{sec:zero} + +\subsection{Primitive-support norm criterion} + +For $h>1$, write \[ - d=19{,}580,\qquad E=179d=3{,}504{,}820,\qquad - B=\F_{2^d},\qquad F=\F_{2^E},\qquad L=\F_{2^{179}}. + \Pi_h:=\prod_{\substack{\ell\ \mathrm{odd\ prime}\\ + \ord_\ell(2)=h}} + \ell^{v_\ell(2^h-1)}. \] -For the $m_{359}=1$ rehearsal, $f(359)=179$, -$\Qset(f(359))=\Qset(179)=\{179\}$, and the candidate element is -$\beta=\kappa_{179}+1$. To represent $\kappa_{179}$, the tower uses the -lower prime row $f(179)=178$, $\Qset(178)=\{89\}$, $m_{179}=1$. -Thus in the tower model $F=B(x)$ with $x=\kappa_{179}$ and +This is the full prime-power part of $2^h-1$ supported at primes whose +order of $2$ is exactly $h$; using the full valuations, rather than only +the radical, incorporates the Wieferich cases. + +\begin{proposition}[exact-order support]\label{prop:support} +Let $x=\kappa_h$, let $E=d(x)$, and put \[ - x^{179}=\kappa_{89}+1\in B, + T_h=\Norm_{\F_{2^E}/\F_{2^h}}(x). \] -because the lower row $m_{179}=1$ has already been certified. +Then $m_p=0$ for every odd prime $p$ with $f(p)=h$ if and only if +\[ + \Pi_h\mid\ord(T_h). +\] +For an individual such $p$, $m_p=0$ iff +$v_p(\ord T_h)=v_p(2^h-1)$. +\end{proposition} -\PROVED{} The cheap Kummer norm down the top tower step is not the -$359$-test norm. Indeed, +\begin{proof} +The definition of $\kappa_h$ gives $h\mid E$. Proposition~\ref{prop:norm} +with $\beta=x$ identifies the $p$-power test in $\F_{2^E}$ with the +same test on $T_h$ in $\F_{2^h}$. In the cyclic group +$\F_{2^h}^{\times}$, failure to be a $p$-th power is exactly the presence +of the full $p$-primary part of the group order in $\ord(T_h)$. Taking +the product over the distinct eligible primes proves the claim. No +hypothesis on $p\nmid E/h$ is hidden here: if +$c=v_p((2^E-1)/(2^h-1))$, the norm exponent gives +$v_p(\ord T_h)=\max\{0,v_p(\ord x)-c\}$, so equality with +$v_p(2^h-1)$ is equivalent to $v_p(\ord x)=v_p(2^E-1)$. +\end{proof} + +\begin{proposition}[multicomponent Kummer no-collapse] +\label{prop:multicomponent-no-collapse} +Suppose \(\Qset(h)=\{q_1,\ldots,q_t\}\) with \(t\geq2\). +Put \(x_i=\kappa_{q_i}\), +\(x=\kappa_h=\sum_i x_i\), \(E_i=d(x_i)\), \(E=d(x)\), and +\(D=\operatorname{lcm}(E_1,\ldots,E_t)\). For a prime \(p\) with +\(\ord_p(2)=h\), let \[ - \Norm_{F/B}(x+1)=1+(\kappa_{89}+1)=\kappa_{89} + T_h=\Norm_{\mathbb F_{2^E}/\mathbb F_{2^h}}(x). \] -(evaluate the monic polynomial $T^{179}+(\kappa_{89}+1)$ at $T=1$, in -characteristic $2$). But $359\nmid |B^\times|=2^{19580}-1$, since -$\ord_{359}(2)=179$ and $179\nmid19580$. Thus the structurally cheap -norm lands in exactly the field where the $359$-primary obstruction is -invisible. +Then \(p>h\), \(p\nmid D\), and, in additive notation for +\(\mathbb F_{2^E}^\times/(\mathbb F_{2^E}^\times)^p\), +\[ + [T_h]=\frac Eh[x]. \tag{\(\mathsf{MC}_1\)} +\] +The scalar \(E/h\) is nonzero modulo \(p\), so norm reduction is an +isomorphism on the relevant Kummer line. On the other hand every +\(x_i\) is a \(p\)-th power in the common compositum +\(\mathbb F_{2^D}\). Thus no product of the individual component +Kummer classes, or of their one-component norms, can produce the +obstruction carried by the additive sum \(x\). -\PROVED{} The norm forced by Proposition~\ref{prop:norm} is the -transverse one +If \(P_h(Y)\in\mathbb F_2[Y]\) is the minimal polynomial of +\(\kappa_h\), then \[ - \Norm_{F/L}(\beta)=\prod_{i=0}^{19579}\Frob^{179i}(\beta)\in L. + m_p=0 + \iff P_h(Y^p)\text{ is irreducible over }\mathbb F_2. \tag{\(\mathsf{MC}_2\)} \] -Here $\gcd(179,19580)=1$, so $B\cap L=\F_2$ and -$F=BL$. The Frobenius $\Frob^{179}$ preserves $B$ as a set but acts -nontrivially on it; it is not the relative Kummer action -$x\mapsto \zeta x$ over $B$. Consequently the known lower certificates -for $m_{89}$ and $m_{179}$ do not propagate to $m_{359}$ by taking the -easy top-step norm. +In contrast, every individual component has trivial \(p\)-Kummer +class. Hence the multicomponent zero arm is a genuinely new family of +additive-resultant/Capelli irreducibility assertions, not a multiplicative +consequence of the singleton components. +\end{proposition} -\PROVED{} The Wieferich caveat is absent at the next two pressure -points: direct modular checks give -$2^{179}\not\equiv1\pmod{359^2}$ and -$2^{359}\not\equiv1\pmod{719^2}$. The order form of -Corollary~\ref{cor:order} is therefore equivalent to the full power -criterion for the $m_{359}$ rehearsal and the proposed $m_{719}$ test. - -\CONSISTENT{} (2026-06-16 diagnostic.) Re-running the maintained probe -confirmed the quick certificate table and the \texttt{--deep} -$m_{179}=1$ certificate. A side norm experiment then computed the -correct transverse norm in the current term basis for the feasible -analogues: for $p=89$ the norm to $\F_{2^{11}}$ has support -$111/220$, and for $p=179$ the norm to $\F_{2^{178}}$ has support -$9691/19580$. Thus the target-subfield element is essentially half-dense -in this representation; using it as the new fixed base makes the final -root-test exponent slower than the direct fixed-base certificate. This -is a representation-level diagnostic, not a theorem that no sparse -description exists. - -\OPEN{} The current pure-Python term algebra has no feasible route to a -local $m_{359}$ certificate. The direct fixed-base path would have to -precompute multiplication by $\beta$ for $E=3{,}504{,}820$ basis terms -and then run an $E$-bit exponent. The norm path lowers the mathematical -problem to a degree-$179$ target field, but computing that norm still -requires the $19580$-term transverse Frobenius orbit through -$F_{2^{3504820}}$. A practical certificate now appears to require either -(i) dense/sliced GF(2) arithmetic such as \texttt{gf2x}/NTL, or -(ii) a tower-aware Frobenius representation that makes the transverse -orbit cheap. This is the obstruction hit in the present pass. - -\begin{remark}[shared abstraction]\label{rem:bridgek} -The structural primitive needed here -- -$\Norm_{E/K}(\beta)=\prod_i\Frob^{i}(\beta)$ computed by a -Frobenius-orbit recurrence -- is the same primitive that the cyclic-algebra -Brauer-invariant bridge (Bridge~K, \path{docs/TBD.md}) requires for -reduced norms over a Frobenius-generated cyclic extension. The existing -\texttt{FieldExtension::relative\_norm} does not apply to the -term-algebra/transfinite setting, but the shape is identical; factoring -out a reusable \path{relative_norm_over_frobenius_orbit} is an -engineering opportunity. This is not a claim that the bounded -\texttt{Fpn} norm certifies $m_{719}$. -\end{remark} +\begin{proof} +Since \(h=\ord_p(2)\) divides \(p-1\), one has \(p>h\); this is +conditional on such a \(p\) and uses no Zsigmondy assertion. Write +\(q_i=r_i^{a_i}\). Lenstra gives \(E_i=q_i b_i\) with every prime +divisor of \(b_i\) smaller than \(r_i\). Since \(r_i\mid h\), every +prime divisor of \(D\) is at most \(h\), so \(p\nmid D\). Also +\(x\in\mathbb F_{2^D}\), hence \(E\mid D\) and \(p\nmid E/h\). -\section{The $3^k$ family}\label{sec:family} +Writing \(n=E/h\), the norm exponent satisfies +\[ + \frac{2^E-1}{2^h-1} + =1+2^h+\cdots+2^{(n-1)h} + \equiv n=\frac Eh\pmod p, +\] +because \(2^h\equiv1\pmod p\). This proves +\((\mathsf{MC}_1)\); the natural map from the \(p\)-Kummer quotient of +\(\mathbb F_{2^h}\) to that of \(\mathbb F_{2^E}\) is an isomorphism +because the same scalar \(n\) is nonzero modulo \(p\). -Write $\zeta:=\kappa_{3^k}$ and $h:=3^k$ throughout this section. +For each \(i\), \(q_i\mid h\) gives +\(\kappa_{q_i}\leq\kappa_h\). If \(h\mid E_i\), the defining +minimality of \(\kappa_h\) gives the reverse inequality, hence +\(\kappa_h=\kappa_{q_i}\), contradicting uniqueness of the +multicomponent expansion. Thus \(h\nmid E_i\), so +\(p\nmid2^{E_i}-1\). The \(p\)-power map is consequently an +automorphism of \(\mathbb F_{2^{E_i}}^\times\), and \(x_i\) is a +\(p\)-th power there and hence in \(\mathbb F_{2^D}\). Because +\(p\nmid D/E\), extension from \(\mathbb F_{2^E}\) to +\(\mathbb F_{2^D}\) is injective on \(p\)-Kummer quotients, so this +comparison loses no class of \(x\). -\subsection{Structure} +Finally Capelli's lemma says \(P_h(Y^p)\) is irreducible iff +\(Y^p-x\) is irreducible over \(\mathbb F_{2^E}\). Since +\(\mu_p\subset\mathbb F_{2^E}\), the latter holds iff +\(x\notin(\mathbb F_{2^E}^\times)^p\), which is exactly \(m_p=0\). +This proves \((\mathsf{MC}_2)\). +\end{proof} -\begin{proposition}[cyclotomic recognition]\label{prop:cyclo} -\PROVED{} $\zeta^{3^k}=\kappa_2$, which has order $3$; hence $\zeta$ is a -primitive $3^{k+1}$-st root of unity. Since $2$ is a primitive root -modulo $3^{k+1}$, the cyclotomic polynomial -$\Phi_{3^{k+1}}(x)=x^{2h}+x^h+1$ is irreducible over $\F_2$, the -component field is $\F_2(\zeta)=\F_{2^{2h}}$, and it carries the index-$2$ -subfield $L=\F_{2^h}$. -\end{proposition} +\begin{proposition}[synchronized additive resultants and the missing phase] +\label{prop:multicomponent-phase} +Put \(Q=2^h\), \(K=\mathbb F_Q\), and suppose +\(p\mid Q-1\). For \(1\leq i\leq t\), let +\(L_i=\mathbb F_{Q^{r_i}}\) and choose \(u_i\in L_i\) of full degree +\(r_i\) over \(K\). Set +\[ + R=\operatorname{lcm}(r_1,\ldots,r_t),\qquad + M=\mathbb F_{Q^R},\qquad u=\sum_i u_i\ne0, +\] +and assume \(p\nmid R\). Exponents in the following formula are read +modulo the corresponding \(r_i\). The diagonal translation action on +\[ + \prod_i\mathbb Z/r_i\mathbb Z +\] +has orbit set +\[ + \Omega= + \left(\prod_i\mathbb Z/r_i\mathbb Z\right) + \big/\langle(1,\ldots,1)\rangle . +\] +For a representative \(\mathbf d=(d_i)\) of an orbit, define +\[ + F_{\mathbf d}(Z)= + \prod_{j=0}^{R-1} + \left(Z+\sum_i u_i^{Q^{j+d_i}}\right). \tag{\(\mathsf{MC}_3\)} +\] +Then \(F_{\mathbf d}\in K[Z]\), it depends only on the class of +\(\mathbf d\), and the ordinary componentwise additive composed product +factors as +\[ + \prod_{0\leq j_iu\). +Hence every prime divisor of \(\Phi_h(2)\) has exact order \(h\), and +all of its valuation in \(2^h-1\) occurs for the first time in +\(\Phi_h(2)\). This proves \(\Pi_h=\Phi_h(2)\). -\section{The $0/1/4$ candidate}\label{sec:rule} +The intersection and compositum rules for finite fields give +\(A\cap B=J\) and \(AB=\mathbb F_{2^h}\). Since the multiplicative +group of a finite field is cyclic, +\[ + |A^\times B^\times| + =\operatorname{lcm}(q^r-1,q^2-1) + =\frac{(q^r-1)(q^2-1)}{q-1}. +\] +Its index in \(q^{2r}-1\) is +\[ + \frac{(q^{2r}-1)(q-1)}{(q^r-1)(q^2-1)} + =\frac{q^r+1}{q+1}=\Phi_h(2), +\] +which proves \((\mathsf{MC}_{12})\). -\begin{conjecture}[the $0/1/4$ rule]\label{conj:rule} -\CONSISTENT{} (not proved) +It remains to show that \(z\notin A^\times B^\times\). The degree +formulas and \(a\geq t+1\) give \[ - m_p= - \begin{cases} - 0 & \text{if $\Qset(f(p))$ is not a singleton odd prime-power,}\\ - 4 & \text{if $f(p)=2\cdot3^k$, $k\geq1$,}\\ - 1 & \text{otherwise (singleton odd prime-power $\Qset(f(p))$).} - \end{cases} + x\in A\setminus J,\qquad c\in B\setminus J. \] -The rule matches all $950$ calculator records with known $\Qset$-sets and -every OEIS-known row covered by those $\Qset$-sets. -\end{conjecture} +Because \([A:J]=r\) and \([B:J]=2\) are coprime, multiplication induces +an isomorphism +\[ + A\otimes_J B\;\xrightarrow{\ \sim\ }\;\mathbb F_{2^h}. +\] +Under it, \(z\) is the tensor +\[ + x\otimes1+1\otimes c. +\] +The pairs \(\{x,1\}\subset A\) and \(\{1,c\}\subset B\) are both +\(J\)-linearly independent, so this tensor has rank two. Every element +of \(A^\times B^\times\), on the other hand, is the image of a nonzero +rank-one tensor \(u\otimes v\). Thus \(z\notin A^\times B^\times\), +and its quotient class is nontrivial. -\subsection{The component set alone is insufficient} +Every prime dividing the order of the quotient class divides \(\Pi_h\), +hence has exact order \(h\). Conversely no such prime divides +\(|A^\times B^\times|\), so the full \(\Pi_h\)-part of \(\ord(z)\) is +exactly the order of its class in \(\mathcal T_h\). This proves +\((\mathsf{MC}_{13})\). If \(\Phi_h(2)\) is prime, nontriviality of the +class already means generation. Finally +\(\Phi_{12}(2)=13\) and \(\Phi_{24}(2)=241\), so the complete zero arm +holds at those two levels. +\end{proof} -\PROVED{} $\Qset(f(p))$ alone does not determine $m_p$: -\begin{center} -\begin{tabular}{ccc} -\toprule -$\Qset$ & $m=4$ & $m=1$ \\ -\midrule -$\{9\}$ & $p=19$, $f=18$ & $p=73$, $f=6$ \\ -$\{81\}$ & $p=163$, $f=162$ & $p=2593$, $f=18$ \\ -$\{243\}$ & $p=1459$, $f=486$ & $p=487$, $f=18$ \\ -\bottomrule -\end{tabular} -\end{center} +\begin{remark}[the two-spine cross ratio and its present limit] +\label{rem:two-spine-cross-ratio} +Put \(q=2^{h/(2r)}\), +\(L_0=(q^r-1)(q+1)\), \(P=z^{L_0}\), and \(c'=c^q\). The same +Hilbert--90 calculation gives the exact representative +\[ + P + =\left(\frac{x+c'}{x+c}\right)^{q+1} + =\frac{(x+c')(\zeta x+c)} + {(x+c)(\zeta x+c')}, \tag{\(\mathsf{MC}_{14}\)} +\] +where \(x^q=\zeta x\) and \(\zeta\) is a primitive \(r\)-th root in +\(J\). This formula does not presently imply a nontrivial lower bound +for \(\ord(P)\). Indeed, in the natural subset-product comparison of +its \(r\) conjugates, clearing a relation with cyclic differences +\(\delta_j\) produces polynomials of degree +\(\sum_j|\delta_j|\), which may be as large as \(2r-2\); it is not +bounded by \(r-1\). Since \(x\) has degree only \(r\) over \(B\), +evaluation at \(x\) cannot then be promoted to a polynomial identity. +Thus tensor rank proves nontriviality, but maximality of the composite +quotient remains open. We record \((\mathsf{MC}_{14})\) as an exact +starting point, not as an order estimate. +\end{remark} + +\begin{remark}[sharp boundary of the tensor argument] +\label{rem:two-spine-tensor-boundary} +Write more generally +\[ + d(\alpha_r)=2^t c,\qquad c>1\ \text{odd}, +\] +and take \(a>t\), \(b\geq1\). Over +\(J=\mathbb F_{2^{2^t}}\), the fields generated by +\(\kappa_{r^b}\) and \(\kappa_{2^a}\) have coprime relative degrees +\[ + m=cr^b,\qquad n=2^{a-t}. +\] +Tensor rank therefore still proves that their sum is nontrivial in the +product quotient of their compositum. If \(q=|J|\), however, that +quotient has order +\[ + \frac{(q^{mn}-1)(q-1)}{(q^m-1)(q^n-1)} + = + \prod_{\substack{d_1\mid m,\ d_1>1\\ + d_2\mid n,\ d_2>1}} + \Phi_{d_1d_2}(q). \tag{\(\mathsf{MC}_{18}\)} +\] +The desired \(h=2^ar^b\) support occupies only the factor +\(\Phi_{nr^b}(q)\). Tensor nontriviality may instead be supported on a +factor whose \(d_1\) uses a nontrivial divisor of \(c\); norming the +degree-\(hc\) compositum down to \(\mathbb F_{2^h}\) kills every such +prime-order component that does not divide \(2^h-1\). Thus the +rank-two proof does not project to the required zero phase when \(c>1\). +The hypothesis \(d(\alpha_r)=2^t\) is exactly where the present +tensor/divisor argument isolates a single primitive-support factor; the +general case still needs a theorem controlling the synchronized norm. +\end{remark} + +\section{Ordinary odd Kummer spines}\label{sec:ordinary} + +\subsection{Transverse and projective reductions} + +The singleton-odd case admits a sharper field square. Let $r$ be an odd +prime, $q=r^a$, and set $b_r=d(\alpha_r)$, where +$\kappa_q^q=\alpha_r$. Since $\alpha_r<\kappa_r$, Lenstra's field +description gives $r\nmid b_r$, while the successive Kummer equations +have degree $r$~\cite[Proposition~1.8]{Lenstra77}; hence +\[ + d(\kappa_q)=qb_r,\qquad \gcd(q,b_r)=1. +\] + +\begin{proposition}[singleton transverse-norm criterion] +\label{prop:singleton-transverse} +Suppose $\Qset(h)=\{q\}$ with $q=r^a$ odd. Then +$h=qs$ for a divisor $s\mid b_r$. In the field square +\[ + F=\F_{2^{qb_r}},\quad B=\F_{2^{b_r}},\quad + K=\F_{2^{qs}},\quad C=\F_{2^s}, +\] +one has $B\cap K=C$ and $F=BK$. Put $x=\kappa_q$ and +\[ + \Theta_{q,s}:=\Norm_{F/K}(x+1)\in K^{\times}. +\] +For every prime $p$ with $f(p)=h$: +\begin{enumerate}[label=(\roman*),leftmargin=*] +\item $x$ is a $p$-th power in $F$, so $m_p\geq1$; +\item $m_p=1$ iff +\[ + v_p(\ord\Theta_{q,s})=v_p(2^{qs}-1); +\] +\item the easy Kummer norm is +\[ + \Norm_{F/B}(x+1)=1+\alpha_r, +\] +but $p\nmid |B^{\times}|$, so this norm cannot see the required +$p$-primary obstruction. The norm to $K$ is genuinely transverse. +\end{enumerate} +\end{proposition} + +\begin{proof} +Lenstra's component theorem gives +$\kappa_h=\sum_{t\in\Qset(h)}\kappa_t$ and, for each component $t$, +$t\mid h$ and $\gcd(t,h/t)=1$ +\cite[Corollary~2.2]{Lenstra77}. Thus the singleton assumption identifies +$\kappa_h=\kappa_q$. Since $h\mid d(\kappa_h)=d(\kappa_q)=qb_r$, one +has $h=qs$ with $s\mid b_r$. The +intersection and compositum statements follow from the gcd/lcm rules for +finite subfields and $\gcd(q,b_r)=1$. + +Since $p>h\geq r$, one has $p\nmid q$. Also $f(p)=qs\nmid b_r$, so +$p\nmid2^{b_r}-1$. The relation $x^q=\alpha_r\in B$ therefore gives +$p\nmid\ord(x)$, proving (i), including the full $p$-primary statement. +Part (ii) is Proposition~\ref{prop:norm} applied to $x+1$. Finally, +$X^q+\alpha_r$ is the minimal polynomial of $x$ over $B$, and evaluating +it at $1$ gives (iii); the invisibility follows again from +$p\nmid2^{b_r}-1$. +\end{proof} + +\begin{corollary}[Hilbert--90 cross-ratio for the transverse class] +\label{cor:singleton-cross-ratio} +Retain Proposition~\ref{prop:singleton-transverse}, put +\(y=x+1\), and define +\[ + z=x^{2^{b_r}-1}, + \qquad + U=y^{2^{b_r}-1}=\frac{zx+1}{x+1}. +\] +Then \(z\) has exact order \(q\), and +\[ + U\in\ker\!\left(\Norm_{F/B}:F^\times\longrightarrow B^\times\right). +\] +For every prime \(p\) with \(f(p)=h=qs\), +\[ + v_p(\ord U) + =v_p(\ord(x+1)) + =v_p(\ord\Theta_{q,s}). \tag{\(\mathsf T\)} +\] +Thus the singleton-one arm is equivalently the assertion that the +explicit Hilbert--90 cross-ratio +\((1+zx)/(1+x)\) contains the full \(p\)-primary part. In particular, +the large transverse norm may be replaced, for the unresolved primary +component, by one norm-one cyclotomic cross-ratio. On the +one-dimensional quotient +\[ + \mathcal V=F^\times/(F^\times)^p +\] +the automorphism \(\sigma=\Frob^{b_r}\) acts by +\(\lambda=2^{b_r}\pmod p\), an element of exact order \(q\), and +\[ + [U]=(\lambda-1)[y],\qquad + [\Theta_{q,s}]=(b_r/s)[y]. \tag{\(\mathsf T_1\)} +\] +Both displayed scalars are nonzero, whereas +\[ + (1+\sigma+\cdots+\sigma^{q-1})[y]=0. \tag{\(\mathsf T_2\)} +\] +Finally the same target has the exact translated-composition form +\[ + m_p=1 + \iff + \bigl((T^p+1)^q+\alpha_r\bigr) + \text{ is irreducible over }B. \tag{\(\mathsf T_3\)} +\] +\end{corollary} + +\begin{proof} +The \(2^{b_r}\)-Frobenius generates +\(\operatorname{Gal}(F/B)\) and sends \(x\) to \(zx\). Since +\(x^q=\alpha_r\in B\), the class \(xB^\times\) has exact order \(q\): +if \(x^d\in B\) for \(0h\ge r\), one has \(p\nmid b_r/s\). Thus \(p\nmid A\), so this +exponentiation also preserves the \(p\)-primary part, proving the +second equality. + +The quotient \(\mathcal V\) has order \(p\). Since +\(\operatorname{ord}_p(2)=qs\), \(b_r=s(b_r/s)\), and +\(\gcd(q,b_r)=1\), the order of \(2^{b_r}\) modulo \(p\) is exactly +\(q\). The definitions give +\([U]=(\sigma-1)[y]=(\lambda-1)[y]\), while the preceding congruence +for \(A\) gives the second equality in \((\mathsf T_1)\). The geometric +sum in \((\mathsf T_2)\) vanishes because \(\lambda\) has exact order +\(q\). This is the representation-theoretic reason that the easy +\(B\)-valued norm sees none of the target class. + +The minimal polynomial of \(y=x+1\) over \(B\) is +\((Y+1)^q+\alpha_r\). Since \(p\) is odd, Capelli's lemma says that +its composition with \(T^p\) is irreducible exactly when \(y\) is not +a \(p\)-th power in \(F\). Proposition~\ref{prop:singleton-transverse} +identifies this with \(m_p=1\), proving \((\mathsf T_3)\). +\end{proof} + +\begin{proposition}[one projective-order target for each odd Kummer spine] +\label{prop:singleton-projective-spine} +Fix an odd prime \(r\), put \(b=d(\alpha_r)\), and define +\[ + x_0=\alpha_r,\qquad x_a=\kappa_{r^a}\ (a\geq1),\qquad + y_a=x_a+1,\qquad F_a=\mathbb F_{2^{r^ab}}. +\] +Then, for every \(a\geq1\), +\[ + \Norm_{F_a/F_{a-1}}(y_a)=y_{a-1}. \tag{\(\mathsf P_1\)} +\] +The projective quotient +\[ + G_{r,a}=F_a^\times/F_{a-1}^\times +\] +is cyclic of order +\[ + \mathcal L_{r,a} + =\frac{2^{r^ab}-1}{2^{r^{a-1}b}-1} + =\Phi_{r^a}(2^b). \tag{\(\mathsf P_2\)} +\] +If \(p\ne r\) is a prime divisor of \(\mathcal L_{r,a}\), then +\[ + \operatorname{ord}_p(2^b)=r^a,\qquad + f(p)=r^as\quad\text{for some }s\mid b, + \qquad \Qset(f(p))=\{r^a\}. \tag{\(\mathsf P_3\)} +\] +Conversely every prime \(p\) in a singleton row +\(\Qset(f(p))=\{r^a\}\) occurs in this way. For every such \(p\), +\[ + m_p=1 + \iff + v_p\!\left(\ord(y_aF_{a-1}^\times)\right) + =v_p(\mathcal L_{r,a}). \tag{\(\mathsf P_4\)} +\] +Consequently every singleton-one test for a fixed \(r\) is a primary-order +test on this one projective class, simultaneously for all residue-degree +divisors \(s\mid b\). For \(r\ne3\), the \(0/1/4\) rule asks that its +prime-to-\(r\) part be maximal. For \(r=3\), the two cyclotomic halves +instead split as in the following remark. +\end{proposition} + +\begin{proof} +The Kummer tower equations are +\(x_1^r=\alpha_r\) and \(x_a^r=x_{a-1}\) for \(a>1\). +The conjugates over \(F_{a-1}\) are \(\xi x_a\), \(\xi\in\mu_r\); +evaluating the corresponding binomial at one gives +\[ + \Norm_{F_a/F_{a-1}}(x_a+1)=x_{a-1}+1, +\] +which proves \((\mathsf P_1)\). The field degrees give +\((\mathsf P_2)\). + +For \(p\ne r\), the standard cyclotomic-divisor criterion applied to +\(p\mid\Phi_{r^a}(2^b)\) gives +\(\operatorname{ord}_p(2^b)=r^a\). If \(h=f(p)\), then +\[ + \frac{h}{\gcd(h,b)}=r^a. +\] +Since \(h\mid r^ab\), this writes \(h=r^as\) with \(s\mid b\). +Now \(h\mid d(\kappa_{r^a})=r^ab\), so the defining minimality gives +\(\kappa_h\leq\kappa_{r^a}\). But \(r^a\mid h\), and +\(\kappa_{r^a}\) is the least element whose degree is divisible by +\(r^a\), so the reverse inequality holds. Hence +\(\kappa_h=\kappa_{r^a}\), and uniqueness in Lenstra's component +theorem gives \(\Qset(h)=\{r^a\}\). +Conversely Proposition~\ref{prop:singleton-transverse} +writes every singleton order as \(h=r^as\), \(s\mid b\), and then +\(\operatorname{ord}_p(2^b)=r^a\), so \(p\mid\mathcal L_{r,a}\). + +Such a \(p\) does not divide \(|F_{a-1}^\times|\), because the order +of \(2^b\) modulo \(p\) is \(r^a\). Its entire primary contribution +to \(|F_a^\times|\) therefore lies in the projective quotient. +The exact power criterion now identifies non-\(p\)-power of \(y_a\), +equivalently \(m_p=1\), with the full \(p\)-primary order of its +projective class. This proves \((\mathsf P_4)\). +\end{proof} + +\begin{proposition}[exact two-half decomposition of the cubic projective quotient] +\label{prop:cubic-projective-split} +Let \(a\geq1\), put \(h=3^a\), \(\zeta=\kappa_h\), +\(y=\zeta+1\), and +\(\gamma_a=\zeta+\zeta^{-1}\in\mathbb F_{2^h}^\times\). Then +\[ + \Phi_h(4)=A_aB_a, + \qquad A_a=\Phi_h(2),\qquad B_a=\Phi_{2h}(2), +\] +with \(\gcd(A_a,B_a)=1\) and \(v_3(B_a)=1\). The projective order of +\(y\) in +\(\mathbb F_{2^{2h}}^\times/\mathbb F_{2^{2h/3}}^\times\) is +\[ + 3\,\frac{\ord(\gamma_a)} + {\gcd(\ord(\gamma_a),2^{h/3}-1)}. \tag{\(\mathsf{CPS}\)} +\] +Consequently every prime \(\ell\ne3\) dividing \(B_a\) is absent from +the translate-one projective class, unconditionally; it satisfies +\(\ord_\ell(2)=2h\). The \(A_a\)-part is full exactly when the new +projective part of \(\gamma_a\) is full, and the all-level assertion is +equivalent to Gaussian-period primitivity \(C_a\). There is no overlap +between the ordinary and exceptional halves. The missing +\(B_a/3=\Psi_a\) +part is precisely the translate-four residue-symbol problem \(D'_a\). +\end{proposition} + +\begin{proof} +The identity +\(\Phi_{3^a}(X^2)=\Phi_{3^a}(X)\Phi_{2\cdot3^a}(X)\) +gives the factorization. With \(X=2^{3^{a-1}}\), the two factors are +\(X^2+X+1\) and \(X^2-X+1\); a common odd divisor divides their +difference \(2X\), so the gcd is one. Since the exponent in \(X\) is +odd, LTE applied to \((X^3+1)/(X+1)\) gives \(v_3(B_a)=1\). + +The half-angle identity gives +\[ + \ord(y)=3^{a+1}\ord(\gamma_a), + \qquad \ord(\gamma_a)\mid2^h-1. +\] +The base group has \(3\)-valuation \(a\), and +\[ + \gcd(2^h-1,2^{2h/3}-1)=2^{h/3}-1. +\] +In a cyclic group, the order modulo its unique base subgroup is the +element order divided by its gcd with the base-group order. This proves +\((\mathsf{CPS})\). If \(\ell\ne3\) divides \(B_a\), the +cyclotomic-divisor criterion gives \(\ord_\ell(2)=2h\), so \(\ell\) +divides neither \(3^{a+1}\) nor \(2^h-1\). The remaining assertions +follow from the two displayed factors and the definitions of \(C_a\) +and \(D'_a\). +\end{proof} + +\begin{remark}[the first nontrivial split] +At \(a=2\), one has +\(\ord(\gamma_2)=2^9-1=7\cdot73\), and therefore +\[ + \ord\bigl((\kappa_9+1)\mathbb F_{2^6}^\times\bigr) + =3\cdot73, + \qquad + \Phi_9(4)=3\cdot19\cdot73. +\] +Thus the missing prime \(19\) is exactly the exceptional +\(\Phi_{18}(2)/3\) half, not a failure of the projective reduction. +\end{remark} + +\subsection{The selected relative cyclotomic unit} + +\begin{proposition}[selected-prime cyclotomic Kummer form] +\label{prop:singleton-cyclotomic-kummer} +Fix an odd prime \(r\), put \(b=d(\alpha_r)\) and +\(M_r=\ord(\alpha_r)\), and retain +\(x_a=\kappa_{r^a}\), \(y_a=x_a+1\), +\(F_a=\mathbb F_{2^{r^ab}}\). Set \(N_a=r^aM_r\). Then +\[ + \ord(x_a)=N_a, + \qquad \ord_{N_a}(2)=r^ab. \tag{\(\mathsf{CK}_1\)} +\] +Let \(p\ne r\) divide +\(\mathcal L_{r,a}=\Phi_{r^a}(2^b)\), choose a primitive complex +\(N_a\)-th root \(\zeta_{N_a}\), and choose a prime +\(\mathfrak P\mid2\) of +\[ + K_{a,p}=\mathbb Q(\mu_{N_a},\mu_p) +\] +whose residue map sends \(\zeta_{N_a}\) to \(x_a\). Its residue field +is \(F_a\). For \(\varepsilon_a=1-\zeta_{N_a}\), the following are +equivalent: +\begin{enumerate}[label=(\roman*),leftmargin=*] +\item the class \(y_aF_{a-1}^\times\) has full \(p\)-primary order +\(p^{v_p(\mathcal L_{r,a})}\); +\item \(y_a\notin(F_a^\times)^p\); +\item \(\left(\frac{\varepsilon_a}{\mathfrak P}\right)_p\ne1\); +\item \(\Frob_{\mathfrak P}\) is nontrivial in +\(K_{a,p}(\sqrt[p]{\varepsilon_a})/K_{a,p}\). +\end{enumerate} +Thus, for \(r\ne3\), the predicted maximal prime-to-\(r\) projective +order is exactly a simultaneous nonsplitting assertion at the +Conway-selected primes over two for these cyclotomic \(S\)-unit Kummer +extensions. If \(N_a\) is not a prime power, \(\varepsilon_a\) is a +global cyclotomic unit; in every case it is a unit at \(\mathfrak P\). +\end{proposition} + +\begin{proof} +The binomial \(X^r-\alpha_r\) is irreducible over +\(B=\mathbb F_{2^b}\). Hence +\(\alpha_r\notin(B^\times)^r\). In particular \(r\mid2^b-1\), and +cyclicity of \(B^\times\) gives +\[ + v_r(M_r)=v_r(2^b-1). +\] +If an element \(u\) has order \(r^c m\), with \(c\geq1\) and +\(r\nmid m\), and \(v^r=u\), then \(\ord(v)=r^{c+1}m\). +Applying this first to \(x_1^r=\alpha_r\) and then to +\(x_a^r=x_{a-1}\) proves \(\ord(x_a)=r^aM_r\). Since +\(\mathbb F_2(x_a)=F_a\), the degree of a root of unity of order +\(N_a\) gives \(\ord_{N_a}(2)=r^ab\). + +For \(p\ne r\) dividing \(\Phi_{r^a}(2^b)\), the +cyclotomic-divisor criterion gives \(\ord_p(2^b)=r^a\). Hence \(p\) +divides \(|F_a^\times|\) but not \(|F_{a-1}^\times|\). Also +\(p\nmid N_a\): if \(p\mid M_r\), then \(\ord_p(2)\mid b\), +contradicting \(\ord_p(2^b)=r^a>1\). Therefore the entire \(p\)-Sylow +subgroup of the projective quotient comes from \(F_a^\times\), and in +a cyclic group an element has full \(p\)-primary order iff it is not a +\(p\)-th power. This proves (i)\(\Leftrightarrow\)(ii). + +The prime above two exists because \(x_a\) is a primitive +\(N_a\)-th root with degree \(r^ab\). The completion of +\(\mathbb Q(\mu_{N_a})\) at this prime is the unramified extension of +\(\mathbb Q_2\) of degree \(\ord_{N_a}(2)=r^ab\). Since +\(\ord_p(2)\mid r^ab\), its residue field already contains \(\mu_p\), +so adjoining \(\mu_p\) does not enlarge that residue field. Its reduction +sends \(\varepsilon_a\) to \(1+x_a=y_a\). The usual power-residue +formula gives +\[ + \left(\frac{\varepsilon_a}{\mathfrak P}\right)_p + =\overline{\varepsilon_a}^{\,(|F_a|-1)/p}, +\] +which is nontrivial exactly when the residue is not a \(p\)-th power, +proving (ii)\(\Leftrightarrow\)(iii). Finally, \(p\) is odd and the +residue characteristic is two, so the \(p\)-power map is an automorphism +on the principal-unit group at \(\mathfrak P\). The local Kummer +extension is therefore unramified of degree \(p\) when the residue is +not a \(p\)-th power, and split when it is; its Frobenius acts on +\(\sqrt[p]{\varepsilon_a}\) by the displayed residue symbol. This +proves (iii)\(\Leftrightarrow\)(iv). +\end{proof} + +\begin{proposition}[relative cyclotomic unit at the selected prime] +\label{prop:singleton-relative-unit} +Retain the notation of +Proposition~\ref{prop:singleton-cyclotomic-kummer}, and put +\[ + q_0=2^{r^{a-1}b},\qquad Q=q_0^r=2^{r^ab},\qquad + N=N_a. +\] +The automorphism +\[ + \sigma(\zeta_N)=\zeta_N^{q_0} +\] +generates +\(\operatorname{Gal}(\mathbb Q(\mu_N)/\mathbb Q(\mu_{N/r}))\). +For \(\varepsilon=1-\zeta_N\), the relative cyclotomic unit +\[ + \rho=\frac{\sigma(\varepsilon)}{\varepsilon} + =\frac{1-\zeta_N^{q_0}}{1-\zeta_N} \tag{\(\mathsf{RU}_1\)} +\] +is a global unit and has relative norm one. If \(p\ne r\) divides +\(\mathcal L_{r,a}\), extend \(\sigma\) to +\(K_{a,p}=\mathbb Q(\mu_N,\mu_p)\) by fixing \(\mu_p\), and let +\(\mathfrak P\) be the Conway-selected prime of the preceding +proposition. Then +\[ + \bar\rho=y_a^{q_0-1},\qquad + \left(\frac{\rho}{\mathfrak P}\right)_p + =\left(\frac{\varepsilon}{\mathfrak P}\right)_p^{\,q_0-1}. + \tag{\(\mathsf{RU}_2\)} +\] +The residue class \(\lambda=q_0\pmod p\) has exact order \(r\). +Consequently \(\lambda-1\ne0\), and the four equivalent conditions +of Proposition~\ref{prop:singleton-cyclotomic-kummer} are also +equivalent to +\[ + \left(\frac{\rho}{\mathfrak P}\right)_p\ne1. \tag{\(\mathsf{RU}_3\)} +\] +Thus the ordinary target is already a residue-symbol problem for an +explicit norm-one \emph{global unit}; the inherited lower-layer factor +has been removed. +\end{proposition} + +\begin{proof} +Since \(x_a^r=x_{a-1}\in F_{a-1}\), one has +\(q_0\equiv1\pmod{N/r}\). The \(q_0\)-Frobenius has exact order \(r\) +on \(F_a/F_{a-1}\), so \(q_0\) has exact order \(r\) modulo \(N\). +Moreover \(r\mid M_r\) by the preceding proof, so +\([\mathbb Q(\mu_N):\mathbb Q(\mu_{N/r})]=r\). This proves the +assertion about \(\sigma\). The quotient in +\((\mathsf{RU}_1)\) is a global unit: if \(N\) is not a prime power, +both numerator and denominator are cyclotomic units, while if \(N\) +is a prime power their principal ideals are the same unique prime +above the conductor prime. Telescoping gives +\[ + \Norm_{\mathbb Q(\mu_N)/\mathbb Q(\mu_{N/r})}(\rho) + =\prod_{j=0}^{r-1}\frac{\sigma^{j+1}(\varepsilon)} + {\sigma^j(\varepsilon)}=1. +\] + +Reduction at \(\mathfrak P\), in characteristic two, gives +\[ + \bar\rho=\frac{1+x_a^{q_0}}{1+x_a} + =\frac{(1+x_a)^{q_0}}{1+x_a}=y_a^{q_0-1}, +\] +and the power-residue formula gives \((\mathsf{RU}_2)\). +Write \(h=\ord_p(2)=r^as\), where \(s\mid b\), as in +\((\mathsf P_3)\). Every prime divisor of \(b=d(\alpha_r)\) is +smaller than \(r\), so \(r\nmid b\). Therefore +\[ + \ord_p(q_0) + =\frac{r^as}{\gcd(r^as,r^{a-1}b)}=r. +\] +Raising an element of \(\mu_p\) to \(q_0-1\), equivalently to +\(\lambda-1\), is therefore an automorphism. This proves +\((\mathsf{RU}_3)\). +\end{proof} + +\begin{proposition}[ordinary projective polynomial and binary sections] +\label{prop:ordinary-binary-sections} +Retain Proposition~\ref{prop:singleton-relative-unit}, and write +\[ + F_0=F_{a-1}=\mathbb F_{q_0},\qquad F=F_a,\qquad + x=x_a,\qquad A=x_{a-1}=x^r,\qquad y=1+x. +\] +Put +\[ + \zeta=x^{q_0-1}\in F_0,\qquad + \rho=y^{q_0-1}=\frac{1+\zeta x}{1+x},\qquad + L=\frac{q_0^r-1}{q_0-1}. +\] +Then \(\zeta\) has exact order \(r\), and the monic irreducible +polynomial of \(\rho\) over \(F_0\) is +\[ + H_{r,a}(T) + =\frac{(T+1)^r+A(T+\zeta)^r}{1+A}. \tag{\(\mathsf{OB}_1\)} +\] +In particular, +\[ +\begin{aligned} + H_{r,a}(0)&=1,& + \operatorname{Tr}_{F/F_0}(\rho)&=\frac{1+A\zeta}{1+A},\\ + H_{r,a}(1)&=\frac{A(1+\zeta)^r}{1+A},& + H_{r,a}(\zeta)&=\frac{(1+\zeta)^r}{1+A}. +\end{aligned} \tag{\(\mathsf{OB}_2\)} +\] +Also \(\Norm_{F/F_0}(\rho)=1\), so \(H_{r,a}\mid T^L-1\). + +Let \(p\ne r\) be a prime divisor of \(L\), and put \(e=L/p\). +The ordinary arm succeeds at \(p\), with its full \(p\)-primary +valuation, exactly when +\[ + H_{r,a}(T)\nmid T^e-1. \tag{\(\mathsf{OB}_3\)} +\] +For \(0\leq kp\). The archimedean places +are complex. Global reciprocity therefore reduces to the already +trivial products \((\mathsf{RUB}_4)\), one for each prime of \(K\) above +two. Moreover \((\rho)=1\), so ideal-theoretic Stickelberger or +Jacobi-sum factorizations alone retain no datum that can distinguish +the selected value. +\end{proof} + +\begin{remark}[every unweighted base-field selector cancels] +\label{rem:base-selector-cancel} +The cancellation in \((\mathsf{RUB}_4)\) is not peculiar to the second +argument \(2\). Retain \(K=\mathbb Q(\mu_N)\), \(E=K(\mu_p)\), and the +selected prime \(\mathfrak q\mid2\). Label its \(p-1\) lifts +\(\mathfrak P_c\), \(c\in\mathbb F_p^\times\), so that the +automorphism carrying \(\mathfrak P_1\) to \(\mathfrak P_c\) sends +\(\zeta_p\) to \(\zeta_p^c\). For every \(w\in K^\times\), if +\[ + R_w=(\rho,w)_{\mathfrak P_1,p}, +\] +then Galois equivariance gives +\[ + (\rho,w)_{\mathfrak P_c,p}=R_w^c, + \qquad + \prod_{c\in\mathbb F_p^\times} + (\rho,w)_{\mathfrak P_c,p} + =R_w^{p(p-1)/2}=1. \tag{\(\mathsf{RUB}_5\)} +\] +Thus no unweighted selector from the base cyclotomic field can make +global reciprocity isolate one chosen lift above two. A weighted +eigenspace identity or a Jacobi-sum selector outside \(K\) may evade +\((\mathsf{RUB}_5)\), but ideal factorization alone then leaves local +unit symbols to evaluate. The same cancellation applies to the +exceptional arm with the current prime \(\ell\) in place of \(p\): +since \(\ell\nmid15h\) and \(\ord_\ell(2)=2h\mid4h\), each of the two +base primes above two splits into \(\ell-1\) lifts and its unweighted +orbit product is one. Thus merely distinguishing the two base primes +does not distinguish their individual lifts. +\end{remark} + +\begin{proposition}[Teichmuller-weighted selector reciprocity] +\label{prop:weighted-selector-reciprocity} +Let \(M\) be odd, let \(p\nmid M\) be an odd prime, and put +\[ + K=\mathbb Q(\mu_M),\qquad E=K(\mu_p),\qquad + f=\ord_p(2),\qquad d=\ord_M(2). +\] +Assume \(f\mid d\). For each prime \(\mathfrak q\mid2\) of \(K\), +choose \(\mathfrak P_{\mathfrak q,1}\mid\mathfrak q\) in \(E\), and +write +\[ + \mathfrak P_{\mathfrak q,c} + =\tau_c\mathfrak P_{\mathfrak q,1},\qquad + \tau_c(\zeta_p)=\zeta_p^c + \quad(c\in\mathbb F_p^\times). +\] +Normalize every valuation above two by +\(v_{\mathfrak P}(2)=1\). For a global unit +\(u\in\mathcal O_K^\times\), set +\[ + A_{\mathfrak q}=(u,2)_{\mathfrak P_{\mathfrak q,1},p},\qquad + W_{\mathfrak q}(w) + =\sum_{c\in\mathbb F_p^\times} + c\,v_{\mathfrak P_{\mathfrak q,c}}(w) + \in\mathbb F_p. +\] +Then, for every \(w\in E^\times\), +\[ + \prod_{c\in\mathbb F_p^\times} + (u,w)_{\mathfrak P_{\mathfrak q,c},p} + =A_{\mathfrak q}^{W_{\mathfrak q}(w)}. \tag{\(\mathsf{WS}_1\)} +\] +If the divisor of \(w\) is supported above two, global reciprocity +becomes the exact weighted identity +\[ + \prod_{\mathfrak q\mid2} + A_{\mathfrak q}^{W_{\mathfrak q}(w)} + =\prod_{\lambda\mid p}(u,w)_{\lambda,p}^{-1}. \tag{\(\mathsf{WS}_2\)} +\] +Moreover +\[ + W_{\mathfrak q}(\tau_e w)=eW_{\mathfrak q}(w), \tag{\(\mathsf{WS}_3\)} +\] +and +\[ + W_{\mathfrak q}(w)=0 + \quad\hbox{if }w\in K^\times + \quad\hbox{or }w\in\mathbb Q(\mu_p)^\times. \tag{\(\mathsf{WS}_4\)} +\] +Thus a selector which isolates a chosen lift above two must be +genuinely mixed between the \(M\)- and \(p\)-cyclotomic directions. +Even then, \((\mathsf{WS}_2)\) retains the local factors above \(p\): +they are not determined by the ideal-theoretic weights. +\end{proposition} + +\begin{proof} +The completion \(K_{\mathfrak q}\) has residue degree \(d\), so +\(f\mid d\) implies \(\mu_p\subset K_{\mathfrak q}\). Hence +\(\mathfrak q\) splits completely in \(E/K\). At a place above two, +the tame \(p\)-Hilbert symbol of two local units is one. Since \(u\) +is a unit, bilinearity therefore gives +\[ + (u,w)_{\mathfrak P,p} + =(u,2)_{\mathfrak P,p}^{v_{\mathfrak P}(w)}. +\] +Galois equivariance gives +\[ + (u,2)_{\mathfrak P_{\mathfrak q,c},p} + =\tau_c(A_{\mathfrak q})=A_{\mathfrak q}^{c}, +\] +which proves \((\mathsf{WS}_1)\). If \((w)\) is supported above two, +then away from \(2p\) both entries are units and their tame symbol is +one; the archimedean factors are also one. The global product formula +therefore gives \((\mathsf{WS}_2)\). Notice that no triviality is +asserted at the wild places above \(p\). + +Reindexing the valuations proves \((\mathsf{WS}_3)\). If +\(w\in K^\times\), its valuations are constant in \(c\), and +\(\sum_{c\in\mathbb F_p^\times}c=0\). If +\(w\in\mathbb Q(\mu_p)^\times\), the restrictions of +\(\mathfrak P_{\mathfrak q,c}\) and +\(\mathfrak P_{\mathfrak q,c2^j}\) to \(\mathbb Q(\mu_p)\) agree +for \(0\leq j1\), it does not by itself give the full +\(p\)-primary equality in \((O)\). If the chosen divisor satisfies +\(v_p(\mathcal L_{r,a})=1\), however, its instance of \((O)\) follows. +In particular, if \(r\ne3\) and \(\mathcal L_{r,a}/r\) is prime, then +the entire ordinary target \((O)\) at this layer holds. +\end{proposition} + +\begin{proof} +If \(d_{r,a}=1\), then \(y_a\), and hence \(x_a=y_a+1\), lies in +\(F_{a-1}\), contrary to \([F_a:F_{a-1}]=r\). If \(d_{r,a}=r\), then +\(y_a^r=c\in F_{a-1}^\times\). Since \(y_a\) has degree \(r\) over +\(F_{a-1}\), its minimal polynomial would be \(Y^r-c\). On the other +hand \(x_a^r=x_{a-1}\) shows that its monic degree-\(r\) minimal +polynomial is +\[ + (Y+1)^r+x_{a-1}. +\] +The coefficient of \(Y^{r-1}\) in the latter is +\(r\equiv1\pmod2\), whereas it is zero in \(Y^r-c\), a contradiction. + +Because \(r\mid2^b-1\), also \(q_0\equiv1\pmod r\). LTE gives +\[ + v_r(\mathcal L_{r,a}) + =v_r(q_0^r-1)-v_r(q_0-1)=v_r(r)=1. +\] +Thus a divisor of \(\mathcal L_{r,a}\) other than \(1\) and \(r\) +has a prime divisor different from \(r\). The final assertions follow +from \((\mathsf P_4)\), with the stated full-valuation caveat. +\end{proof} + +\begin{proposition}[signed conjugate-ball order sieve] +\label{prop:singleton-conjugate-ball} +Retain the notation of +Proposition~\ref{prop:singleton-projective-spine}. Put +\[ + R=\frac{r-1}{2},\qquad + B_r^{\pm} + =\sum_{u=0}^{R}\sum_{v=0}^{R} + [X^uY^v]\! + \left(1+\frac{X}{1-X}+\frac{Y}{1-Y}\right)^r. \tag{\(\mathsf{CS}_0\)} +\] +Then +\[ + d_{r,a}=\ord(y_aF_{a-1}^{\times})\geq B_r^{\pm}. \tag{\(\mathsf{CS}_1\)} +\] +Consequently, if \(p\ne r\) divides \(\mathcal L_{r,a}\) and +\[ + p>\frac{\mathcal L_{r,a}}{B_r^{\pm}}, \tag{\(\mathsf{CS}_2\)} +\] +then the Conway-selected \(p\)-th power-residue symbol is nontrivial and +\[ + v_p(d_{r,a})=v_p(\mathcal L_{r,a}). \tag{\(\mathsf{CS}_3\)} +\] +Thus every prime factor above the explicit complementary threshold is +proved in the ordinary arm, including its full primary valuation. +\end{proposition} + +\begin{proof} +Write \(q_0=|F_{a-1}|\), let \(\sigma(z)=z^{q_0}\) generate +\(\operatorname{Gal}(F_a/F_{a-1})\), and set +\[ + \zeta=\frac{\sigma(x_a)}{x_a}. +\] +The Kummer equation \(x_a^r=x_{a-1}\) and the degree-\(r\) irreducibility +show that \(\zeta\) is a primitive \(r\)-th root of unity. Since +\(r\mid q_0-1\), it belongs to \(F_{a-1}\), and +\[ + \sigma^j(y_a)=1+\zeta^j x_a\qquad(0\leq jp, \tag{\(\mathsf{KE}\)} +\] +there is a nonzero \(x\in L_\zeta\) such that +\[ + x+1\in(K^\times)^p. +\] +Thus irreducibility of the Kummer binomial, exact degree, and the +Frobenius eigenrelation still do not force the ordinary singleton +translate to have a nonzero \(p\)-Kummer class. + +For every odd prime \(r\), such characteristic-two countermodels occur +over arbitrarily large base fields. Indeed, choose a prime \(p\) with +\(\ord_p(2)=r\), put \(t=\ord_r(2)\), and take +\[ + q=2^{\,t(1+kr)}\qquad(k\geq0). +\] +Then the two displayed congruence conditions hold, and +\((\mathsf{KE})\) holds for all sufficiently large \(k\). +\end{proposition} + +\begin{proof} +By the normal-basis theorem, the \(q\)-Frobenius on \(K\), viewed as +an \(\mathbb F_q\)-linear operator, is the regular representation of +the cyclic group of order \(r\). Since +\(\mu_r\subset\mathbb F_q\) and the characteristic does not divide +\(r\), its \(r\) eigenspaces are one-dimensional. Hence +\(L_\zeta\) is a line. A nonzero \(v\in L_\zeta\) does not lie in +\(\mathbb F_q\), and, as \(r\) is prime, it has degree \(r\). +Moreover +\[ + (v^r)^q=v^r. +\] +If \(v^r=a^r\) for some \(a\in\mathbb F_q^\times\), then +\(v/a\in\mu_r\subset\mathbb F_q\), a contradiction. Kummer's +prime-degree criterion therefore makes \(X^r-v^r\) irreducible. +The same argument applies to \(x=cv\) for every +\(c\in\mathbb F_q^\times\). + +Let \(\chi:K^\times\to\mu_p\) be a character of exact order \(p\); +its kernel is \((K^\times)^p\). No element \(1+cv\), with +\(c\in\mathbb F_q\), vanishes. Character orthogonality gives +\[ +\begin{split} + N&:=\#\{c\in\mathbb F_q:1+cv\in(K^\times)^p\}\\ + &=\frac1p\left( + q+\sum_{j=1}^{p-1}\sum_{c\in\mathbb F_q} + \chi^j(1+cv)\right). +\end{split} +\] +The element \(v^{-1}\) has degree \(r\), so Katz's affine-line +estimate~\cite{Katz89} gives, for \(1\leq j1. +\] +The value \(c=0\) accounts for only one solution, so another has +\(c\ne0\); the corresponding \(x=cv\) proves the first assertion. + +For the final assertion, Zsigmondy's theorem (whose exponent-six +exception is irrelevant for the odd prime \(r\)) supplies a prime divisor +\(p\) of \(2^r-1\) with \(\ord_p(2)=r\). Since +\(t=\ord_r(2)\mid r-1\), the exponent \(t(1+kr)\) is divisible by +\(t\) and coprime to \(r\). Hence \(r\mid q-1\) and +\(\ord_p(q)=r\). Letting \(k\) grow proves +\((\mathsf{KE})\). +\end{proof} + +\begin{proposition}[tower-faithful common-section countermodels] +\label{prop:ordinary-tower-no-go} +Let \(r\) and \(p\) be distinct odd primes, let \(\nu\geq1\), put +\(R=r^\nu\), and let \(q\) be even with +\[ + r\mid q-1,\qquad \ord_p(q)=R. +\] +Choose any +\[ + A_*\in\F_q^\times\setminus(\F_q^\times)^r, + \qquad \theta^R=A_*, +\] +in \(K=\F_{q^R}\). Then \(X^R-A_*\) is irreducible over \(\F_q\). +If +\[ + \mathcal N + =\#\{c\in\F_q:1+c\theta\in(K^\times)^p\}, +\] +then +\[ + \mathcal N\geq + \frac{q-(p-1)(R-1)\sqrt q}{p}. \tag{\(\mathsf{TN}_1\)} +\] + +For every nonzero scalar counted by \(\mathcal N\), put +\[ + x_\nu=c\theta,\qquad + x_i=x_\nu^{r^{\nu-i}}\ (0\leq i<\nu),\qquad + \alpha_c=x_0=c^RA_*. +\] +Then +\[ + x_i^r=x_{i-1},\qquad + [\F_q(x_i):\F_q]=r^i, \tag{\(\mathsf{TN}_2\)} +\] +and every binomial \(X^{r^i}-\alpha_c\) is irreducible over \(\F_q\). +If \(M=\ord(\alpha_c)\), then +\[ + v_r(M)=v_r(q-1),\qquad + \ord(x_i)=r^iM. \tag{\(\mathsf{TN}_3\)} +\] + +Put +\[ + q_0=q^{R/r},\qquad + L=\frac{q^R-1}{q_0-1},\qquad e=\frac Lp. +\] +The projective class of \(1+x_\nu\) in +\(K^\times/\F_{q_0}^\times\) misses the full \(p\)-primary part of +its order, with no assumption on \(v_p(L)\). More precisely, for the +section polynomials of Proposition~\ref{prop:ordinary-binary-sections}, +\[ + P_{\alpha_c}(Z)\mid R_{e,d}(Z) + \quad(1\leq d1+Rb\sqrt q, \tag{\(\mathsf{TN}_6\)} +\] +which holds for all sufficiently large \(j\). Since +\(\F_2(x_i)\) contains \(\F_2(\alpha_c)=\F_q\), +\((\mathsf{TN}_2)\) gives the degree in \((\mathsf{TN}_5)\); +\((\mathsf{TN}_3)\) gives its order statement. Finally +\(\tau\mid r-1\), so \(r\nmid b\) and every prime divisor of \(b\) +is smaller than \(r\). +\end{proof} + +\begin{remark}[the common zero locus is large] +\label{rem:ordinary-common-sections} +In Proposition~\ref{prop:ordinary-tower-no-go}, define +\[ + D_e(Z)= + \gcd_{\substack{1\leq d0$ with $2^j\equiv\pm1\pmod{3^{k+1}}$ is $3^k$. +Thus the displayed monic polynomial, which has degree $3^k$, is the +minimal polynomial. Its root is primitive precisely when the +polynomial is primitive. Finally, writing $D_{3^k}=P_k+1$ and using +$D_3(Y)=Y^3+Y$ gives +$P_{k+1}=(P_k+1)^3+(P_k+1)+1=P_k^3+P_k^2+1$. +\end{proof} + +\begin{proposition}[the coefficient recursion does not preserve primitivity] +\label{prop:cubic-recursion-no-go} +Over \(\mathbb F_2\), put +\[ + F=X^{10}+X^3+1, + \qquad + H=F^3+F^2+1 + =X^{30}+X^{23}+X^{16}+X^{10}+X^9+X^3+1. +\] +Then \(F\) is primitive and \(H\) is irreducible, but a root of \(H\) +has order +\[ + 7161=3\cdot7\cdot11\cdot31 + <2^{30}-1. +\] +Thus neither irreducibility of the next polynomial nor primitivity of +the preceding polynomial turns the recursion in +Proposition~\ref{prop:dickson-iterate} into a formal induction. +Additional structure of the actual \(P_k\) sequence---for example its +power-of-three degrees and cyclotomic ancestry---is required. +\end{proposition} + +\begin{proof} +Rabin's criterion is certified by +\[ + X^{2^{10}}\equiv X\pmod F, + \qquad + \gcd(F,X^{2^5}+X)=\gcd(F,X^{2^2}+X)=1. +\] +Moreover \(2^{10}-1=3\cdot11\cdot31\), and direct reduction gives +\[ + X^{1023}\equiv1\pmod F, +\] +while +\[ + \begin{aligned} + X^{341}&\equiv X^7+X^6+X^5+X^3+X^2+1,\\ + X^{93}&\equiv X^9+X^7+X^6+X^3+1,\\ + X^{33}&\equiv X^9+X^6+X^5+X^3+X^2 + \end{aligned} + \qquad(\bmod F). +\] +The last three residues are not one, so \(F\) is primitive. + +For \(H\), the exact Rabin reductions are +\[ + X^{2^{30}}\equiv X\pmod H, +\] +\[ + \gcd(H,X^{2^{15}}+X) + =\gcd(H,X^{2^{10}}+X) + =\gcd(H,X^{2^6}+X)=1, +\] +which prove irreducibility. Finally +\[ + X^{7161}\equiv1\pmod H, +\] +whereas +\[ + \begin{aligned} + X^{2387}&\equiv + X^{26}+X^{23}+X^{22}+X^{16}+X^{15}+X^7+X^6+X^3+1,\\ + X^{1023}&\equiv X^{20}+X^{10}+X^6+X^3+1,\\ + X^{651}&\equiv X^{23}+X^{21}+X^9+X^3,\\ + X^{231}&\equiv + X^{23}+X^{22}+X^{21}+X^{12}+X^9+X^8+X^7+X^5+X^3+1 + \end{aligned} + \qquad(\bmod H). +\] +These residues are not one and correspond to division of \(7161\) by its four +prime factors, so the displayed order is exact. +\end{proof} + +\begin{proposition}[shifted cyclotomic-unit form]\label{prop:shifted-unit} +Put $x_k=1+\zeta\in\F_{2^{2h}}^\times$, where $h=3^k$ and +$N=3^{k+1}$. Then +\[ + x_k^{2^h-1}=\zeta^{-1},\qquad + x_k^{2^h+1}=\gamma_k,\qquad + \ord(x_k)=N\,\ord(\gamma_k). +\] +Consequently +\[ + C_k\iff \ord(1+\zeta)=3^{k+1}(2^{3^k}-1). +\] +Thus the cubic arm is equivalently maximal order for the reduction at +$2$ of the cyclotomic unit $1+\zeta_{3^{k+1}}$. +\end{proposition} + +\begin{proof} +Because $2^h\equiv-1\pmod N$, +$x_k^{2^h}=1+\zeta^{-1}=\zeta^{-1}x_k$. Dividing and multiplying by +$x_k$ gives the first two identities. The factors $2^h-1$ and +$2^h+1$ are coprime. In the corresponding direct-product +decomposition of $\F_{2^{2h}}^\times$, the first displayed power has +exact order $N$ and the second has order $\ord(\gamma_k)$, so the order +of $x_k$ is their product. +\end{proof} + +\begin{proposition}[norm-coherent cyclotomic lift]\label{prop:unit-lift} +Let $\xi_k=\zeta_{3^{k+1}}$ in characteristic zero and +$u_k=1+\xi_k$. Then $2$ is inert in $\Q(\xi_k)$ and +\[ + \Norm_{\Q(\xi_k)/\Q(\xi_{k-1})}(u_k)=u_{k-1}. +\] +The norm to the maximal real subfield is +\[ + \Norm_{\Q(\xi_k)/\Q(\xi_k+\xi_k^{-1})}(u_k) + =2+\xi_k+\xi_k^{-1}, +\] +whose reduction modulo the unique prime above $2$ is $\gamma_k$. +Thus Proposition~\ref{prop:shifted-unit} is the residue-field shadow of +a norm-coherent cyclotomic-unit system in the cyclotomic +$\mathbb Z_3$-tower. +Conditional on $C_{k-1}$, $C_k$ is exactly the assertion that, for every +prime $\ell\mid\Phi_{3^k}(2)$, the reduction of $u_k$ is not an +$\ell$-th power. +\end{proposition} + +\begin{proof} +The residue degree of $2$ in $\Q(\xi_k)$ is +$\ord_{3^{k+1}}(2)=2\cdot3^k=\varphi(3^{k+1})$, proving inertness. The +three relative conjugates of $\xi_k$ are $\xi_k,\xi_k\omega$, and +$\xi_k\omega^2$, so +\[ + \prod_{j=0}^2(1+\xi_k\omega^j)=1+\xi_k^3=1+\xi_{k-1}. +\] +Multiplication by the complex-conjugate factor gives the real norm. +The final assertion follows from Proposition~\ref{prop:shifted-unit}: +in a cyclic group an element has the full $\ell$-primary part of the +group order precisely when it is not an $\ell$-th power. +\end{proof} + +\subsection{The selected Kummer class and reciprocity boundary} + +\begin{proposition}[circular-unit and ray-class form] +\label{prop:circular-ray} +Let +\[ + F_k=\Q(\xi_k+\xi_k^{-1}),\qquad + \lambda_k=(1-\xi_k)(1-\xi_k^{-1}), +\] +let $\mathfrak p_k=(2)$ be the unique prime of $F_k$ above $2$, and +let $\mathcal C_k\subset\mathcal O_{F_k}^{\times}$ be the real +circular-unit group. If $\sigma(\xi_k)=\xi_k^2$, then +\[ + c_k:=\frac{\sigma(\lambda_k)}{\lambda_k} + =(1+\xi_k)(1+\xi_k^{-1}) + =2+\xi_k+\xi_k^{-1} +\] +is a circular unit, its Galois conjugates generate a subgroup of +$2$-power index in $\mathcal C_k$, and its reduction modulo +$\mathfrak p_k$ is $\gamma_k$. Since the residue-field unit group has +odd order, that $2$-power index disappears on reduction. Consequently +\[ + \overline{\mathcal C_k}=\langle\gamma_k\rangle + \subset (\mathcal O_{F_k}/\mathfrak p_k)^{\times} + \simeq\F_{2^{3^k}}^{\times}, \tag{\(\clubsuit\)} +\] +and hence +\[ + [\F_{2^{3^k}}^{\times}:\langle\gamma_k\rangle] + =[(\mathcal O_{F_k}/\mathfrak p_k)^{\times}: + \overline{\mathcal C_k}]. \tag{\(\spadesuit\)} +\] +In particular, $C_k$ is exactly surjectivity modulo $2$ of the real +circular units of conductor $3^{k+1}$. + +More precisely, put $E_k=\mathcal O_{F_k}^{\times}$ and let +$\operatorname{Cl}_{\mathfrak p_k}(F_k)$ be the ray class group of finite modulus +$\mathfrak p_k$. The ray class exact sequence gives +\[ + [\F_{2^{3^k}}^{\times}:\langle\gamma_k\rangle] + =\frac{|\operatorname{Cl}_{\mathfrak p_k}(F_k)|} + {|\operatorname{Cl}(F_k)|} + [\overline{E_k}:\overline{\mathcal C_k}], \tag{\(\heartsuit\)} +\] +where +$[\overline{E_k}:\overline{\mathcal C_k}]\mid + [E_k:\mathcal C_k]$. The circular-unit index theorem identifies +the odd part of the latter index with the odd part of +$|\operatorname{Cl}(F_k)|$. +Thus, for an odd prime $\ell\nmid|\operatorname{Cl}(F_k)|$, +\[ + v_{\ell}\!\left( + [\F_{2^{3^k}}^{\times}:\langle\gamma_k\rangle]\right) + =v_{\ell}\!\left( + \frac{|\operatorname{Cl}_{\mathfrak p_k}(F_k)|} + {|\operatorname{Cl}(F_k)|}\right). \tag{\(\diamondsuit\)} +\] +Equation~\((\heartsuit)\) names the obstruction but does not reduce its +difficulty: the ray class group is defined through this residue-unit +quotient, and the class-number exclusion in \((\diamondsuit)\) is itself +not known uniformly in $k$. +Finally, with $h=3^k$, $q=2^{h/3}$, and +$\tau=\sigma^{h/3}$, the relative circular unit +\[ + \varepsilon_k=\frac{\tau(c_k)}{c_k},\qquad + \Norm_{F_k/F_{k-1}}(\varepsilon_k)=1, +\] +reduces to $\eta_k$. Thus the exact character obstruction of +Proposition~\ref{prop:character-test} is the new relative part of the +same ray-class obstruction. +\end{proposition} + +\begin{proof} +The class of $2$ generates +$(\mathbb Z/3^{k+1}\mathbb Z)^{\times}/\{\pm1\}$, so $\sigma$ generates +$\operatorname{Gal}(F_k/\Q)$. The squares of the standard real +circular units are generated, up to $-1$, by the quotients +$\sigma^j(\lambda_k)/\lambda_k$. Telescoping gives +\[ + \frac{\sigma^j(\lambda_k)}{\lambda_k} + =\prod_{i=0}^{j-1}\sigma^i(c_k), +\] +so the conjugates of $c_k$ generate this square subgroup. Squaring is +an automorphism of the odd-order residue-field unit group, so the full +circular-unit group and this subgroup have the same reduction image. +Reduction commutes with $\sigma$, which becomes Frobenius at the inert +prime $2$, and +\[ + \overline{c_k} + =(1+\zeta)(1+\zeta^{-1})=\zeta+\zeta^{-1}=\gamma_k. +\] +The reductions of the conjugates are therefore +$\gamma_k,\gamma_k^2,\gamma_k^{2^2},\ldots$, and they generate the +single multiplicative subgroup $\langle\gamma_k\rangle$. This proves +\((\clubsuit)\) and \((\spadesuit)\). + +The exact sequence +\[ + E_k\longrightarrow + (\mathcal O_{F_k}/\mathfrak p_k)^{\times}\longrightarrow + \operatorname{Cl}_{\mathfrak p_k}(F_k) + \longrightarrow\operatorname{Cl}(F_k) + \longrightarrow1 +\] +proves \((\heartsuit)\). The divisibility of reduction indices is +immediate from $\mathcal C_k\subset E_k$, and the circular-unit index +theorem gives \((\diamondsuit)\); see Washington~\cite[Ch.~8]{Washington97}. +Finally $\tau$ generates $\operatorname{Gal}(F_k/F_{k-1})$, so the norm of its +coboundary $\tau(c_k)/c_k$ telescopes to $1$. Modulo $2$ it is +$\gamma_k^q/\gamma_k=\eta_k$. +\end{proof} + +\begin{proposition}[exceptional eigenspace and Hilbert-reciprocity no-go] +\label{prop:cubic-reciprocity-no-go} +Put \(n=3^k\), \(m=3n\), let +\[ + F=\mathbb Q(\xi_m+\xi_m^{-1}),\qquad + \mathfrak p=(2), +\] +and write \(\Delta=\operatorname{Gal}(F/\mathbb Q)=\langle\sigma\rangle\), +where \(\sigma(\xi_m)=\xi_m^2\). Let +\(\ell\mid\Phi_n(2)\), and set +\[ + V_\ell=(\mathcal O_F/\mathfrak p)^\times/ + ((\mathcal O_F/\mathfrak p)^\times)^\ell . +\] +Then \(V_\ell\) is one-dimensional over \(\mathbb F_\ell\), and +\(\sigma\) acts on it as the scalar \(2\). Let +\[ + \operatorname{ev}_2:\mathbb F_\ell[\Delta]\longrightarrow\mathbb F_\ell, + \qquad \sum a_j\sigma^j\longmapsto\sum a_j2^j. +\] +The following reciprocity operators vanish on \(V_\ell\): +\[ + \operatorname{ev}_2(1+\sigma+\cdots+\sigma^{n-1})=0, + \qquad \operatorname{ev}_2(2-\sigma)=0. \tag{\(\mathsf{ER}_1\)} +\] +If \(q=2^{n/3}\) and \(\tau=\sigma^{n/3}\), then +\[ + \operatorname{ev}_2(1+\tau+\tau^2)=1+q+q^2=0, + \qquad \operatorname{ev}_2(\tau-1)=q-1\ne0. \tag{\(\mathsf{ER}_2\)} +\] +Moreover the plus projection of the classical Stickelberger element of +\(\mathbb Q(\xi_m)\) acts as zero on \(V_\ell\). Its zero is simple: +for +\[ + \nu_n(X)=1+X+\cdots+X^{n-1} +\] +one has +\[ + \nu_n(2)=0,\qquad + \nu_n'(2)=n2^{n-1}\ne0\pmod\ell. \tag{\(\mathsf{ER}_3\)} +\] + +Let +\[ + c=(1+\xi_m)(1+\xi_m^{-1}),\qquad + \gamma=\overline c\in\mathbb F_{2^n}^\times,\qquad + \mathcal A_{k,\ell}=\gamma^{(2^n-1)/\ell}\in\mu_\ell. + \tag{\(\mathsf{ER}_4\)} +\] +Then cubic failure at \(\ell\) is exactly +\(\mathcal A_{k,\ell}=1\). Although +\(\mathcal A_{k,\ell}\) is a local Kummer/Artin symbol, global Hilbert +reciprocity imposes no condition on this one distinguished value. +More precisely, put \(E=F(\mu_\ell)\). The prime \(\mathfrak p\) +splits into \(\ell-1\) primes in \(E/F\). If +\(\mathfrak P_0\mid\mathfrak p\) is chosen so that +\[ + (c,2)_{\mathfrak P_0,\ell}=\mathcal A_{k,\ell} +\] +for the reciprocity convention sending the uniformizer \(2\) to +arithmetic Frobenius, then the \(\ell-1\) symbols above two are +\[ + (c,2)_{a\mathfrak P_0,\ell}=\mathcal A_{k,\ell}^{\,a}, + \qquad a\in\mathbb F_\ell^\times. \tag{\(\mathsf{ER}_5\)} +\] +Every local symbol away from two is one, and Hilbert reciprocity +reduces to +\[ + \prod_{a\in\mathbb F_\ell^\times}\mathcal A_{k,\ell}^{\,a} + =\mathcal A_{k,\ell}^{\ell(\ell-1)/2}=1, \tag{\(\mathsf{ER}_6\)} +\] +which holds for every possible value of +\(\mathcal A_{k,\ell}\). Thus norm coherence, the classical +Stickelberger ideal, and global Kummer reciprocity cannot distinguish +failure from nonfailure. A completion must compute a first-order unit +regulator in the simple exceptional eigenspace, rather than another +ideal factorization or product formula. +\end{proposition} + +\begin{proof} +The standard cyclotomic-divisor criterion gives +\(\operatorname{ord}_\ell(2)=n\). Since +\((\mathcal O_F/\mathfrak p)^\times\simeq\mathbb F_{2^n}^\times\), +its quotient by \(\ell\)-th powers has order \(\ell\), and Frobenius +acts by \([x]\mapsto[x^2]=2[x]\). This proves the module assertion. +Equations \((\mathsf{ER}_1)\) follow from +\(2^n=1\pmod\ell\). The element \(q=2^{n/3}\) has exact order three +modulo \(\ell\), proving \((\mathsf{ER}_2)\). + +Let \(G=\operatorname{Gal}(\mathbb Q(\xi_m)/\mathbb Q)\), let \(j\) +be complex conjugation, and write +\[ + \theta_m=\frac1m + \sum_{\substack{1\le a\frac{\ell e}{\ell-1}=\ell. \tag{\(\mathsf{ER}_7\)} +\] +Taking \(i=j=\ell-1\) proves +\((c,2)_{\lambda,\ell}=1\) at every \(\lambda\mid\ell\). +At every finite place away from \(2\ell\), both entries are units and +the tame Hilbert-symbol formula is one; archimedean places contribute +nothing because \(\ell\) is odd. The global product formula is +therefore precisely \((\mathsf{ER}_6)\). Since +\(\sum_{a=1}^{\ell-1}a\equiv0\pmod\ell\), this relation is +tautological and leaves the single symbol at \(\mathfrak P_0\) +arbitrary. +\end{proof} + +\begin{proposition}[the simple exceptional zero does not evaluate its Bockstein] +\label{prop:cubic-bockstein-no-go} +Retain Proposition~\ref{prop:cubic-reciprocity-no-go}. Put +\[ + \mathcal A=\mathbb Z_\ell[\Delta],\qquad + \mathfrak m=(\ell,\sigma-2),\qquad + \nu=1+\sigma+\cdots+\sigma^{n-1}, +\] +and let \(u=(2^n-1)/\ell\in\mathbb Z_\ell\). Then +\[ + \nu\equiv + \ell u+n2^{n-1}(\sigma-2)\pmod{\mathfrak m^2}. \tag{\(\mathsf{BZ}_1\)} +\] +The coefficient \(n2^{n-1}\) is a unit modulo \(\ell\), but this says +only that the first-order exceptional coordinate is one-dimensional; +it does not determine the cyclotomic unit's value in that coordinate. +Indeed \((\sigma-1)\nu=\sigma^n-1=0\), while \(\sigma-1\) is a unit +modulo \(\mathfrak m^2\). Thus \((\mathsf{BZ}_1)\) is the cotangent +relation +\[ + 0=\ell u+n2^{n-1}(\sigma-2)\quad\text{in }\mathcal A/\mathfrak m^2, + \tag{\(\mathsf{BZ}_1'\)} +\] +not a nonzero value of the sought unit class. + +More sharply, let \(K/\mathbb Q_2\) be the unramified extension of +degree \(n\), and let +\[ + \lambda=(1-\xi_m)(1-\xi_m^{-1})=t v, + \qquad + t\in\mu_{2^n-1},\quad v\in1+2\mathcal O_K +\] +be its Teichm\"uller/principal-unit decomposition at two. One has +\(\Norm_{K/\mathbb Q_2}(t)=1\) and +\(\Norm_{K/\mathbb Q_2}(v)=3\). Conversely, for every +\(t_0\in\mu_{2^n-1}\) there is \(v_0\in1+2\mathcal O_K\) such that +\[ + \lambda_0=t_0v_0,\qquad + \Norm_{K/\mathbb Q_2}(\lambda_0)=3,\qquad + \overline{\lambda_0}=\overline{t_0}. \tag{\(\mathsf{BZ}_2\)} +\] +The residue on the right may have any \(\ell\)-power class. Hence the +norm-three identity, Frobenius action, and the nonzero derivative in +\((\mathsf{BZ}_1)\) cannot by themselves prove cubic nonfailure. The +missing datum is the distinguished cyclotomic unit's actual coordinate +--- for example through a derived local-unit regulator --- not the formal +existence of the Bockstein coordinate. This is a local countermodel to +those data only; it is not a global cyclotomic counterexample. +\end{proposition} + +\begin{proof} +Write \(\epsilon=\sigma-2\). Modulo +\((\ell^2,\ell\epsilon,\epsilon^2)=\mathfrak m^2\), binomial expansion +gives +\[ + \sum_{j=0}^{n-1}(2+\epsilon)^j + \equiv(2^n-1)+\nu_n'(2)\epsilon + \equiv\ell u+n2^{n-1}\epsilon. +\] +Here the discarded part of +\(\nu_n'(2)=n2^{n-1}-(2^n-1)\) lies in +\(\ell\epsilon\). Since \(\operatorname{ord}_\ell(2)=n\), one has +\(n\mid\ell-1\), so \(n2^{n-1}\not\equiv0\pmod\ell\). This proves +\((\mathsf{BZ}_1)\). The identity +\((\sigma-1)\nu=0\) and +\(\sigma-1=1+\epsilon\in(\mathcal A/\mathfrak m^2)^\times\) prove +\((\mathsf{BZ}_1')\); its one nonzero linear coefficient leaves a +one-dimensional cotangent space. + +The real cyclotomic norm of \(\lambda\) is three. The norm of every +Teichm\"uller unit is its residue-field norm, so +\(\Norm(t)=t^{2^n-1}=1\), leaving \(\Norm(v)=3\). Conversely the norm +map from the principal units of an unramified local extension onto the +base principal units is surjective. Given \(t_0\), choose \(v_0\) with +norm three; then \((\mathsf{BZ}_2)\) follows. In addition +\(\sigma(t_0v_0)/(t_0v_0)\) reduces to \(t_0^2/t_0=t_0\), so even the +relative-coboundary form carries the same arbitrary residue class. +Choosing \(t_0\) inside or outside the subgroup of \(\ell\)-th powers +proves the asserted neutrality. +\end{proof} + +\begin{proposition}[the derivative regulator is the original Kummer class] +\label{prop:cubic-derivative-regulator} +Retain the notation of +Proposition~\ref{prop:circular-ray}, put \(n=3^k\), and write + +\[ + \nu_n(X)=1+X+\cdots+X^{n-1},\qquad + \mathcal R_k^{\partial} + :=\prod_{j=0}^{n-1}\sigma^j(c_k)^j + =c_k^{\,\sigma\nu_n'(\sigma)}. +\] +Then the first-order circular-unit regulator singled out by the simple +exceptional zero is explicit: +\[ + \mathcal R_k^{\partial}=\frac{\lambda_k^n}{3}, + \qquad + \overline{\mathcal R_k^{\partial}}=\gamma_k^n. \tag{\(\mathsf{DR}_1\)} +\] +Consequently, for every prime +\(\ell\mid\Phi_n(2)\), its reduction is an \(\ell\)-th power if and only +if \(\gamma_k\) is. Thus the derivative regulator carries exactly the +unknown Kummer class in \(C_k\): the nonzero derivative identifies the +coordinate but does not evaluate it. + +For \(k\geq2\) this identification is norm coherent in the sharp form +\[ + \Norm_{F_k/F_{k-1}}(\mathcal R_k^{\partial}) + =(\mathcal R_{k-1}^{\partial})^3. \tag{\(\mathsf{DR}_2\)} +\] +Hence +\[ + \mathcal E_k^{\partial} + :=\frac{\mathcal R_k^{\partial}} + {\mathcal R_{k-1}^{\partial}} + =\left(\frac{\lambda_k^3}{\lambda_{k-1}}\right)^{n/3} +\] +has relative norm one. At every current +\(\ell\mid\Phi_n(2)\), the lower-field factor is automatically an +\(\ell\)-th power, so +\(\overline{\mathcal E_k^{\partial}}\) again carries precisely the +Kummer class of \(\gamma_k\). In particular, passing to a derived +relative unit does not create an inductive relation capable of proving +\(C_k\). +\end{proposition} + +\begin{proof} +Since \(c_k=\sigma(\lambda_k)/\lambda_k\), the weighted product +telescopes cyclically: +\[ + \prod_{j=0}^{n-1} + \left(\frac{\sigma^{j+1}(\lambda_k)} + {\sigma^j(\lambda_k)}\right)^j + =\frac{\lambda_k^{n-1}} + {\prod_{i=1}^{n-1}\sigma^i(\lambda_k)} + =\frac{\lambda_k^n}{\Norm_{F_k/\mathbb Q}(\lambda_k)}. +\] +The real cyclotomic norm of \(\lambda_k\) is \(3\), proving the first +identity in \((\mathsf{DR}_1)\). Modulo the prime above two, both +\(\lambda_k\) and \(c_k\) reduce to \(\gamma_k\), while \(3\) reduces to +one; hence the second identity follows. Because +\(\operatorname{ord}_{\ell}(2)=n\), one has +\(\ell\nmid n\), so raising the one-dimensional \(\ell\)-power quotient +to the \(n\)-th power is an automorphism. This proves the equivalence of +Kummer classes. + +Finally, +\(\Norm_{F_k/F_{k-1}}(\lambda_k)=\lambda_{k-1}\). Taking the relative +norm of \(\lambda_k^n/3\), and remembering that the relative degree is +three, gives +\[ + \Norm_{F_k/F_{k-1}}(\mathcal R_k^{\partial}) + =\frac{\lambda_{k-1}^n}{3^3} + =\left(\frac{\lambda_{k-1}^{n/3}}3\right)^3, +\] +which is \((\mathsf{DR}_2)\). The displayed formula and norm-one +property of \(\mathcal E_k^{\partial}\) follow immediately. Since +\(\ell\nmid 2^{n/3}-1\), exponentiation by \(\ell\) is an automorphism +of \(\F_{2^{n/3}}^\times\); every lower-field factor is therefore an +\(\ell\)-th power. The relative unit has the same current Kummer class, +as claimed. +\end{proof} + +\begin{proposition}[semidirect ray extension forced by cubic failure] +\label{prop:cubic-ray-extension} +Retain Proposition~\ref{prop:circular-ray}, put +\(n=3^k\), and let \(\ell\mid\Phi_{3^k}(2)\). Assume +\(\ell\nmid|\operatorname{Cl}(F_k)|\). Then +\[ + \gamma_k\in(\F_{2^n}^\times)^\ell \tag{\(\mathsf{RF}\)} +\] +if and only if there exists a cyclic extension \(M/F_k\) of degree +\(\ell\), conductor exactly \(\mathfrak p_k=(2)\), totally tamely +ramified there and unramified at every other finite prime. This +extension is Galois over \(\Q\), with +\[ + \operatorname{Gal}(M/\Q)\cong + C_\ell\rtimes_2 C_n, + \qquad \sigma\tau\sigma^{-1}=\tau^2. \tag{\(\mathsf{RF}_1\)} +\] +Moreover, the unique prime of \(F_k\) above three splits completely in +\(M/F_k\). Both prescribed local behaviors are admissible: at two this +is the standard tame extension with inertia \(C_\ell\), residue degree +\(n\), and Frobenius action \(\tau\mapsto\tau^2\); at three the +\(C_\ell\)-layer is split. Thus secant saturation and circular-unit +reciprocity give no local contradiction. Without the class-number +hypothesis, cubic failure yields the sharp alternative +\[ + \ell\mid|\operatorname{Cl}(F_k)| + \quad\hbox{or the extension in \((\mathsf{RF}_1)\) exists}. \tag{\(\mathsf{RF}_2\)} +\] +\end{proposition} + +\begin{proof} +Write \(E_k=\mathcal O_{F_k}^\times\) and +\(\mathcal C_k\) for the circular units. Proposition~\ref{prop:circular-ray} +identifies the reduction of \(\mathcal C_k\) with +\(\langle\gamma_k\rangle\). If \((\mathsf{RF})\) holds, then +\(\mathcal C_k\) maps trivially to +\[ + V:=\F_{2^n}^\times/(\F_{2^n}^\times)^\ell\cong C_\ell. +\] +The odd part of \([E_k:\mathcal C_k]\) is the odd part of the class +number. Under the stated hypothesis its \(\ell\)-part vanishes, so +\(E_k\) also maps trivially to \(V\). The ray sequence then supplies +an order-\(\ell\) quotient of +\(\operatorname{Cl}_{\mathfrak p_k}(F_k)\). Because the ordinary class +group has no \(\ell\)-part, the quotient lies entirely in tame inertia +at \(\mathfrak p_k\). Class field theory gives the asserted +\(M/F_k\). + +The quotient is Galois-stable. The generator \(\sigma\) of +\(\operatorname{Gal}(F_k/\Q)\) acts on the residue field as +\(x\mapsto x^2\), hence on \(V\) by exponent two. Since +\(\ord_\ell(2)=n\), this action is faithful; Schur--Zassenhaus, or the +coprimality of \(n\) and \(\ell\), gives \((\mathsf{RF}_1)\). +Conversely, tame inertia in any such extension gives the unique quotient +\(\F_{2^n}^\times\twoheadrightarrow C_\ell\). Global units lie in its +kernel, so in particular \(\gamma_k\) is an \(\ell\)-th power. + +Finally let +\[ + \lambda_k=(1-\xi_k)(1-\xi_k^{-1}),\qquad + c_k=(1+\xi_k)(1+\xi_k^{-1}). +\] +The element \(\lambda_k\) generates the unique prime +\(\mathfrak r_k\) above three, and +\(\lambda_k/c_k\equiv1\pmod{\mathfrak p_k}\), because both reduce to +\((1+\zeta)(1+\zeta^{-1})=\gamma_k\). Hence +\(\mathfrak r_k=(\lambda_k/c_k)\) is trivial in the full ray class +group and splits in \(M/F_k\). The local statements now follow from +\(\ell\mid2^n-1\) and the displayed semidirect action. If the +class-number hypothesis fails, the first alternative in +\((\mathsf{RF}_2)\) holds; otherwise the preceding construction proves +the second. +\end{proof} + +\subsection{Kernel tower and quantitative order bounds} + +\begin{proposition}[explicit cubic kernel tower]\label{prop:eta-tower} +Define $\eta_0=0$. For $k\geq1$ put +\[ + q_k=2^{3^{k-1}},\qquad + \eta_k=\gamma_k^{q_k-1},\qquad + U_k=\ker\!\left(\Norm_{\F_{q_k^3}/\F_{q_k}}\right). +\] +Then $\eta_k\in U_k$, $|U_k|=q_k^2+q_k+1=\Phi_{3^k}(2)$, and, with +$\omega=\zeta^{3^k}\in\F_4$, +\[ + q_k\equiv3^k-1\pmod{3^{k+1}},\qquad + \eta_k=\frac{\omega+\omega^2\zeta^2}{1+\zeta^2},\qquad + \zeta^2=\frac{\eta_k+\omega}{\eta_k+\omega^2}. +\] +Moreover $\eta_k$ has the irreducible cubic equation over +$\F_{q_k}=\F_{2^{3^{k-1}}}$ +\[ + X^3+\eta_{k-1}X^2+(\eta_{k-1}+1)X+1=0. \tag{\(*\)} +\] +Equivalently, +\[ + \Norm(\eta_k)=1,\qquad + \operatorname{Tr}(\eta_k)=\eta_{k-1},\qquad + e_2(\eta_k)=\eta_{k-1}+1. +\] +It also satisfies +\[ + \eta_k^{q_k+1}+\eta_k+1=0, + \qquad \eta_k+1=\eta_k^{q_k+1}, + \qquad \ord(\eta_k+1)=\ord(\eta_k). \tag{\(\dagger\)} +\] +Thus $\eta_k$ lies in the planar Singer difference set +\[ + \mathcal H_k=\{y\in U_k:y^{q_k+1}+y+1=0\} +\] +of size $q_k+1$ inside $U_k$~\cite{MRS20}. +Finally, +\[ + C_k\iff C_{k-1}\ \text{and}\ + \ord(\eta_k)=q_k^2+q_k+1. \tag{\(**\)} +\] +(Here $C_0$ is the tautological assertion that $1$ generates +$\F_2^\times$.) +Thus the new-prime obstruction is the single assertion that the +distinguished root of \((*)\) is a generator of the cubic norm-one +torus (equivalently, multiplication by it is a Singer cycle). +\end{proposition} + +\begin{proof} +The congruence starts with $2\equiv3-1\pmod9$ and lifts by cubing: +if $a\equiv-1+3^k\pmod{3^{k+1}}$, then +$a^3\equiv-1+3^{k+1}\pmod{3^{k+2}}$. Hence +$\zeta^{q_k}=\omega\zeta^{-1}$. Dividing +$\gamma_k^{q_k}$ by $\gamma_k$ now gives the stated M\"obius formula; +solving it gives the inverse formula. + +Put $t=\zeta^2$ and +$M(T)=(\omega+\omega^2T)/(1+T)$. The same formula one level down says +$\eta_{k-1}=M(t^3)$ (also for $k=1$, when it gives $\eta_0=0$). If +$a=\eta_{k-1}$ and $X=M(t)$, then +\[ + \left(\frac{X+\omega}{X+\omega^2}\right)^3 + =\frac{a+\omega}{a+\omega^2}. +\] +Cross-multiplication and $\omega^2+\omega+1=0$ reduce exactly to +\((*)\). Also +$\eta_k^{1+q_k+q_k^2}=\gamma_k^{q_k^3-1}=1$, so $\eta_k\in U_k$. +It cannot lie in $\F_{q_k}$: otherwise its norm-one condition would give +$\eta_k^3=1$, hence $\eta_k=1$ because $3\nmid q_k-1$; the inverse +M\"obius formula would then give $t=\omega$, contradicting +$\ord(t)=3^{k+1}>3$. Thus \((*)\) is irreducible, and its coefficients +give the three symmetric identities. + +The earlier minimal polynomial +$X^3+X+\gamma_{k-1}$ gives +$\operatorname{Tr}_{\F_{q_k^3}/\F_{q_k}}(\gamma_k)=0$. Dividing +$\gamma_k+\gamma_k^{q_k}+\gamma_k^{q_k^2}=0$ by $\gamma_k$ yields +$1+\eta_k+\eta_k^{q_k+1}=0$, proving the first two parts of +\((\dagger)\). Since +$\gcd(q_k+1,q_k^2+q_k+1)=1$, exponentiation by $q_k+1$ is an +automorphism of $U_k$, proving the equality of orders. The cited +difference-set identification is the norm-one realization of the planar +Singer set. + +In the direct product of Proposition~\ref{prop:norm-kernel-seam}, +raising to $q_k-1$ kills the old-field component and is an automorphism +on $U_k$, since $\gcd(q_k-1,q_k^2+q_k+1)=1$. Therefore the kernel +component of $\gamma_k$ generates $U_k$ exactly when $\eta_k$ does; +Proposition~\ref{prop:norm-kernel-seam} gives \((**)\). +\end{proof} + +\begin{proposition}[Singer-orbit sieve]\label{prop:singer-sieve} +Let $k\geq1$. Put $n=3^k$, $q=2^{n/3}$, and +$N=q^2+q+1=|U_k|$. If a prime $\ell\mid N$ satisfies +\[ + \ell>\frac{N}{n(n-1)+1}, +\] +then $\eta_k\notin U_k^\ell$. Consequently, if +$\ell^a\Vert N$, then +\[ + v_\ell(\ord\eta_k)=a. +\] +Unconditionally, +\[ + \ord(\eta_k)\geq n(n-1)+1, + \qquad + [U_k:\langle\eta_k\rangle] + \leq\frac{N}{n(n-1)+1}. +\] +\end{proposition} + +\begin{proof} +Let +\[ + D=\{y\in U_k:y^{q+1}+y+1=0\}. +\] +This is the cyclic $(N,q+1,1)$ Singer difference set: every +nonidentity element of $U_k$ has a unique expression $xy^{-1}$ with +distinct $x,y\in D$. Since the minimal polynomial of $\eta_k$ over +$\F_2$ has degree $n$, its Frobenius orbit +\[ + A=\{\eta_k^{2^i}:0\leq i\frac{N}{B(n)}, +\] +then \(\eta_k\notin U_k^\ell\), so the order of \(\eta_k\) contains +the full \(\ell\)-primary part of \(N\). +\end{proposition} + +\begin{proof} +Put \(r=3n\), \(t=\zeta^2\), and retain +\(\omega=\zeta^n\), so \(t^n=\omega^2\) and +\[ + \eta_k=M(t),\qquad + M(X)=\frac{\omega+\omega^2X}{1+X}. +\] +The element \(2\) generates +\((\mathbb Z/r\mathbb Z)^\times\), of order \(2n\). For every +positive \(j\) not divisible by \(3\), choose \(z_j\) with +\(2^{z_j}\equiv j\pmod r\). Frobenius gives +\[ + \eta_k^{2^{z_j}} + =\omega^j\frac{1+\omega^jt^j}{1+t^j}. \tag{\(6\)} +\] +For a finite set \(I\) of such \(j\), put +\[ + s_I=\sum_{j\in I}j,\quad E_I=\sum_{j\in I}2^{z_j},\quad + A_I(X)=\prod_{j\in I}(1+\omega^jX^j),\quad + B_I(X)=\prod_{j\in I}(1+X^j). +\] +Thus +\[ + \eta_k^{E_I}=\omega^{s_I}\frac{A_I(t)}{B_I(t)}. \tag{\(7\)} +\] +All denominators are nonzero when \(s_I\leq n0:S_r(a)=0\}, +\] +and hence +\[ + \delta_n=F_n + \iff + S_{F_n/\ell}(a)\ne0 + \quad\hbox{for every prime }\ell\mid F_n. \tag{\(\mathsf F_n\)} +\] + +More precisely, for odd $d>1$ define the fibotomic polynomial +\[ + \mathfrak F_d(X)= + \prod_{\substack{\{v,v^{-1}\}\\ \ord(v)=d}} + \left(X-\frac{v}{(v+1)^2}\right), +\] +where the product takes one representative of each inverse-pair of +primitive $d$-th roots. Then $\mathfrak F_d\in\F_2[X]$, +\[ + S_r(X)=\prod_{\substack{d\mid r\\d>1}}\mathfrak F_d(X) + \quad(r\text{ odd}), \tag{\(\mathsf B_r\)} +\] +and, if $A_{n-1}$ is the minimal polynomial of $a_{n-1}$ over $\F_2$, +\[ + \delta_n=d\iff A_{n-1}\mid\mathfrak F_d. +\] +Every irreducible factor of every $\mathfrak F_d$ with +$10$ +with $2^j\equiv\pm1\pmod d$ is $m$. This is exactly the Frobenius +orbit length of $v/(v+1)^2$: indeed +\[ + \frac{v}{(v+1)^2}=\frac{w}{(w+1)^2} + \iff (v+w)(vw+1)=0, +\] +so only the inverse pair $\{v,v^{-1}\}$ has the same image. This +proves the equal-degree assertion. +\end{proof} + +\subsection{The selected factor and the limits of one-step induction} + +\begin{proposition}[coarse top-step data cannot force maximality] +\label{prop:fermat-countermodels} +For every divisor $d>1$ of $F_n$ there are elements +$a_d\in\F_q$ and $c_d\in\F_{q^2}$ such that +\[ + [\F_2(a_d):\F_2]=m,\qquad + [\F_2(c_d):\F_2]=2m,\qquad + c_d^q=c_d+1,\qquad c_d^2+c_d=a_d, +\] +\[ + \operatorname{Tr}_{\F_q/\F_2}(a_d)=1,\qquad + \Norm_{\F_{q^2}/\F_q}(c_d)=a_d, +\] +but the order of $c_d\F_q^\times$ is exactly $d$. In particular all +proper-divisor strata obey the same degree, trace, Artin--Schreier and +relative-norm data as the Conway top step. +\end{proposition} + +\begin{proof} +Choose $v$ of order $d$ in the norm-one subgroup of +$\F_{q^2}^{\times}$ and put +\[ + c_d=\frac1{v+1},\qquad a_d=\frac{v}{(v+1)^2}. +\] +Then $v^q=v^{-1}$, so $c_d^q=c_d+1$; the remaining displayed +identities follow directly. The orbit calculation in the proof of +Proposition~\ref{prop:fermat-fibotomic} gives the two field degrees. +Consequently $T^2+T+a_d$ is irreducible over $\F_q$, which is +equivalent to the stated absolute trace, and +$(c_d+1)/c_d=v$ gives quotient order $d$. +\end{proof} + +\begin{proposition}[the exact recursively selected factor] +\label{prop:fermat-resultant} +Set $a_{-1}=1$, $a_i=\prod_{j\leq i}c_j$, and let $A_i$ be +its minimal polynomial over $\F_2$, with $A_{-1}(Y)=Y+1$. Then +\[ + a_i^2+a_{i-1}a_i+a_{i-1}^3=0 +\] +and +\[ + A_i(X)=\operatorname{Res}_Y + \bigl(A_{i-1}(Y),X^2+YX+Y^3\bigr). \tag{\(\mathsf R_i\)} +\] +Hence the unresolved Conway--Fermat lemma is the precise recursive +claim that the factor selected by \((\mathsf R_i)\) lies in the +full-order fibotomic stratum, rather than in any equal-degree +$\mathfrak F_d$ with $d\mid F_{i+1}$ and $d1\). + +These support constraints do not close the arm. Every trace-one +element of \(\F_q\) has absolute degree \(m\): if it lay in a proper +subfield \(\F_{2^d}\), then \(m/d\) would be even and its absolute +trace would vanish. Hence the only resulting capacity inequality is +\[ + \varphi(\delta)\geq2m. +\] +It is automatic, because \(\delta>1\) divides \(2^m+1\), while \(m\) +is a power of two; therefore \(\ord_\delta(2)=2m\). +The full divisor, derivative, Hasse-derivative, Newton-sum, coefficient, +and fibotomic-support packages are thus realized by transported +nonselected cosets. Excluding the selected one still requires the +recursive Conway ancestry. +\end{remark} + +\begin{remark}[the reverse-Dickson gap is selected but not yet excluded] +\label{rem:fermat-trace-gap} +Put \(e=v_2(\ell-1)\). For \(e\geq2\), substitution +\(X=W+W^{-1}\) gives +\[ + \mathcal D_\ell(X,1)+X + =(W^{\ell-1}+1)(W+W^{-\ell}). +\] +At \(W=1\) the two factors vanish to orders \(2^e\) and \(2\), while +\(X\) has order \(2\). Therefore +\[ + \mathcal D_\ell(X,1)\equiv X + \pmod{X^{2^{e-1}+1}}. \tag{\(\mathsf{TG}\)} +\] +Every prime divisor of the Fermat number \(F_n=q+1\) has +\(e\geq n+2\). Hence +\[ + \begin{split} + P_{\ell,a}(Z) + &=Z^\ell+aZ^{\ell-1} + +\text{terms of degree at most }\ell-(2m+1),\\ + \mathcal P_{\ell,n}(Z) + &=Z^{m(\ell-1)}A_{n-1}(Z) + +\text{terms of degree at most }m\ell-(2m+1). + \end{split} + \tag{\(\mathsf{TG}_1\)} +\] +This long leading gap still does not contradict +\((\mathsf{TD}_1)\). For \(n>2\), every nontrivial complementary +divisor \(d\mid F_n\) satisfies \(d\equiv1\pmod{4m}\), hence +\(d\geq4m+1\) and \(m\ell1$ force +$\delta_n=F_n$, recovering Lenstra's Fermat-prime rule. When $F_n$ is +composite, irreducibility forces only one nontrivial divisor: it does not +force every prime-power factor. The condition $\delta_n=F_n$ is exactly +the maximal-coset-order hypothesis studied for Conway's quadratic tower +by Popovych~\cite{Popovych18}. It is strictly weaker than primitivity of +$c_n$, which already fails at $n=2$ since +$\ord(c_2)=5\cdot17=85<255$; Popovych uses the all-level +hypothesis instead to prove that products such as $c_0c_n$ are primitive. +Wiedemann's related iterated quadratic tower +poses the analogous full-Fermat-order problem~\cite{Wiedemann88}. Thus +the apparently easy ``singleton even implies zero'' clause already +contains a longstanding explicit maximal-coset-order problem. +Popovych verified the Conway condition only through $n=11$; the recent +analysis of Cagliero--Herman--Szechtman still retains the quotient order +as an undetermined divisor~\cite{CHS25}. No all-level proof or +counterexample is presently known. + +\subsection{Comparison with the cubic arm} + +These two embedded arms are instances of the same projective statement. The +quadratic arm asks that the class of $c_n$ generate +$E_n^\times/E_{n-1}^\times$. In the cubic arm the natural map +\[ + U_k\longrightarrow \F_{q_k^3}^{\times}/\F_{q_k}^{\times} +\] +is an isomorphism, and the increment from $C_{k-1}$ to $C_k$ asks that +the class of $\gamma_k$ +generate this quotient. Equivalently, the projective class of the +multiplication-by-$\gamma_k$ matrix generates a Singer cycle in +$\operatorname{PGL}_3(q_k)$. The $0/1/4$ rule therefore contains a +quadratic and a cubic maximal-projective-order conjecture among its four exact +arms, rather than +two unrelated order coincidences. + +\subsection{\texorpdfstring{Open problem \(Z\)}{Open problem Z}} + +The singleton-even part of the zero arm is exactly the assertion +$\delta_n=F_n$ for all $n$. The results above identify the recursively +selected fibotomic factor and exhaust the trace, norm, elliptic, and +generalized-Jacobian data currently available without evaluating its +Kummer class. Thus the remaining theorem is not another coarse +invariant: it is the nonvanishing of the explicit distinguished +Miller-unit value in Proposition~\ref{prop:fermat-five-point-exhaustion}. + +\section{\texorpdfstring{The exceptional \(2\cdot3^k\) arm}{The exceptional 2 times 3-power arm}}\label{sec:exception} + +\subsection{Why component data do not decide the excess} + +$\Qset(f(p))$ alone does not determine $m_p$: +\begin{center} +\begin{tabular}{ccc} +\toprule +$\Qset$ & $m=4$ & $m=1$ \\ +\midrule +$\{9\}$ & $p=19$, $f=18$ & $p=73$, $f=9$ \\ +$\{81\}$ & $p=163$, $f=162$ & $p=2593$, $f=81$ \\ +$\{243\}$ & $p=1459$, $f=486$ & $p=487$, $f=243$ \\ +\bottomrule +\end{tabular} +\end{center} + +The split for $\Qset=\{9\}$ is explained by the order +criterion: $\ord(\kappa_9+1)=3^3\cdot(2^9-1)=27\cdot511=13797$ and +$511=7\cdot73$, so $73\mid\ord(\kappa_9+1)$ but +$19\nmid\ord(\kappa_9+1)$; adding $m=4$ changes the order and introduces +the factor $19$. + +The lower bound of the exception column is unconditional: +$m_p\geq4$ for all $p$ with $f(p)=2\cdot3^k$ +(Proposition~\ref{prop:exception}). + +\CONJECTURED{} The matching upper bound $m_p\leq4$ on that column; +its exact current-level formulation is $D'_k$ in +Conjecture~\ref{conj:dk}, not the Gaussian-period conjecture $C_k$. + +\subsection{The corrected norm and current-factor target} +\label{sec:m4} + +The $m=4$ translate $\kappa_{3^k}+4$ involves the nimber $4\in\F_{16}$, +which does not lie in $\F_2(\zeta)$ (as $4\nmid2\cdot3^k$); the +translate therefore lies in the degree-$4\cdot3^k$ compositum +$\F_{2^{4h}}$, where $h=3^k$. + +\begin{proposition}[the corrected norm]\label{prop:m4norm} +Let $\sigma=\Frob^{2h}$ generate +$\mathrm{Gal}(\F_{2^{4h}}/\F_{2^{2h}})$. Then $\sigma(4)=5$, and with +$\omega:=\zeta^{h}=\kappa_2$, +\[ + N:=\Norm_{\F_{2^{4h}}/\F_{2^{2h}}}(\kappa_{3^k}+4) + =(\kappa+4)(\kappa+5) + =\kappa^2+\kappa+\omega . +\] +\end{proposition} + +\begin{proof} +$\F_{16}\cap\F_{2^{2h}}=\F_4$ because $\gcd(4,2\cdot3^k)=2$, so +$\sigma|_{\F_{16}}$ is the nontrivial element of +$\mathrm{Gal}(\F_{16}/\F_4)$, which swaps the two roots $4,5$ of the +Artin--Schreier minimal polynomial $y^2+y+\omega$ of $4$ over $\F_4$. +(Equivalently: $2h\equiv2\pmod4$ and the Frobenius orbit of $4$ is +$4\to6\to5\to7$, so $\sigma(4)=4^{2^2}=5$.) Then +$(\kappa+4)(\kappa+5)=\kappa^2+\kappa+(4\nimmul5)$ and +$4\nimmul5=4^2+4=\omega$ by the same Artin--Schreier relation. +\end{proof} + +The corrected norm collapses the $m=4$ test into the \emph{same} sparse +trinomial model $\F_2[x]/(x^{2h}+x^h+1)$ as the rest of the $3$-power +analysis: no compositum arithmetic is needed. + +\begin{corollary}[in-field criterion]\label{cor:m4crit} +For a prime $p$ with $f(p)=2\cdot3^k$ and $v_p(2^{2h}-1)=1$, +write $\overline{N}=N^{2^h}$ and $M_k:=\overline{N}/N=N^{2^h-1}\in U$. +Then +\[ + m_p=4 + \iff + p\mid\ord(M_k) + \iff + M_k^{(2^h+1)/p}\neq1 . +\] +\end{corollary} + +\begin{proof} +$m_p\geq4$ is Proposition~\ref{prop:exception}, so $m_p=4$ iff +$\kappa+4$ has no $p$-th root. By Propositions~\ref{prop:power} +and~\ref{prop:norm} with $E=4h$, $f=2h$ (and +$v_p(2^{4h}-1)=v_p(2^{2h}-1)=1$ by lifting the exponent, since +$p\nmid2$), that holds iff $N^{(2^{2h}-1)/p}\neq1$. Since +$\F_{2^{2h}}^{\times}=L^{\times}\times U$ with coprime orders, +$p\mid2^h+1$, and $(2^{2h}-1)/p=(2^h-1)\cdot\bigl((2^h+1)/p\bigr)$, the +test equals $M_k^{(2^h+1)/p}\neq1$. +\end{proof} + +\begin{proposition}[exact current-level form of the exception conjecture] +\label{prop:dk-current-level} +Let $k\geq1$. Retain the notation above, put +$q=2^h$, $n=3^{k+1}=3h$, +and write +\[ + \zeta:=\kappa_{3^k}\in K:=\F_{2^{2h}},\qquad + \widetilde K:=\F_{2^{4h}},\qquad \beta:=\zeta+4. +\] +Thus $\zeta$ is a primitive $n$-th root of unity. Define +\[ + N:=\Norm_{\widetilde K/K}(\beta) + =\zeta^2+\zeta+\zeta^h, + \qquad M_k:=N^{q-1}, + \qquad \Psi_k:=\frac{\Phi_{2\cdot3^k}(2)}3, +\] +and +\[ + R_k(Y):=\operatorname{Res}_X + \left(X^{2h}+X^h+1,\,Y+X^h+X^2+X\right)\in\F_2[Y]. +\] +Then $R_k$ is the irreducible minimal polynomial of $N$ over $\F_2$ +and has degree $2h$. The prime divisors of $\Psi_k$ are exactly the +primes $\ell\ne3$ with $\ord_\ell(2)=2\cdot3^k$, with full valuations +\[ + v_\ell(\Psi_k)=v_\ell(2^{2h}-1)=v_\ell(2^h+1). +\] +Moreover the following are equivalent: +\begin{enumerate}[label=\textup{(\alph*)}] +\item $m_\ell=4$ for every prime $\ell$ with + $f(\ell)=2\cdot3^k$; +\item $\Psi_k\mid\ord(M_k)$; +\item $N\notin(K^\times)^\ell$ for every prime $\ell\mid\Psi_k$; +\item $R_k(X^\ell)$ is irreducible over $\F_2$ for every prime + $\ell\mid\Psi_k$. +\end{enumerate} +\end{proposition} + +\begin{proof} +The order identity $\ord_{3^{k+1}}(2)=2h$ makes +$X^{2h}+X^h+1$ the irreducible minimal polynomial of $\zeta$. +We first prove that $N=\zeta^h+\zeta^2+\zeta$ also has degree $2h$. +Suppose $N^{2^j}=N$, and put $a\equiv2^j\pmod{3h}$. The resulting +vanishing polynomial, of degree less than $3h$, has support equal to +the symmetric difference of +\[ + \{ah,a,2a\}\quad\hbox{and}\quad\{h,1,2\}. \tag{1} +\] +Every multiple of $X^{2h}+X^h+1$ of degree less than $3h$ has support +a disjoint union of triples $\{r,r+h,r+2h\}$. +If $a\equiv2\pmod3$, the support in (1) contains $h$ and $2h$ but not +$0$, a contradiction. If $a\equiv1\pmod3$, the $h$-terms cancel and +each residue class modulo $h$ occurs at most twice; a nonempty union of +such triples is again impossible. Hence the support is empty, so +$\{a,2a\}=\{1,2\}$ modulo $3h$. Since $h\geq3$, this forces $a=1$. +Thus the Frobenius orbit of $N$ has length $2h$, and the displayed +resultant is its irreducible minimal polynomial. + +Writing $A=2^{3^{k-1}}$ gives +$\Phi_{2\cdot3^k}(2)=A^2-A+1\equiv3\pmod9$, so division by $3$ +removes exactly the prime dividing the cyclotomic index. The standard +cyclotomic-divisor criterion now says that the prime divisors of +$\Psi_k$ are precisely the $\ell$ with $\ord_\ell(2)=2h$. Their +entire primary contribution to $2^{2h}-1$ lies in this cyclotomic +factor and, since $\ell\nmid2^h-1$, in $2^h+1$. This proves the +valuation statement. + +Fix $\ell\mid\Psi_k$. Propositions~\ref{prop:translates} +and~\ref{prop:exception} make the translates +$\zeta,\zeta+1,\zeta+2,\zeta+3$ into $\ell$-th powers, so +$m_\ell\geq4$. The corrected norm and the exact power criterion give +\[ + \beta^{(2^{4h}-1)/\ell} + =N^{(2^{2h}-1)/\ell}, +\] +and therefore +\[ + m_\ell=4\iff N\notin(K^\times)^\ell. \tag{2} +\] +This uses the full $\ell$-primary valuation and has no squarefreeness +or non-Wieferich hypothesis. Since $q-1\equiv-2\pmod\ell$, raising +to $q-1$ is invertible on $K^\times/(K^\times)^\ell$, so +\[ + N\in(K^\times)^\ell\iff M_k\in(K^\times)^\ell. \tag{3} +\] +The entire $\ell$-primary part of $K^\times$ lies in its norm-one +factor of order $q+1$. In a cyclic group, nonmembership in the +subgroup of $\ell$-th powers is equivalent to the order containing the +full $\ell$-primary part. Equations (2)--(3) prove the equivalence of +the first three assertions. + +Finally $\mu_\ell\subset K$. Kummer theory says that +$X^\ell-N$ is irreducible over $K$ exactly when +$N\notin(K^\times)^\ell$. Since $K=\F_2(N)$, Capelli's lemma says in +turn that this is equivalent to irreducibility of $R_k(X^\ell)$ over +$\F_2$, completing the proof. +\end{proof} + +\begin{conjecture}[$D'_k$: the exact current exception factor] +\label{conj:dk} +\CONJECTURED{} One has +\[ + D'_k:\qquad \Psi_k\mid\ord(M_k). +\] +By Proposition~\ref{prop:dk-current-level}, this is exactly the +$m=4$ upper bound for the primes at level $f=2\cdot3^k$. +\end{conjecture} + +\subsection{Projection, fibotomic, and translated-binomial forms} + +\begin{proposition}[exact current-layer projection and dominant-factor sieve] +\label{prop:dk-projection} +Let \(k\geq2\), put +\[ + s=3^{k-1},\qquad h=3s,\qquad a=2^s,\qquad q=a^3=2^h, + \qquad \Lambda_k=a^2-a+1=3\Psi_k, +\] +and retain \(N,M_k,\zeta,\omega=\zeta^h\) from +Proposition~\ref{prop:dk-current-level}. Define +\[ + P_k:=M_k^{a+1}. +\] +Then \(P_k^{\Lambda_k}=1\), and for every prime +\(\ell\mid\Psi_k\), +\[ + v_\ell(\ord P_k)=v_\ell(\ord M_k). \tag{\(\mathsf D_1\)} +\] +Moreover +\[ + P_k=\frac{\zeta^4+\zeta+\omega} + {\omega^2\zeta^4+\zeta^3+1}. \tag{\(\mathsf D_2\)} +\] +\[ + [\F_2(P_k):\F_2]=2h. \tag{\(\mathsf D_3\)} +\] +and +\[ + v_3(\ord P_k)= + \begin{cases}1,&k\text{ odd},\\0,&k\text{ even}. + \end{cases} \tag{\(\mathsf D_4\)} +\] +Set \(c_k=3\) for odd \(k\) and \(c_k=1\) for even \(k\). Then +\[ + \ord(P_k)\geq c_k(2h+1). \tag{\(\mathsf D_5\)} +\] +Consequently, if \(\ell\mid\Psi_k\) and +\[ + \ell>\frac{\Lambda_k}{c_k(2h+1)}, \tag{\(\mathsf D_6\)} +\] +then \(P_k\), and hence \(M_k\), contains the full +\(\ell\)-primary part of \(\Lambda_k\) in its order. In particular +\(D'_k\) follows whenever \(\Psi_k\) is prime; this proves \(D'_2\) +and \(D'_3\) analytically, since \(\Psi_2=19\) and +\(\Psi_3=87211\). +\end{proposition} + +\begin{proof} +The factorization +\[ + q+1=(a+1)(a^2-a+1)=(a+1)\Lambda_k +\] +and \(M_k^{q+1}=1\) give \(P_k^{\Lambda_k}=1\). Also +\(\gcd(\Lambda_k,a+1)=3\). Since \(k\geq2\), one has +\(a\equiv-1\pmod9\), so +\(\Lambda_k\equiv3\pmod9\) and +\(\gcd(\Psi_k,a+1)=1\). Exponentiation by \(a+1\) therefore preserves +all the primary valuations belonging to \(\Psi_k\), proving +\((\mathsf D_1)\). + +The lifted congruence +\[ + 2^{3^{k-1}}\equiv3^k-1\pmod{3^{k+1}} +\] +gives, modulo \(3h\), +\[ + a\equiv h-1,\quad a^2\equiv h+1,\quad + a^3\equiv-1,\quad a^4\equiv2h+1. \tag{\(\mathsf D_7\)} +\] +As \(M_k=N^{a^3-1}\), +\[ + P_k=\frac{N^{a^4}N^{a^3}}{N^aN}. +\] +Using \(N=\zeta^2+\zeta+\omega\) and \((\mathsf D_7)\), direct Frobenius +expansion gives +\begin{align*} + N^a&=\omega^2\zeta^{-2}+\omega\zeta^{-1}+\omega^2,\\ + N^{a^3}&=\zeta^{-2}+\zeta^{-1}+\omega^2,\\ + N^{a^4}&=\omega\zeta^2+\omega^2\zeta+\omega. +\end{align*} +Multiplying \(N^{a^3}\) and \(N^a\) by the same cancelling factor +\(\zeta^2\), and using \(1+\omega+\omega^2=0\), yields +\begin{align*} + N^{a^4}(\zeta^2N^{a^3})&=\zeta^4+\zeta+\omega,\\ + (\zeta^2N^a)N&=\omega^2\zeta^4+\zeta^3+1, +\end{align*} +which proves \((\mathsf D_2)\). + +The minimal polynomial of \(\zeta\) over \(\F_2\) is +\(X^{2h}+X^h+1\). Write the numerator and denominator in +\((\mathsf D_2)\) as +\(C,D\). Since \(P_k^q=P_k^{-1}\), membership in \(\F_q\) would force +\(P_k=1\). But \(C=D\), after reducing +\(\zeta^{2h}=\zeta^h+1\), would give +\[ + \zeta^{h+4}+\zeta^h+\zeta^3+\zeta+1=0, \tag{\(\mathsf D_8\)} +\] +a nonzero polynomial of degree \(h+4<2h\). + +If \(P_k\in\F_{a^2}\), its order divides +\(\gcd(\Lambda_k,a^2-1)=3\), so +\(P_k\in\{1,\omega,\omega^2\}\). The first case was excluded; the +other two respectively give +\[ + \zeta^{h+3}+\zeta=0 +\] +and +\[ + \zeta^{h+4}+\zeta^{h+3}+\zeta^4+\zeta^3+\zeta+1=0. +\] +Both are again nonzero polynomials of degree below \(2h\). Every proper +divisor of \(2h=2\cdot3^k\) divides either \(h\) or \(2h/3\); hence every +proper subfield of \(\F_{2^{2h}}\) lies in either \(\F_q\) or +\(\F_{a^2}\). This proves \((\mathsf D_3)\). + +For the \(3\)-part, observe that +\[ + P_k^{\Lambda_k/3} + =M_k^{(q+1)/3} + =N^{(q^2-1)/3} + =\Norm_{\F_{2^{2h}}/\F_4}(N). \tag{\(\mathsf D_9\)} +\] +Choose \(u\in\F_{16}\) with \(u^2+u=\omega\). Then +\(u^4=u+1\), \(u^5=\omega\), and \(u\) has order \(15\). The +extensions \(\F_{2^{2h}}/\F_4\) and \(\F_{16}/\F_4\) are linearly +disjoint, and over \(\F_{16}\) the minimal polynomial of \(\zeta\) +is \(X^h+\omega\), irreducible because +\(\ord_{3h}(16)=h\). Since +\[ + N=(\zeta+u)(\zeta+u+1), +\] +base change in \((\mathsf D_9)\) gives +\[ + \Norm_{\F_{2^{2h}}/\F_4}(N) + =(u^h+\omega)((u+1)^h+\omega). +\] +The residues of \(h=3^k\) modulo \(15\) are \(3,9,12,6\) as +\(k\equiv1,2,3,0\pmod4\); reduction with \(u^4=u+1\) gives +\[ + P_k^{\Lambda_k/3}= + \begin{cases}\omega^2,&k\text{ odd},\\1,&k\text{ even}. + \end{cases} +\] +Because \(v_3(\Lambda_k)=1\), this proves \((\mathsf D_4)\). + +Let \(e=\ord(P_k)\). From \((\mathsf D_3)\), +\(\ord_e(2)=2h\). Since +\(e\mid\Lambda_k\) and \(e\notin\{1,3\}\), some prime +\(r\mid\Psi_k\) divides \(e\); every such \(r\) has +\(\ord_r(2)=2h\), so \(r\equiv1\pmod{2h}\) and +\(r\geq2h+1\). When \(k\) is odd, \((\mathsf D_4)\) also gives +\(3r\mid e\), which proves \((\mathsf D_5)\). + +If the full \(\ell\)-primary part of \(\Lambda_k\) were missing from +\(e\), then \(e\mid\Lambda_k/\ell\). This contradicts +\((\mathsf D_5)\) under \((\mathsf D_6)\). +Equation \((\mathsf D_1)\) transfers the conclusion back to \(M_k\), and the +last assertions follow. +\end{proof} + + +\begin{proposition}[fibotomic form of the current power-residue test] +\label{prop:dk-fibotomic} +Retain Proposition~\ref{prop:dk-projection}, put +\[ + U=\{x\in\F_{q^2}^{\times}:x^{q+1}=1\},\qquad + \pi(x)=\frac{x}{(x+1)^2}=\frac1{x+x^{-1}}, +\] +and set \(Z=\pi(M_k)\). The map \(\pi\) is two-to-one from +\(U\setminus\{1\}\) onto +\[ + \mathcal T_q=\{z\in\F_q: + \operatorname{Tr}_{\F_q/\F_2}(z)=1\}, +\] +with fibres \(\{x,x^{-1}\}\). + +For an odd prime \(\ell\), define +\[ + H_\ell(W)=\sum_{j=0}^{(\ell-1)/2} + \binom{\ell-j-1}{j}W^j\in\F_2[W]. +\] +If \(\ell\mid\Psi_k\), then +\[ + M_k\in U^\ell + \iff + \text{there is }W\in\mathcal T_q\text{ with } + W^\ell+Z H_\ell(W)^2=0. \tag{\(\mathsf F\)} +\] +The polynomial +\[ + \mathcal F_{\ell,Z}(W)=W^\ell+ZH_\ell(W)^2 +\] +either has no root in \(\F_q\), or splits there into \(\ell\) +distinct linear factors. Finally \(H_\ell\) is squarefree and is a +product of exactly \((\ell-1)/(2h)\) irreducible polynomials over +\(\F_2\), each of degree \(h\). Thus \(D'_k\) is equivalently the +assertion that \(\mathcal F_{\ell,Z}\) is rootless over \(\F_q\) for +every prime \(\ell\mid\Psi_k\). +\end{proposition} + +\begin{proof} +For \(x\in U\), one has \(x^q=x^{-1}\), so \(\pi(x)\in\F_q\). +The equation \(\pi(x)=z\) is +\[ + X^2+z^{-1}X+1=0. +\] +The characteristic-two quadratic criterion says that this polynomial +is irreducible over \(\F_q\) exactly when +\(\operatorname{Tr}(z)=1\). Its roots are inverse and have norm one. +Counting, or the same quadratic argument in reverse, proves the stated +two-to-one description. + +The defining polynomial identity is +\[ + \frac{X^\ell+1}{(X+1)^\ell} + =H_\ell\!\left(\frac{X}{(X+1)^2}\right). \tag{\(\mathsf H\)} +\] +If \(M_k=T^\ell\) with \(T\in U\), put \(W=\pi(T)\). Identity +\((\mathsf H)\) gives +\[ + Z=\pi(T^\ell)=\frac{W^\ell}{H_\ell(W)^2}, +\] +so \(W\) satisfies \((\mathsf F)\). Conversely, lift a trace-one +solution \(W\) to \(T\in U\). Then \((\mathsf H)\) gives +\(\pi(T^\ell)=\pi(M_k)\), hence \(T^\ell=M_k\) or \(M_k^{-1}\). +Replacing \(T\) by \(T^{-1}\) in the second case proves +\(M_k\in U^\ell\). + +In fact every \(\F_q\)-root of \(\mathcal F_{\ell,Z}\) has trace one. +Indeed, \(H_\ell(W)\ne0\) at a root, since otherwise the equation +would force \(W=0\), whereas \(H_\ell(0)=1\). Lift a nonzero root +through \(\pi(T)=W\). If \(\operatorname{Tr}(W)=0\), the quadratic +criterion puts \(T\) in \(\F_q\). Identity \((\mathsf H)\) then gives +\(\pi(T^\ell)=Z\), but for \(y\in\F_q\setminus\{1\}\), +\[ + \pi(y)=\left(\frac{y}{y+1}\right)^2+\frac{y}{y+1} +\] +has absolute trace zero, whereas \(Z=\pi(M_k)\) has trace one. This +is a contradiction. + +If one root exists, therefore lift it to \(T\in U\) and orient \(T\) +so that \(T^\ell=M_k\). Then the +\(\ell\) elements +\[ + \pi(T\xi),\qquad \xi\in\mu_\ell, +\] +are roots in \(\F_q\). They are distinct: an inverse collision would +give \(T^2\in\mu_\ell\), hence \(M_k^2=1\), whereas \(M_k\ne1\) +because \(N\notin\F_q\). Since \(\mathcal F_{\ell,Z}\) has degree +\(\ell\), it splits completely. Its derivative is \(W^{\ell-1}\), +and trace-one roots are nonzero, so they are simple. + +Finally, the roots of \(H_\ell\) are +\[ + \pi(\xi),\qquad \xi\in\mu_\ell\setminus\{1\}, +\] +with \(\xi\) and \(\xi^{-1}\) identified. Their Frobenius-orbit +length is the least \(d>0\) with \(2^d\equiv\pm1\pmod\ell\). Since +\(\ord_\ell(2)=2h\), this least \(d\) is \(h\). The number and degrees +of the factors follow, and the roots are distinct, proving +squarefreeness. +\end{proof} + +\begin{proposition}[translated-binomial form of $D'_k$] +\label{prop:dk-translated-binomial} +Retain \(k\geq2\), \(h=3^k\), and choose +\(u\in\F_{16}\) with \(u^2+u=\omega\). Put + +\[ + L=\F_{16^h}=\F_{2^{4h}},\qquad \beta=\zeta+u. +\] + +Then the minimal polynomial of \(\beta\) over \(\F_{16}\) is the +irreducible degree-\(h\) polynomial + +\[ + B_k(Y)=(Y+u)^h+\omega. +\] + +For every prime \(\ell\mid\Psi_k\), the following are equivalent: +\begin{enumerate}[label=\textup{(\roman*)}] +\item the full \(\ell\)-primary part occurs in \(\ord(M_k)\); +\item \(\beta\notin(L^\times)^\ell\); +\item \(B_k(X^\ell)=(X^\ell+u)^h+\omega\) is irreducible over + \(\F_{16}\). +\end{enumerate} +More precisely, \(B_k(X^\ell)\) is either irreducible of degree +\(h\ell\), or is a product of exactly \(\ell\) irreducibles of degree +\(h\). +\end{proposition} + +\begin{proof} +Since + +\[ + \ord_{3h}(16) + =\frac{\ord_{3h}(2)}{\gcd(\ord_{3h}(2),4)}=h, +\] + +the element \(\zeta\) has degree \(h\) over \(\F_{16}\). As +\(\zeta^h=\omega\), its minimal polynomial there is +\(X^h+\omega\); translation by \(u\) gives \(B_k\). + +Let \(K=\F_{2^{2h}}\). The corrected norm is + +\[ + N=\Norm_{L/K}(\beta)=\beta^{2^{2h}+1}. +\] + +Because \(2^{2h}\equiv1\pmod\ell\), this norm induces multiplication +by two on \(L^\times/(L^\times)^\ell\). Hence it first gives + +\[ + \beta\in(L^\times)^\ell + \iff N\in(L^\times)^\ell. +\] + +The natural map + +\[ + K^\times/(K^\times)^\ell + \longrightarrow L^\times/(L^\times)^\ell +\] + +is injective: restriction followed by the degree-two norm is +multiplication by two, which is invertible modulo the odd prime +\(\ell\). Since \(N\in K\), this sharpens the equivalence to + +\[ + \beta\in(L^\times)^\ell + \iff N\in(K^\times)^\ell, +\] + +and Proposition~\ref{prop:dk-current-level} identifies the negation +with the full \(\ell\)-primary assertion. Kummer theory and Capelli's +lemma give the irreducibility equivalence. + +If \(\beta=\alpha^\ell\) with \(\alpha\in L\), every root of +\(B_k(X^\ell)\) lies in \(L\), because \(\mu_\ell\subset L\). Its +\(\ell\)-th power is a conjugate of \(\beta\), of degree \(h\) over +\(\F_{16}\); the root therefore has degree both at least and at most +\(h\). All irreducible factors consequently have degree \(h\), and +there are exactly \(\ell\) of them. +\end{proof} + +\begin{corollary}[short translated cyclotomic period] +\label{cor:dk-short-period} +Let \(\chi:L^\times\to\mu_\ell\) have exact order +\(\ell\), realize its values as complex roots of unity, and write +\(\chi(\beta)=\xi_\ell^r\). Then + +\[ + \mathcal J_{k,\ell} + :=\sum_{\theta^h=\omega}\chi(\theta+u) + =\sum_{j=0}^{h-1}\xi_\ell^{\,r16^j}, +\] + +and + +\[ + \beta\in(L^\times)^\ell + \iff \mathcal J_{k,\ell}=h. +\] +\end{corollary} + +\begin{proof} +The roots of \(X^h+\omega\) are \(\zeta^{16^j}\), \(0\leq j\frac{\Lambda_k}{B_-(h)}, \tag{\(\mathsf{PR}_2\)} +\] +then \(P_k\), and hence \(M_k\), contains the full +\(\ell\)-primary part of \(\Lambda_k\) in its order. Thus \(D'_k\) +holds at every current prime satisfying \((\mathsf{PR}_2)\). This +replaces the linear denominator in \((\mathsf D_6)\) by an +unconditional quantity exponential in \(\sqrt h\); current factors at +or below the new threshold remain open. +\end{proposition} + +\begin{proof} +The element \(\zeta\) has degree \(h\) over \(\F_4\), because +\(\ord_{3h}(4)=h\). The subgroup generated by \(4\) in +\((\mathbb Z/3h\mathbb Z)^\times\) consists exactly of the classes +congruent to \(1\pmod3\). Hence, for every positive +\(j\equiv1\pmod3\) with \(j<3h\), there is \(z_j\) such that +\(4^{z_j}\equiv j\pmod{3h}\). + +Put +\[ + A_j(X)=X^{4j}+X^j+\omega, + \qquad + B_j(X)=\omega^2X^{4j}+X^{3j}+1. +\] +Equation~\((\mathsf D_2)\), followed by \(4^{z_j}\)-Frobenius, gives +\[ + P_k^{\,4^{z_j}}=\frac{A_j(\zeta)}{B_j(\zeta)}. \tag{\(\mathsf{PR}_3\)} +\] +For a partition \(I\) counted by \(B_-(h)\), set +\(E_I=\sum_{j\in I}4^{z_j}\). We claim that the powers +\(P_k^{E_I}\) are pairwise distinct. + +Suppose two of them, indexed by \(I\) and \(J\), were equal. Cancel +the common parts and cross-multiply in \((\mathsf{PR}_3)\). The +resulting polynomial in \(\F_4[X]\) has degree at most +\[ + 4\left(\sum_{j\in I}j+\sum_{j\in J}j\right) + \leq8H_ka. \tag{\(\mathsf T\)} +\] +At least \(a/2+1\) elements of \(\mathcal I_\ell\) have exact degree +\(h\) over \(\F_2\). Consequently, absolute trace one together with +full degree \(h\) cannot prove that the distinguished +\(Z\) lies outside \(\pi(U^\ell)\). +\end{proposition} -\CERTIFIED{k\leq6} $D_k$ holds for $k=2,\dots,6$: every prime factor of -the fully factored $\Phi_{2\cdot3^k}(2)$ divides $\ord(M_k)$. Hence -$m_p=4$ exactly --- not merely $\geq4$ --- for every prime $p$ with -$f(p)\in\{18,54,162,486,1458\}$: -\begin{center} -\begin{tabular}{rl} -\toprule -$f$ & primes $p$ with $m_p=4$ \\ -\midrule -$18$ & $19$ \\ -$54$ & $87211$ \\ -$162$ & $163,\ 135433,\ 272010961$ \\ -$486$ & $1459,\ 139483,\ 10429407431911334611,$ \\ - & $918125051602568899753$ \\ -$1458$ & $227862073,\ 3110690934667,\ 216892513252489863991753,$ \\ - & $1102099161075964924744009,\ \mathrm{P}78$ \\ -\bottomrule -\end{tabular} -\end{center} -($\mathrm{P}78$ is the certified $78$-digit prime of -$\Phi_{2\cdot3^6}(2)$; PRP-local here, factordb marks it proven.) The -anchor rows $m_{19}=m_{163}=m_{1459}=4$ (DiMuro / calculator) are -reproduced, never assumed; the remaining eleven rows are new. -Independent cross-checks: the term algebra of -\path{experiments/ordinal_excess_probe.py} re-derives the $p=19$ root -pattern ($m=0,\dots,3$ root, $m=4$ no root) and $m_{87211}=4$; an -explicit Artin--Schreier compositum model $\F[y]/(y^2+y+\omega)$ -verifies $\sigma(4)=5$, the norm identity, and the full direct power -test $(\kappa+4)^{(2^{4h}-1)/p}\neq1$ on the smallest prime of each -level $k\leq6$. - -\CONSISTENT{} $k=7,8$: every \emph{known} prime factor of -$\Phi_{2\cdot3^7}(2)$ and $\Phi_{2\cdot3^8}(2)$ --- seven and five -primes respectively; factordb CF entries verified locally by -divisibility, primality, and order tests, the small ones re-derived by -sieve, and the list cross-audited against the raw factordb API after an -adversarial review caught a dropped $43$-digit $k=7$ prime --- also has -$m_p=4$. An $m_p\geq5$ example, if one exists, now hides strictly -inside the unfactored cofactors. +\begin{proof} +The two-to-one trace-one parametrization in +Proposition~\ref{prop:dk-fibotomic} restricts to \(U^\ell\). This +cyclic subgroup has order \((q+1)/\ell\), which is odd, so its only +self-inverse element is \(1\). This proves the equality in +\((\mathsf T)\). Since \(\ell\leq\Psi_k=\Lambda_k/3\) and +\(q+1=(a+1)\Lambda_k\), it also gives +\[ + |\mathcal I_\ell|\geq\frac{3(a+1)-1}{2} + =\frac{3a+2}{2}. +\] +Every proper subfield of \(\F_q\) lies in +\(\F_{2^{h/3}}=\F_a\), because \(h=3^k\). Hence at most \(a\) +elements of \(\mathcal I_\ell\) have degree smaller than \(h\), leaving +at least \((3a+2)/2-a=a/2+1\) of exact degree \(h\). + +For completeness, the distinguished \(Z\) itself has exact degree +\(h\). Indeed, \((\mathsf D_3)\) and \(P_k\in\F_2(M_k)\) force +\([\F_2(M_k):\F_2]=2h\). The element \(M_k\) is quadratic over +\(\F_2(Z)\), satisfying +\[ + X^2+Z^{-1}X+1=0, +\] +while \(Z\in\F_q\). Therefore \([\F_2(Z):\F_2]=h\). +\end{proof} + +\subsection{The limits of norm induction} + +\begin{proposition}[all proper-subfield norms are blind] +\label{prop:dk-all-norms-blind} +Retain \(k\geq2\) and the notation of +Proposition~\ref{prop:dk-current-level}. Let \(\ell\) be a prime +divisor of \(\Psi_k\), and let \(d\) be any proper divisor of \(2h\). +Then +\[ + \Norm_{\F_{2^{2h}}/\F_{2^d}} +\] +annihilates the entire \(\ell\)-Sylow subgroup of +\(\F_{2^{2h}}^\times\). Equivalently, multiplying an element by any +current \(\ell\)-primary component leaves every multiplicative norm to +a proper subfield unchanged. +\end{proposition} + +\begin{proof} +The norm exponent is +\[ + E_d=\frac{2^{2h}-1}{2^d-1}. +\] +Since \(\ord_\ell(2)=2h\) and \(d<2h\), one has +\(\ell\nmid2^d-1\). Therefore +\[ + v_\ell(E_d)=v_\ell(2^{2h}-1), +\] +so exponentiation by \(E_d\) kills the full \(\ell\)-Sylow subgroup. +\end{proof} + +For $k=1$, $\Psi_1=1$ and $D'_1$ is vacuous. Exact finite evidence for +the subsequent levels, together with its factorization and primality +dependencies, is recorded in Appendix~\ref{sec:exception-evidence}. \begin{proposition}[twisted norm tower]\label{prop:twisted} -\PROVED{} With $\eta=\zeta^3=\kappa_{3^{k-1}}$, +With $\eta=\zeta^3=\kappa_{3^{k-1}}$, \[ \Norm_{\F_{2^{2\cdot3^k}}/\F_{2^{2\cdot3^{k-1}}}}(N_k) =\eta^2+\omega^2\eta+1 , @@ -648,192 +9357,509 @@ \subsection{The $m=4$ upper bound: settled at every visible prime} $k=2,3,4$. \end{proof} +\begin{proposition}[trace form and norm blindness] +\label{prop:dk-trace} +Retain the notation of +Proposition~\ref{prop:dk-current-level}, and put +\[ + \gamma_k:=\zeta+\zeta^{-1},\qquad + A_k:=\gamma_k^2+\gamma_k+1,\qquad + Q:=2^{2\cdot3^{k-1}}=2^{2h/3}. +\] +Set $\gamma_0=A_0=1$. +Then, with $\overline N=N^{2^h}$, +\[ + N+\overline N=A_k,\qquad N\overline N=A_k^Q, + \qquad M_k+M_k^{-1}=A_k^{2-Q}, + \qquad Z=A_k^{Q-2}. \tag{4} +\] +Moreover +\[ + \Norm_{\F_{2^{3^k}}/\F_{2^{3^{k-1}}}}(A_k)=A_{k-1}, + \qquad + \Norm_{\F_{2^{3^k}}/\F_{2^{3^{k-1}}}}(Z)=A_{k-1}^{-1}. \tag{5} +\] +For every prime $\ell\mid\Psi_k$, however, this relative norm is +blind to the required $\ell$-power residue class. +\end{proposition} + +\begin{proof} +Since $2^h\equiv-1\pmod{3h}$ and +$\zeta^h+\zeta^{2h}=1$, direct expansion gives +\[ + N+\overline N + =\zeta^2+\zeta^{-2}+\zeta+\zeta^{-1}+1=A_k. +\] +The congruence $Q\equiv h+1\pmod{3h}$ follows inductively by cubing +$1+3^r$ modulo $3^{r+2}$. Hence +$\gamma_k^Q=\zeta^{h+1}+\zeta^{-(h+1)}$, and another direct +expansion yields $N\overline N=A_k^Q$. Therefore +\[ + M_k+M_k^{-1} + =\frac{(N+\overline N)^2}{N\overline N}=A_k^{2-Q}, +\] +and \(Z=\pi(M_k)=1/(M_k+M_k^{-1})\), which proves (4). + +Over $B=\F_{2^{h/3}}$, the element $\gamma_k$ has minimal polynomial +$X^3+X+\gamma_{k-1}$. Base-change this cubic extension by +$B_2=B\F_4=\F_{2^{2h/3}}$; its compositum is +$\F_{2^{2h}}$, and the degree remains three. With +$\omega=\zeta^h\in\F_4$ one has +$A_k=(\gamma_k+\omega)(\gamma_k+\omega^2)$. Evaluating that minimal +polynomial at $\omega$ and $\omega^2$ gives +\[ + \Norm_{\F_{2^{2h}}/B_2}(\gamma_k+\omega) + =\gamma_{k-1}+\omega^2, + \qquad + \Norm_{\F_{2^{2h}}/B_2}(\gamma_k+\omega^2) + =\gamma_{k-1}+\omega. +\] +Their product is $A_{k-1}$. Since norm commutes with this scalar +extension, this is precisely +$\Norm_{\F_{2^h}/B}(A_k)$, proving the first identity in (5). +Furthermore \(Z=A_k^{Q-2}\), so +\[ + \Norm_{\F_{2^h}/B}(Z)=A_{k-1}^{Q-2}=A_{k-1}^{-1}, +\] +because \(Q-2\equiv-1\pmod{2^{h/3}-1}\). +This proves the second identity. + +If $\ell\mid\Psi_k$, then $\ell\nmid2^h-1$ and +$\ell\nmid2^{h/3}-1$. Thus both $A_k$ and $A_{k-1}$ lie in +multiplicative groups on which raising to the $\ell$-th power is an +automorphism, so (5) is tautological on $\ell$-power classes. Equivalently, +$\ord_\ell(Q)=3$ and $1+Q+Q^2\equiv0\pmod\ell$: the degree-three norm +annihilates the relevant character. The surviving current-level +condition is the Capelli +test $R_k(X^\ell)$ irreducible from +Proposition~\ref{prop:dk-current-level}. +\end{proof} + So, unlike the $\gamma$ tower of Proposition~\ref{prop:tower}, -old-prime full-order parts do \emph{not} propagate up the column, and -$D_k$ is genuinely per-level: the certification at each $k$ stands on -its own. +old-prime full-order parts do \emph{not propagate by that argument}, and +$D'_k$ is genuinely per-level for the present method: the certification at +each $k$ stands on its own. Structurally, at the degree-$3$ step with +$Q=2^{2\cdot3^{k-1}}$, the relative norm kernel has order +\[ + Q^2+Q+1=\Phi_{3^k}(2)\Phi_{2\cdot3^k}(2). +\] +Its gcd with $Q-1$ is $3$, so there is no direct-product splitting at +the $3$-part as in Proposition~\ref{prop:norm-kernel-seam}; nevertheless, +for every $\ell\ne3$ the new $\ell$-Sylow subgroups of both columns lie +entirely in the norm kernel. This is the +prime-to-$3$ analogue of Proposition~\ref{prop:norm-kernel-seam} and +explains why a lower-level norm identity cannot determine $D'_k$. \begin{remark}[the $3$-part]\label{rem:threepart} -\CONSISTENT{} The $3$-part of $\ord(M_k)$ carries no column information -but is strikingly regular in range: $v_3(\ord M_k)=k+1$ (full) for odd -$k$ and $k-1$ (deficiency exactly $3^2$) for even $k$, for -$2\leq k\leq6$. No explanation is on record. +Proposition~\ref{prop:dk-projection} and +\(v_3(a+1)=k\) imply +\[ + v_3(\ord M_k)=k+1\quad(k\text{ odd}),\qquad + v_3(\ord M_k)\leq k\quad(k\text{ even}). +\] +Thus the odd-level full \(3\)-part is now explained analytically. +\CONSISTENT{} At even levels \(2\leq k\leq6\), the sharper observed +value is \(v_3(\ord M_k)=k-1\); the remaining one-step deficiency is +not determined by the projection theorem. \end{remark} -\section{Boundedness}\label{sec:bounded} - -\CONJECTURED{} (Lenstra~\cite{Lenstra77}) $m_p$ is globally bounded. -Lenstra gave unconditional lower-bound rules (singleton odd $\Qset$ -forces positive excess; $f(p)=2\cdot3^k$ forces excess at least $4$) but -left absolute boundedness open. - -\PROVED{} If the $0/1/4$ candidate holds, then $m_p\leq4$ for all $p$; -proving Conjecture~\ref{conj:rule} would settle boundedness. - -\PROVED{} The $3$-power column cannot produce $m\in\{2,3\}$ -(Proposition~\ref{prop:column}); any $C_k$ failure jumps directly to -$m_r\geq4$. - -\PROVED{} (conditional on $C_k$) For every prime $r$ with $f(r)=3^j$, -$j\leq k$: $C_k$ implies $m_r=1$. With $C_k$ certified for $k\leq6$, all -primes in the $3$-power column with $f(r)\leq6561$ have $m_r=1$ -unconditionally. - -\CERTIFIED{k\leq6} (June 2026 pass) On the $2\cdot3^k$ exception column -the matching upper bound is now certified at every visible prime: -$m_p=4$ exactly for every prime with $f(p)=2\cdot3^k$, $k\leq6$, and for -every known prime at $k=7,8$ (Section~\ref{sec:m4}). Boundedness on the -exception column therefore holds unconditionally through $f=1458$ and is -equivalent to $D_k$ (Conjecture~\ref{conj:dk}) beyond. - -\OPEN{} Boundedness outside the $3$-power and $2\cdot3^k$ columns. The -non-cyclotomic singleton chains (e.g.\ the $11$-chain and the $23$, $29$, -$47$ components) have $m=1$ rows in the calculator data and OEIS, but no -order-criterion proof covers them the way $C_k$ covers the $3$-power -column. - -\OPEN{} Whether any prime $p$ has $m_p\geq5$. No counterexample is known; -the question is not known to be decidable by any current structural -argument outside the $3$-adic columns. - -\section{Ranked next moves}\label{sec:moves} - -\begin{enumerate}[leftmargin=*] -\item \emph{Dress rehearsal on $m_{359}$ (highest priority).} The easy -dependency rows are now locally certified: $m_{89}=1$ at $E=220$ and -$m_{179}=1$ at $E=19{,}580$ -(\path{experiments/ordinal_excess_probe.py}, \texttt{--deep} for the -latter). The remaining independent rehearsal row on which an $m_{719}$ -certificate depends is $m_{359}=1$, whose component field has degree -$E=3{,}504{,}820$. The value is already source-pinned by A380496; the -research value is a local certificate and a calibrated cost model for -the first unknown row. The 2026-06-16 pass found the precise obstruction: -the cheap top-step norm lands in $\F_{2^{19580}}$, where $359$ is -invisible, while the correct norm is the transverse -$\F_{2^{3504820}}/\F_{2^{179}}$ norm and is dense in the current term -basis (Subsection~\ref{sec:m359-obstruction}). Certifying it remains a stretch, -plausibly hours to a day with \texttt{gf2x}-style arithmetic, and is not -reachable with the present pure-Python oracle. Confirm $m_{359}=1$ first; -the norm recurrence for $p=719$ shifts if not. \emph{Feasible only with a -faster tower/Frobenius implementation; blocks the next move.} -\item \emph{Certify $m_{719}$ via the Kummer-tower Frobenius norm.} -Implement the binary-splitting norm $N_{2k}=N_k\cdot\Frob^{359k}(N_k)$ in -the tower-sparse representation; measure the cost model on the calibrated -path; if tower-aware Frobenius brings the ${\sim}44$ modular compositions -to feasible size, run to certify or falsify $m_{719}=1$. Factor out the -shared \texttt{relative\_norm\_over\_frobenius\_orbit} abstraction -(Remark~\ref{rem:bridgek}). \emph{Blocked on move 1 for the cost -model.} -\item \emph{[Done, 2026-06-12.] $m_p=4$ exactly on the $2\cdot3^k$ -column.} Settled at every prime current factor tables reach -(Section~\ref{sec:m4}, \path{experiments/exception_column_m4.py}): the -corrected norm $(\kappa+4)(\kappa+5)=\kappa^2+\kappa+\omega$ collapses -the test in-field; certified universally for $k\leq6$, consistent at -$k=7,8$. Successor moves: prove $D_k$ (Conjecture~\ref{conj:dk}) --- -the twisted norm tower (Proposition~\ref{prop:twisted}) shows why -$\gamma$-style propagation is unavailable; factor the -$\Phi_{2\cdot3^7}(2)$ and $\Phi_{2\cdot3^8}(2)$ cofactors (joins the -ECM/GNFS batch of the next move); explain the $3$-part parity -(Remark~\ref{rem:threepart}). -\item \emph{Convert $C_7$, $C_8$ from \textsc{consistent} to -\textsc{certified}.} ECM/GNFS jobs on the cofactors of $\Phi_{3^7}(2)$ -and $\Phi_{3^8}(2)$; full factorization also emits a batch of new -A380496 rows. \emph{Background job; uncertain outcome; blocks -nothing.} -\item \emph{Exact-order census on the non-cyclotomic singleton chains.} -Compute $\ord(\kappa_q+m)$ for small $m$ in the explicit component fields -for the $11$-chain and the $23$, $29$, $47$ components (degrees up to -${\sim}5060$; trivial locally); look for an analogue of the -$L^{\times}\times U$ splitting and for any forced-translate mechanism. -This is the main structural gap for boundedness outside the $3$-power -columns. \emph{Feasible now; no structural theory yet.} +\subsection{\texorpdfstring{Open problem \(D\)}{Open problem D}} + +The exceptional arm is precisely Conjecture~\ref{conj:dk}: for each +$k$, the distinguished antiunit $M_k$ must contain the full +current-level factor $\Psi_k$ in its order. The projection and +partition-regulator theorems settle explicit large primary factors, +while the translated-binomial, semiprimitive, Dirichlet, Dickson, and +norm calculations prove that the remaining smaller factors survive all +present generic criteria. What remains is an arithmetic evaluation of +this distinguished cyclotomic Kummer class, not a further degree or norm +identity. + +\section{Consequences and exact frontier}\label{sec:bounded} + +\subsection{Boundedness} + +Lenstra conjectured that \(m_p\) is globally bounded +\cite{Lenstra77}. His unconditional rules give positive excess on +singleton odd component sets and the lower bound \(m_p\geq4\) when +\(f(p)=2\cdot3^k\), but do not give an absolute upper bound. The +four-arm equivalence of Theorem~\ref{thm:rule-four-arms} shows exactly +what would settle the question: Conjecture~\ref{conj:rule} implies +\[ + m_p\in\{0,1,4\}\qquad\text{for every odd prime }p. +\] + +The theorem also explains why a generic finite-field argument is +insufficient. Proposition~\ref{prop:translate-no-go} constructs +arbitrarily large exact-degree elements whose translates in any fixed +finite window are all \(p\)-th powers. Any proof must therefore use +the distinguished Conway-tower identities. + +The available uniform results are substantial but incomplete. +The zero arm is proved for primitive support and completely at the first +two power-of-two two-spine levels \(h=12,24\); the ordinary odd-spine +arm has projective reductions and a signed conjugate-ball sieve; the +cubic and exceptional arms have explicit partition-regulator bounds. +Each leaves smaller current primary factors untreated. Consequently +neither global boundedness nor the nonexistence of an excess +\(m_p\geq5\) is presently proved. + +\subsection{The four remaining theorem targets}\label{sec:moves} + +The proof frontier is most cleanly stated in the same four coordinates +as Theorem~\ref{thm:rule-four-arms}. + +\begin{enumerate}[label=\textup{\(\mathbf{\Alph*}\).},leftmargin=*] +\item \emph{Zero arm.} +There are two exact maximal-order problems. At a singleton-even level, +prove +\[ + \delta_n=F_n +\] +in Proposition~\ref{prop:fermat-arm}. The fibotomic recursion, +elliptic correspondence, and equivariant five-point generalized +Jacobian reduce this to the nonvanishing of one explicit distinguished +Kummer value; they also prove that the available trace, norm, and +boundary-character data are circular. Proposition~\ref{prop:fermat-root-ancestry} +pushes the minimal-counterexample hypothesis through unique +\(\ell\)-th roots: every lower trace, norm, and maximal-order identity +survives automatically, while top failure is exactly one Dickson +power-sum equation. Proposition~\ref{prop:fermat-dickson-dichotomy} +proves that its Dickson polynomial has no intermediate factorization: +failure is complete splitting and success is irreducibility, with the +same Kummer scalar appearing in the exact resultant. +Proposition~\ref{prop:fermat-trace-divisor} then transfers failure to the +selected divisibility \(\mathcal P_{\ell,n}\mid H_m\): the absolute norm +of a reverse-Dickson polynomial, containing the actual minimal polynomial +of \(a_{n-1}\), must divide the trace-one polynomial. Its factorization +is one irreducible of degree \(m\ell\) on success and \(\ell\) +irreducibles of degree \(m\) on failure. +Remark~\ref{rem:fermat-trace-gap} proves that the resulting degree and +coefficient-gap constraints remain compatible with every composite +Fermat case. Proposition~\ref{prop:fermat-coset-semiconjugacy} +identifies \(H_m\) with the inversion quotient of the norm-one torus +and \(P_{\ell,a}\) with one transported \(\mu_\ell\)-coset. +Remark~\ref{rem:fermat-coset-support} gives the exact fibotomic strata +of that coset and proves their capacity constraints automatic. Thus +the selected divisor is sharper but still unevaluated: additive and +support data are realized by many nonselected cosets. For +multicomponent zero sets, +Proposition~\ref{prop:fermat-two-spine-support} proves that the Conway +class is nontrivial in the primitive-support quotient under its stated +two-spine hypotheses, but generation of a composite quotient remains +open. Remark~\ref{rem:two-spine-cross-ratio} records the exact +Hilbert--90 representative and why it yields no order bound by itself. + +\item \emph{Ordinary odd-spine arm.} +Evaluate the selected power-residue class +\(\Theta_{q,s}\) of Proposition~\ref{prop:singleton-transverse} and +prove its full projective order. This includes the \(11\)-chain and +the \(23,29,47,179,\ldots\) components. The relative-unit formulation +and Proposition~\ref{prop:singleton-conjugate-ball} prove every primary +factor above an explicit signed-ball threshold, so the unresolved +content is confined to the smaller factors. The source-pinned +\(m_{359}=1\) row is a concrete instance whose independent trace +evaluation remains open. Remark~\ref{rem:base-selector-cancel} shows +that the unweighted orbit product in global reciprocity still cancels +over the \(p-1\) lifts for every selector from the base cyclotomic +field. Proposition~\ref{prop:weighted-selector-reciprocity} proves that +pure order-\(p\) selectors also have zero weight. The mixed Jacobi +family escapes both cancellations, but +Corollary~\ref{cor:ordinary-mixed-jacobi} identifies the target with one +inverse-Fourier coordinate of its first local phase. Proving that +coordinate nonzero remains the theorem. +Proposition~\ref{prop:ordinary-binary-sections} gives an equivalent +characteristic-two boundary: failure means that every nonconstant binary +section of \((1+x)^{\mathcal L_{r,a}/p}\) vanishes at \(x_{a-1}\), or, +after descent, that the actual Conway minimal polynomial +\(P_{\alpha_r}\) divides every selected section polynomial \(R_{e,c}\). +Corollary~\ref{cor:ordinary-sections-no-go} proves that norm and complement +symmetry are automatic under this pattern. The remaining theorem is an +explicit selected-polynomial nondivisibility, not a generic binomial-step +statement. Proposition~\ref{prop:ordinary-tower-no-go} and +Remark~\ref{rem:ordinary-common-sections} prove this distinction sharp: +the simultaneous divisibilities occur in arbitrarily many full-degree +irreducible factors while preserving the complete \(r\)-power ancestry, +smooth degree, multiplicative orders, and full \(p\)-primary test. They +also occur among scalings inside any fixed bottom Kummer coset. Only the +actual Conway scaling \(c=1\) remains unevaluated. + +\item \emph{Cubic arm.} +Prove \(C_k\) for every \(k\): equivalently, for each +\(\ell^a\mid\Phi_{3^k}(2)\), prove +\[ + v_\ell(\ord\gamma_k)=a. +\] +The norm tower propagates all old factors, and +Proposition~\ref{prop:cubic-partitions} settles primary factors above +its explicit threshold. The derivative regulator, secant saturation, +and reciprocity calculations all recover the same one-dimensional +Kummer class without evaluating it, while +Proposition~\ref{prop:cubic-recursion-no-go} proves that the coefficient +recursion does not preserve primitivity even when it preserves +irreducibility. Proposition~\ref{prop:cubic-cyclic-parity} makes the +remaining assertion purely combinatorial in the cyclic group algebra: +the binary subset sums of \((2^{3^k}-1)/\ell\) cannot have parity one at +every residue except a single prescribed residue. This universal +inequality, equivalently direct Kummer nonvanishing at the smaller +current factors, remains open. Corollary~\ref{cor:cubic-augmentation} +shows that both the full Frobenius product and the apparent +\(\ell\)-th-power exponent test are unconditional: failure is an extra +proper-subproduct relation, so those identities alone cannot exclude it. +Proposition~\ref{prop:cubic-block-compression} compresses that relation +to one reciprocal unit and proves that mask complementation forces the +prescribed exceptional residue rather than contradicting it. +Proposition~\ref{prop:cubic-wendt-factor} gives the remaining exact +factor-selection problem: failure is the occurrence of the distinguished +minimal polynomial of \(\eta_k\), together with its reciprocal translate, +in a binary Wendt gcd. Every Wendt factor already has the required +degree and a translation partner, so a closure must exclude this selected +pair rather than all such factors. +Proposition~\ref{prop:cubic-wendt-singer} factors the gcd through Singer +coset intersections and gives their exact first two moments. In the range +\(\ell-1<\sqrt q+1/\sqrt q\), every coset contains degree-\(n\) +Wendt factors, proving that generic factor exclusion is impossible there. +Proposition~\ref{prop:cubic-wendt-s3} descends the selected pair to the +degree-\(3^{k-1}\) minimal polynomial of +\(\eta_{k-1}^2+\eta_{k-1}+1\); deciding whether that trace fiber lies in +the chosen multiplicative coset is the same Kummer evaluation. +Corollary~\ref{cor:cubic-reciprocal-selector} identifies this quotient +selector with \(\gamma_{k-1}^{-2}\), gives its irreducible cubic +recursion, and proves the exact order seam +\[ + \ord(z_k)=\ord(z_{k-1})\ord(\eta_k). +\] +Thus the descent is a lossless reciprocal form of \(C_k\), not an +induction from \(C_{k-1}\). +Proposition~\ref{prop:cubic-prescribed-trace} makes the last coordinate +one extremal value \(\Theta_\chi(\eta_{k-1})=3\). Other Singer trace +fibres genuinely attain \(3\), so uniform character bounds cannot close +the selected fibre. + +\item \emph{Exceptional arm.} +Prove \(D'_k\) for every \(k\), equivalently +\[ + \Psi_k\mid\ord(M_k) +\] +in Conjecture~\ref{conj:dk}. Proposition~\ref{prop:dk-current-level} +gives Capelli and resultant formulations, while +Proposition~\ref{prop:dk-partition-regulator} treats the large factors. +The antiunit, translated-binomial, semiprimitive, Dirichlet, Dickson, +and norm-blindness results show precisely why the remaining smaller +factors are not consequences of the present generic identities. +Proposition~\ref{prop:dk-jacobi-flatness} adds an exact first-order +boundary: failure is simultaneous \(\pi^2\)-flatness of all mixed +Jacobi sums of conductor \(15h\). Ruling out that simultaneous +flatness is still equivalent to evaluating the selected local phase. +Proposition~\ref{prop:dk-cyclic-parity} gives the parallel +characteristic-two boundary: failure is a complement-of-zero submask +parity pattern modulo \(15h\), while its \(\ell\)-th-power consequence +is an unconditional idempotent identity. +Proposition~\ref{prop:dk-half-block} splits the exponent into two +Frobenius-related blocks and proves that the resulting quadratic norm +equation, its Hilbert--90 condition, and its involution-fixed +coefficients are all compatible with failure. The exact surviving +coordinate is Proposition~\ref{prop:dk-selected-trace}: the selected +residue symbol must have nonzero relative trace. +Proposition~\ref{prop:dk-selected-sextic} then identifies the phase with +one explicit reciprocal sextic over \(\F_{2^{3^{k-1}}}\). Equivalently, +failure is the selected divisibility +\[ + C^2Y^3+gCY^2+Y+g^2 + \mid D_{(2^{2\cdot3^{k-1}}-2^{3^{k-1}}+1)/\ell}(Y). +\] +The Dickson polynomial factors completely as \(Y(Y+1)^2\) times +squares of irreducible cubics. Thus degree, reciprocity, and factor +shape admit many false positives. +Proposition~\ref{prop:dk-cubic-shape} proves more: every admissible +cubic has constant coefficient equal to the square of its trace +coefficient, exactly as \(G/C^2\) does. +Proposition~\ref{prop:dk-selected-fingerprint} evaluates the two +absolute traces +\[ + \operatorname{Tr}(g/C)=1, + \qquad + \operatorname{Tr}(C^{-2})=k\pmod2, +\] +but the ambient factorization supplies no contrary coordinate identity. +Remark~\ref{rem:plus-minus-tori} also shows that the cubic and +exceptional current groups have coprime orders, so no rational-point +homomorphism can transfer arm \((C)\) to arm \((D)\). +The remaining theorem is precisely +exclusion of the recursively selected cubic. \end{enumerate} -\section{Provenance and validation}\label{sec:provenance} +Appendix~\ref{sec:provenance} records finite computations, external +factorization dependencies, and implementation provenance. Those data +are valuable for falsification and audit, but none is used to promote a +uniform conjecture to a theorem. + +\appendix +\section{Computational and implementation evidence}\label{sec:provenance} + +This appendix separates exact finite computation from theorem and from +external data. A row is called \emph{locally certified} only when the +checkout contains enough exact arithmetic and primality information to +verify it without trusting a probable-prime test or an external database. +A \emph{source-assisted} row has exact local field arithmetic but relies +on an identified external primality or factorization record. A +\emph{consistent} row verifies only the currently known factors and does +not control an unfactored cofactor. None of these finite labels asserts +a uniform theorem in the level. + +\subsection{Source-pinned tower data} + +The implementation vendors the complete OEIS A380496 b-file for the +\(126\) odd primes \(3\leq p\leq709\) and diffs it in full against the +source-pinned copy. These integer rows determine the implemented +Kummer carries below the stated boundary; selected resulting ordinals +receive independent value tests. In particular \(m_{359}=1\) is a +source-pinned table value. Section~\ref{sec:ordinary} isolates the +independent analytical trace whose unevaluated value would reprove that +row. The next unsupported carry is \(\alpha_{719}\), and the +implementation refuses to cross it. -\subsection{Independent oracle} +The contributor-linked extended A380496 auxiliary table~\cite{OEIS,Peeters} +also records +\(m_{1093}=m_{3511}=0\). These are the two known base-two Wieferich +rows: \(v_{1093}(2^{364}-1)=v_{3511}(2^{1755}-1)=2\). +The external calculator applies Lenstra's exact exponent +\((2^E-1)/p\), so each zero asserts the full \(p^2\)-primary order, +not merely divisibility by \(p\). The two rows lie outside the approved +126-term b-file, however, and the external repository stores no compact +nonidentity remainder certificate for them. They are therefore +source-assisted external computations, not locally certified rows or +analytical instances of Proposition~\ref{prop:support}. -\path{experiments/ordinal_excess_probe.py} is a small local term-algebra -oracle -- not a replacement for CGSuite~\cite{CGSuite} or the C++ -calculator~\cite{Peeters}, but a way to verify the first subtle cases -without using the Rust production tower as its own oracle. It implements -the impartial term algebra used by the calculators, a -multiplicative-order test for small component fields, and a fixed-base -exponentiation path (ported from the calculator's strategy) for targeted -root tests where full order factorization is unnecessary. Current probe -output: +\subsection{Independent small-row oracle} +\path{experiments/ordinal_excess_probe.py} is a local term-algebra +oracle independent of the Rust production tower. It implements the +impartial term algebra used by the calculators, multiplicative-order +tests for small component fields, and fixed-base root tests for larger +selected rows. Its audited sample is: \begin{center} \begin{tabular}{rrlc} \toprule -$p$ & $m$ & $\Qset$ & root? \\ +\(p\) & \(m\) & \(\Qset\) & \(p\)-th root? \\ \midrule -$7$ & $0$ & $\{3\}$ & yes \\ -$7$ & $1$ & $\{3\}$ & no \\ -$19$ & $1$ & $\{9\}$ & yes \\ -$19$ & $4$ & $\{9\}$ & no \\ -$73$ & $1$ & $\{9\}$ & no \\ -$89$ & $1$ & $\{11\}$ & no \\ -$47$ & $1$ & $\{23\}$ & no \\ -$179$ & $1$ & $\{89\}$ & no \quad(\texttt{--deep}) \\ +\(7\) & \(0\) & \(\{3\}\) & yes \\ +\(7\) & \(1\) & \(\{3\}\) & no \\ +\(19\) & \(1\) & \(\{9\}\) & yes \\ +\(19\) & \(4\) & \(\{9\}\) & no \\ +\(73\) & \(1\) & \(\{9\}\) & no \\ +\(89\) & \(1\) & \(\{11\}\) & no \\ +\(47\) & \(1\) & \(\{23\}\) & no \\ +\(179\) & \(1\) & \(\{89\}\) & no \\ \bottomrule \end{tabular} \end{center} +These are exact finite checks, not evidence for an all-level +maximal-order theorem. + +\subsection{Cubic finite evidence}\label{sec:cubic-evidence} + +Proposition~\ref{prop:prime-step} proves \(C_1,C_2,C_3\) without an +order census. The maintained script +\path{experiments/cyclotomic_3k_family.py} then performs exact +factor reconstruction and power tests. + +For \(k=4,5\), every required factor is locally proved prime and the +script certifies that \(\gamma_k\) contains the full primary part of +\(2^{3^k}-1\); hence \(C_4\) and \(C_5\) are locally certified. At +\(k=6\), the same exact field computations cover all listed factors, +but the \(42\)- and \(90\)-digit factors are only probable primes under +the local Miller--Rabin path. FactorDB records them as proven primes, +but no certificates are vendored here. Thus \(C_6\) is +\emph{source-assisted}, not locally certified. + +At \(k=7,8\), every currently known prime factor of +\(\Phi_{3^k}(2)\) passes the required order test, while unfactored +composite cofactors remain. These levels are only consistent with +\(C_k\). The distinctions are summarized as follows: +\begin{center} +\begin{tabular}{ccl} +\toprule +levels & status & basis \\ +\midrule +\(1\leq k\leq3\) & theorem & prime-step argument \\ +\(k=4,5\) & locally certified & exact factorization, primality, and order \\ +\(k=6\) & source-assisted & exact order; external primality for P42 and P90 \\ +\(k=7,8\) & consistent & known factors only; unfactored cofactors \\ +\bottomrule +\end{tabular} +\end{center} + +\subsection{Exceptional finite evidence}\label{sec:exception-evidence} + +The maintained script +\path{experiments/exception_column_m4.py} checks the corrected norm, +the projected antiunit, and the current-factor power tests. The fully +factored levels \(k=2,\ldots,5\) are locally certified and give +\(m_p=4\) for every prime with +\[ + f(p)\in\{18,54,162,486\}. +\] +At \(k=6\), the field computations are exact but the \(78\)-digit +factor is only a local probable prime; FactorDB records it as proven. +The complete \(k=6\) conclusion is therefore source-assisted unless a +primality certificate is supplied. At \(k=7,8\), all currently known +prime factors pass, but the unfactored cofactors and their +multiplicities remain unknown; these checks are merely consistent with +\(D'_k\). + +The small anchor rows \(m_{19}=m_{163}=m_{1459}=4\) are reproduced +rather than assumed. An independent Artin--Schreier compositum model +also verifies \(\sigma(4)=5\), Proposition~\ref{prop:m4norm}, and the +direct power test on the smallest factor of each checked level. + +\subsection{Reproducibility boundary} -The $p=47$ line certifies $m_{47}=1$ using only lower verified rows; since -$f(47)=23$ and $\Qset(23)=\{23\}$, the carry is -$\alpha_{47}=\kappa_{23}+1=\omega^{(\omega^7)}+1$, the value now -implemented in \path{tower.rs}. The $p=179$ line is the first locally -certified dependency row beyond the quick probe path; it still uses only -the already-certified lower row $m_{89}=1$. - -\subsection{The $\alpha_{47}$ promotion} - -\emph{Superseded 2026-06-13:} this pass moved the boundary to -$\alpha_{53}$ by promoting a single locally verified row; the finite -excess table is now the full OEIS A380496 b-file ($126$ rows, odd primes -$3 \le p \le 709$), so the refusal boundary sits at $\alpha_{719}$ and the -boundary test is \path{boundary_returns_none_past_prime_709}. The original -pass is recorded below for provenance. - -The shipped state at the time: \path{src/scalar/big/ordinal/tower.rs} carries -$\alpha_{47}$ with the landmark test -\path{locally_verified_alpha_47_landmark} and moves the refusal -boundary to $\alpha_{53}$; the documented boundaries in -\path{nim.rs}, \path{mod.rs}, \path{src/games/nimber_game.rs}, -\texttt{README.md}, and \texttt{docs/OPEN.md} were updated in step. The full -gate ran clean: \texttt{cargo fmt --check}, \texttt{cargo test}, -\texttt{cargo check}/\texttt{clippy} with and without the -\texttt{python} feature (warnings denied), and the probe under -\texttt{py\_compile}. - -\subsection{Supporting probes} - -The $3^k$-family certification chain is -\path{experiments/cyclotomic_3k_family.py} (committed, maintained), -joined 2026-06-12 by \path{experiments/exception_column_m4.py} (the -$2\cdot3^k$ exception column, Section~\ref{sec:m4}; committed, -maintained, stdlib-only, $\sim$2 minutes), with the research-run probes -under \path{experiments/excess/} (machine-generated, rescued from -ephemeral storage; triage before citing). The analysis in -Sections~\ref{sec:norm}--\ref{sec:bounded} synthesizes the 2026-06-10 -parallel research run plus the 2026-06-12 exception-column pass; each -claim above carries its own tag, and no claim depends on an unverified -solver. +The three maintained entry points are +\path{experiments/ordinal_excess_probe.py}, +\path{experiments/cyclotomic_3k_family.py}, and +\path{experiments/exception_column_m4.py}. The additional programs +under \path{experiments/excess/} are archived research probes and must +be judged file by file under that directory's status table before being +used as evidence. The paper's theorem statements depend only on the +displayed proofs and cited standard results; the programs serve finite +certification, falsification, and audit. \section*{Acknowledgements} The \texttt{ogdoad} library, the experiments, and this draft were developed with LLM assistance; the analysis consolidates a structured -parallel research run (2026-06-10). Mathematical direction, framing, and -responsibility for claims remain the author's. +parallel research run (2026-06-10) and an independent adversarial proof +audit (2026-07-20). Mathematical direction, framing, and responsibility +for claims remain the author's. -\begin{thebibliography}{9} +\begin{thebibliography}{99} +\bibitem{Arul21} V.~Arul, +\emph{On the \(\ell\)-adic valuation of certain Jacobi sums}, +J.~Th\'eor. Nombres Bordeaux \textbf{33} (2021), 607--625; +\url{https://doi.org/10.5802/jtnb.1171}. +\bibitem{ASV10} O.~Ahmadi, I.~E.~Shparlinski, J.~F.~Voloch, +\emph{Multiplicative order of Gauss periods}, Int.~J.~Number Theory +\textbf{6} (2010), 877--882; arXiv:0707.4034. +\bibitem{Breuer21} F.~Breuer, \emph{Multiplicative orders of Gauss +periods and the arithmetic of real quadratic fields}, Finite Fields +Appl.\ \textbf{73} (2021), 101848. +\bibitem{Carlitz53} L.~Carlitz, \emph{Distribution of primitive roots in +a finite field}, Quart.~J.~Math. Oxford (2) \textbf{4} (1953), 4--10. +\bibitem{CHS25} L.~Cagliero, A.~Herman, and F.~Szechtman, +\emph{Artin--Schreier towers of finite fields}, Finite Fields Appl.\ +\textbf{106} (2025), 102606; arXiv:2405.10159. \bibitem{Conway76} J.~H.~Conway, \emph{On Numbers and Games}, Academic Press, 1976. \bibitem{DFRR19} L.~De~Feo, H.~Randriam, \'E.~Rousseau, \emph{Standard lattices of compatibly embedded finite fields}, Proc.\ ISSAC 2019; arXiv:1906.00870. \bibitem{DiMuro} J.~DiMuro, \emph{On $\mathrm{On}_p$}, arXiv:1108.0962. +\bibitem{GV95} S.~Gao, S.~A.~Vanstone, \emph{On orders of optimal basis +generators}, Math.\ Comp.\ \textbf{64} (1995), 1227--1233. +\bibitem{Iwasawa68} K.~Iwasawa, \emph{On explicit formulas for the norm +residue symbol}, J.~Math. Soc. Japan \textbf{20} (1968), 151--165. +\bibitem{Katz89} N.~M.~Katz, \emph{An estimate for character sums}, +J.~Amer. Math. Soc.\ \textbf{2} (1989), 197--200. \bibitem{KS98} E.~Kaltofen, V.~Shoup, \emph{Subquadratic-time factoring of polynomials over finite fields}, Math.\ Comp.\ \textbf{67} (1998), 1179--1197. @@ -842,6 +9868,15 @@ \section*{Acknowledgements} \url{https://pub.math.leidenuniv.nl/~lenstrahw/PUBLICATIONS/1977e/art.pdf}. \bibitem{Lenstra78} H.~W.~Lenstra, Jr., \emph{Nim multiplication}, S\'eminaire de Th\'eorie des Nombres de Bordeaux, 1977--1978. +\bibitem{MM05} R.~C.~Mullin, A.~Mahalanobis, \emph{Dickson bases and +finite fields}, CACR Technical Report 2005--03, University of Waterloo, +2005. +\bibitem{MRS20} T.~M\'esz\'aros, L.~R\'onyai, T.~Szab\'o, +\emph{Singer difference sets and the projective norm graph}, +arXiv:1908.05591 (2019). +\bibitem{Meinardus54} G.~Meinardus, +\emph{Asymptotische Aussagen \"uber Partitionen}, +Math.\ Z.\ \textbf{59} (1954), 388--398. \bibitem{OEIS} OEIS Foundation Inc., entry A380496, \emph{The On-Line Encyclopedia of Integer Sequences}, \url{https://oeis.org/A380496}. @@ -851,9 +9886,17 @@ \section*{Acknowledgements} \bibitem{Peeters} D.~Peeters, \emph{transfinite-nim-calculator} (software), \url{https://github.com/DjangoPeeters/transfinite-nim-calculator}. +\bibitem{Popovych18} R.~Popovych, \emph{Multiplicative orders of +elements in Conway's towers of finite fields}, Algebra Discrete Math. +\textbf{25} (2018), 137--146; arXiv:1509.01958. \bibitem{vzGS92} J.~von~zur~Gathen, V.~Shoup, \emph{Computing Frobenius maps and factoring polynomials}, Comput.\ Complexity \textbf{2} (1992), 187--224. +\bibitem{Wiedemann88} D.~Wiedemann, \emph{An iterated quadratic +extension of $GF(2)$}, Fibonacci Quart.\ \textbf{26} (1988), 290--295. +\bibitem{Washington97} L.~C.~Washington, \emph{Introduction to +Cyclotomic Fields}, 2nd ed., Graduate Texts in Mathematics 83, +Springer, 1997. \end{thebibliography} \end{document} diff --git a/writeups/goldarf.pdf b/writeups/goldarf.pdf index 109ccd1..fb26c87 100644 Binary files a/writeups/goldarf.pdf and b/writeups/goldarf.pdf differ diff --git a/writeups/goldarf.tex b/writeups/goldarf.tex index f7f1a8f..55c8ad6 100644 --- a/writeups/goldarf.tex +++ b/writeups/goldarf.tex @@ -1448,6 +1448,24 @@ \subsection{The linking reduction and the general-$m$ empty queue on the immediately preceding move; forced passes occur only once $U=\emptyset$, after which no flip is possible. Passes are irrelevant to the flip fight. +\item \emph{Block turns.} A maximal nonempty-queue block containing $b$ +coins has exactly $b$ opens and $b$ closes, hence $2b$ touches. The +initial mover therefore starts every block. Before the single possible +terminal pass, queue length is even on that player's turns and odd on the +other player's turns. +\item \emph{Live-degree accounting.} Let $Q$ be the queued set, +$U$ the untouched set, $L=Q\cup U$ the still-unclosed set, and +$P=e(Q,U)\bmod2$. Opening $x$ changes $P$ by $\deg_L(x)$; closing any +queued $f$ changes $P$ by $\deg_U(f)$, exactly the flip bit. Since $P$ +starts and ends at zero, +\[ + \#\text{flips}\equiv + \sum_{x\text{ opened}}\deg_{L_x}(x)\pmod2. +\] +Equivalently, for $S=(\text{flips so far})+P$, closes are free and an +open scores the live-degree parity of its vertex. The identity is +FIFO-blind---it holds if any queued coin may close---so a proof must put +FIFO back through the fact that the close target is the front. \end{enumerate} \paragraph{The linking theorem (target).} \emph{If the board contains an @@ -1456,9 +1474,12 @@ \subsection{The linking reduction and the general-$m$ Gold board is $Q(x)$: $m$-uniform exactness of \textsc{echo}-\textsc{fifo}+dummy. \paragraph{Verified (implemented and tested).} The statement holds for -\emph{every} isomorphism class on $k\leq 7$ real coins plus dummy, both -seats ($1{,}044$ classes at $k=7$) -- strictly stronger ground than the -Gold-arising boards of the $m=8$ sweep. Without the isolated coin the +\emph{every} isomorphism class on $k\leq 8$ real coins plus dummy, both +seats ($12{,}346$ classes at $k=8$, generated by nauty \texttt{geng}) -- +strictly stronger ground than the Gold-arising boards of the $m=8$ sweep. +The reduced solver now stores ko as the one bit it is rather than the +last coin's identity; exhaustive cross-checks against the original +$\sigma$-explicit solver pin that reduction. Without the isolated coin the failures (``Bad graphs'', census $1/4/34$ at $n=3/5/7$, none at even $n$) are always \emph{mover-controlled} -- the first player forces whichever parity they want, never the anti-parity -- and none contains an isolated @@ -1471,36 +1492,59 @@ \subsection{The linking reduction and the general-$m$ close $v$. Conversely, a single odd front at the responder's turn is always re-evenable (odd degree $\geq1$ supplies a never-ko-blocked neighbor open), and when $v$ does not dominate $R$ a non-neighbor open -preserves evenness: the domination-with-even-remainder pattern is the -unique \emph{local} obstruction. An isolated coin defeats it at every -root (nothing dominates a set containing it), matching the Bad census; +preserves evenness. An isolated coin defeats this empty-queue device at +every root (nothing dominates a set containing it), matching the Bad census; for $|R|$ odd, domination makes $\deg$ odd and the neighbor reply works, explaining the bonus rigidity of all even-$n$ boards. -\paragraph{A verified defender strategy.} A two-mode menu strategy +The device is not the unique local squeeze. On the path +$z-f-y-h$, take queue $(f,h)$ and $U=\{y,z\}$ on the defender's turn. +The front has even degree two; opening either untouched vertex makes it +odd, while closing it exposes $h$ with odd degree one. Thus every move +offers the attacker an odd close despite the nonempty queue. An untouched +isolated coin kills this squeeze too, but a queued or spent dummy does not. + +\paragraph{The finite strategy boundary.} A two-mode menu strategy tracking the flip debt $g$ -- \textsc{prevention} ($g=0$: re-even odd fronts; non-toggling opens, e.g.\ the dummy; safe closes; in the trap $U\subseteq N(\mathrm{front})$, poison or close) and \textsc{debt} ($g=1$: counter-close odd fronts -- the attacker's flip-close typically exposes -the repair; else toggle or advance) -- beats an optimal unrestricted +the repair; else toggle or advance) -- does beat an optimal unrestricted attacker on every class $k\leq7$, both seats, with no move outside the -menus. The verification is menu-\emph{existential}: the menus always -contain a winning move, but not every menu choice wins (a losing poison -choice on the star was exhibited in review). +menus, but it does \emph{not} extend as written. At $k=8$ graph6 class +\texttt{GCRU]w} (defender second) requires opening a neighbor proactively, +despite available non-neighbor opens, to turn the whole queue into an +even-length odd-degree corridor; every old-menu move loses. Adding that +corridor certificate is still incomplete: \texttt{GCZMmw} requires opening +a non-neighbor and deliberately leaving an odd front unrepaired. These are +the first exact witnesses that the prevention/debt induction needs +recursive, proactive debt rather than a parity-local trap trigger. The +broader no-self-flip envelope---all opens and exactly the even-front +closes in prevention mode---contains both winning moves; menu choice remains +existential, not universal. Paired with the old debt menu, that envelope is +strictly complete against an unrestricted attacker on all $12{,}346$ +$k=8$ classes, both seats. \paragraph{Open residue.} The general-$n$ proof. Parity-local invariants provably do not suffice: over $13$ natural parity features of the state, the safe/unsafe label is not a function of the features, and minimal distinguishing pairs differ precisely in whether the untouched structure retains a repair device -- a recursive, not parity-local, condition. The -working architecture (second-eyes review concurring): segment the queue -at \emph{firewall} coins ($\deg_U\equiv 0$; the opened dummy is a -permanent firewall, the untouched dummy a virtual one), and run a mutual -induction -- no-debt and one-debt regimes -- per segment, with attacker -constructions classified by certificate depth (leaves exactly the device -lemma's obstruction) rather than by graph shape. The hard obligation is -the poison transition: showing every reachable trap state offers a move -into a segment with repair potential. +old parity-local R3/D3 realization of the firewall induction is now +falsified by the two $k=8$ menu witnesses, not merely unfinished. The +replacement route combines block turns with +live-degree pairing. In the scoring form above, a second-seat defender can +mirror a close by the forced next close for free, and can mirror an open +$x$ by an untouched $y$ of the same live-degree parity. This is a complete +proof whenever the vertices admit a perfect matching into true/false twin +pairs: twins retain equal live-degree parity in every live set containing +them, opens and closes consume pairs together, and every two-move score is +zero. In the general graph the required partner may already be queued; +equivalently, the attacker uses paired front deletions to reshape the live +degree classes. The hard obligation is now exact: prove that the isolated +coin supplies or regenerates a same-parity partner (including the exceptional +dummy-open/all-others-odd case), or find a graph where that repair debt cannot +be discharged. \section{Status and next moves}\label{sec:status} @@ -1519,8 +1563,9 @@ \section{Status and next moves}\label{sec:status} not cover. The mechanism question was then reduced (Section~\ref{sec:linking}) to the linking theorem -- flips forced even on any board with an isolated coin -- now verified for every graph class -through $k=7$ with an explicit two-mode defender strategy; what remains -of it is the general-$n$ induction. The live questions are +through $k=8$ (all $12{,}346$ classes there), with the old two-mode menu's +first failures isolated and the no-self-flip envelope strictly complete; +what remains of it is the general-$n$ induction. The live questions are \emph{semantics} (recast the charge readout into normal/misère/loopy outcome classes, or prove the recasting impossible), the general-$n$ linking proof, and the even-$a$ diagonal lemma. @@ -1599,10 +1644,11 @@ \section{Validation}\label{sec:validation} is dependency-free (stdlib Python) and written to stay reproducible. \item \path{experiments/linking_game.py} is the linking-reduction harness of the second 2026-06-10 pass (stages \texttt{validate}, \texttt{screen}, -\texttt{strategy}; Section~\ref{sec:linking}): the abstract odd-close -parity game, the reduction identities on random plays, the all-classes -$k\leq7$ rigidity and Bad-graph screens, and the strict menu verification -of the two-mode defender strategy. Stdlib-only; cross-validated against +\texttt{strategy}, \texttt{graph6}; Section~\ref{sec:linking}): the abstract +odd-close parity game, the reduction identities on random legal plays, the +all-classes $k\leq8$ rigidity and Bad-graph screens, the two first menu +counterexamples, and strict verification of the no-self-flip/debt envelope. +Stdlib-only; cross-validated against \path{experiments/echo_solver.py} through its \texttt{SynthForm} bridge. \end{itemize} diff --git a/writeups/thermo_newton.pdf b/writeups/thermo_newton.pdf index 8a9ba38..b3144a8 100644 Binary files a/writeups/thermo_newton.pdf and b/writeups/thermo_newton.pdf differ diff --git a/writeups/thermo_newton.tex b/writeups/thermo_newton.tex index 5f6efda..bc48cfd 100644 --- a/writeups/thermo_newton.tex +++ b/writeups/thermo_newton.tex @@ -27,23 +27,21 @@ \newcommand{\PROVED}{\taglabel{PROVED}} \newcommand{\TESTED}{\taglabel{TESTED}} \newcommand{\STANDARD}{\taglabel{STANDARD MATH}} -\newcommand{\CONJECTURAL}{\taglabel{CONJECTURAL}} -\newcommand{\OPEN}{\taglabel{OPEN}} -\title{Draft: thermographs, Newton polygons, and the missing residue} +\title{Thermographs and Newton polygons are two tropical objects} \author{a9lim} -\date{June 2026} +\date{July 2026} \begin{document} \maketitle \begin{abstract} -This note pursues \texttt{docs/OPEN.md} problem +This note resolves \texttt{docs/OPEN.md} problem \texttt{under*(e\_g\string^e\_s)}: whether the two tropical consumers in \path{ogdoad}---game thermography and valuation/Newton polygons---are one -tropical object or merely a convention mirror. The result of the first pass was -a negative theorem at the thermograph level and a more precise positive target: -a temperature associated graded with residues. +tropical object or merely a convention mirror. They are two objects, connected +by a genuine valuation shadow and external filtered transports, but there is no +faithful Newton-style dyadic graded ring on the game side. The negative theorem is small but decisive: the thermograph is not a congruence for disjunctive sum. There is no binary operation, single- or multi-step, that @@ -56,10 +54,9 @@ exactly the expected tropical-valuation shape: $\temp(G+H)\leq \max(\temp G,\temp H)$, with equal-temperature pairs forming the game-side vanishing locus. What fails is the proposed angular component -$(\mean(G),\temp(G))$: it forgets the leading thermic residue. A single object, -if it exists, should be an associated graded object of the game group by -temperature, enriched at least by the all-small residue data (atomic weight plus -its kernel), not the ordinary thermograph alone. +$(\mean(G),\temp(G))$: it forgets the leading thermic residue. The honest +replacement begins with the associated graded object of the game group by +temperature, whose leading class retains precisely that missing residue. The second pass, after \path{src/games/heating.rs} shipped game-valued heating, Berlekamp overheating, and Norton multiplication, tests the multiplicative @@ -68,17 +65,49 @@ positive infinitesimal unit $\uparrow$ converts that hidden integer into a leading temperature-zero residue. The same obstruction appears for the degenerate overheating operator $\int_{\uparrow}^{0}$. Thus the full -Berlekamp/Norton operator does not descend to the naive associated graded. The -remaining live question is narrower: numeric units, mean-normalized units with -the cold coefficient retained, or a refined quotient carrying more residue data. +Berlekamp/Norton operator does not descend to the naive associated graded. + +The third pass settles the leading restricted case positively. If the Norton +unit is the positive dyadic number $u=m/2^k$, put +$\delta=2^{-k}$ (and $\delta=1$ for an integer) and $a=u-\delta$. +Then every nonnumeric thermographic game obeys +\[ + \mean(G.u)=u\mean(G),\qquad + \temp(G.u)=u\temp(G)+a. +\] +A cold dyadic number can become hot under Norton multiplication, but its exact +temperature is always strictly below $a$. Norton linearity therefore induces +an additive map +$\gr_{\tau}\to\gr_{u\tau+a}$ for every $\tau\geq0$; equivalently the matching +Berlekamp operator $\int_u^a$ descends. For integer $u=n$, the shifted thermal +height $h=\tau+1$ simply scales as $h\mapsto nh$. Thus the mirror is not purely +notational: the game filtration has a genuine family of numeric regrading +transports. + +The final pass proves that the remaining ring hope cannot be repaired by adding +residues. First, the temperature-zero residue contains the nonzero class +$s=[*]$ with $s+s=0$. Any full dyadic coefficient object has an invertible +element $\pi_2$ representing $2$---either ordinary $2$ or its homogeneous initial +form---and lift-compatible action sends $s$ to the initial class of $*+*=0$; +the inverse of $\pi_2$ hence forces $s=0$. This rules out an +arbitrary internal product, not merely the Norton candidate. Second, the numeric Norton degree +maps have the exact composition defect +\[ + \Delta(u,v)=v(1-\delta_u)-\delta_v+\delta_{uv}\geq0, +\] +which is often positive; for $u=1/2$ and $v=2$ it equals $1$. Hence those +external transports cannot be a dyadic scalar action either, and an enrichment +cannot repair the mismatch because it already occurs in exact temperature +degrees. The Newton-style one-object reading is impossible under the natural +coefficient, associativity, and faithfulness axioms. \end{abstract} \paragraph{Claim levels.} \PROVED{} -- proof from standard short-game identities plus the live implementation's definitions; \TESTED{} -- verified by the commands in Appendix~\ref{sec:checks}; \STANDARD{} -- standard thermography/Newton-polygon -math used by the repo; \CONJECTURAL{} -- plausible but not proved here; -\OPEN{} -- this pass did not solve it. +math used by the repo. The main dichotomy is resolved; the explicitly listed +escape hatches are boundaries of the theorem, not conjectural counterexamples. \section{The two tropical objects currently in the code} @@ -212,7 +241,7 @@ \section{What survives: temperature as a tropical valuation} game value. \end{remark} -\section{The one-object probe: switches versus one-side Newton polygons} +\section{Switches versus one-sided Newton polygons} \TESTED{} There is a clean but shallow dictionary for switches. For $m\in\Q$ and $\tau>0$, the switch @@ -246,16 +275,20 @@ \section{The one-object probe: switches versus one-side Newton polygons} extension would need extra residue data not present in the switch wall. \end{proof} -\section{The actual candidate bridge: an associated graded game object} +\section{The residual bridge: an associated graded game group} -\CONJECTURAL{} The positive object should be a temperature filtration of the -game group. Let +\PROVED{} The positive residual object begins with the temperature filtration of +the game group. Let $F_{<0}$ be the subgroup of short numeric games. For +$\tau\geq0$, set \[ - F_{\leq \tau}=\{G:\temp(G)\leq \tau\} + F_{\leq \tau}=F_{<0}\cup + \{G\text{ nonnumeric}:\temp(G)\leq \tau\}, + \qquad + F_{<\tau}=F_{<0}\cup + \bigcup_{0\leq\sigma<\tau}F_{\leq\sigma}, \] -for $\tau\geq0$, with the numeric games placed in the cold bottom layer. The -standard temperature inequality says these are additive subgroups. The -associated graded candidate is +with the union empty when $\tau=0$. The standard temperature inequality says these are additive subgroups. The +associated graded group is \[ \gr_T(\mathrm{Games}) = @@ -305,8 +338,8 @@ \section{The Norton/overheating descent test} \] \begin{proposition}[Unrestricted Norton descent fails]\label{prop:norton-fails} -\TESTED{} Norton multiplication by a positive nonnumeric unit does not descend -to the naive temperature associated graded. +\TESTED{} There exists a positive nonnumeric unit whose Norton multiplication +does not descend to the naive temperature associated graded. \end{proposition} \begin{proof} @@ -345,49 +378,354 @@ \section{The Norton/overheating descent test} nonnumeric positive game. \TESTED{} The bounded probe \path{experiments/under_descent.py} records this -explicit witness and also runs a small sanity scan for ordinary numeric units. -On a 21-game catalogue it checked 126 representative pairs for Norton -multiplication by units $1$ and $2$, and the same 126 pairs for -$\int_s^0$ with $s=1,2$. It found no numeric-unit failures. This is not a -theorem; it is a useful pointer that the obstruction is not ``Norton exists, so -everything fails'', but specifically that nonnumeric units can see cold -coefficients erased by the naive quotient. - -\section{Where the second pass hit the wall} - -\OPEN{} I do not currently have a product on $\gr_T(\mathrm{Games})$ that would -make it the literal peer of the graded ring of a valued field. The old candidate -``use Norton multiplication / overheating'' is now too broad: -Proposition~\ref{prop:norton-fails} rules out unrestricted nonnumeric units on -the naive quotient. Full short games still do not form a ring, and the repo -correctly refuses to pretend otherwise. - -\OPEN{} I also do not have a nontrivial thermograph hyperoperation. The scalar -temperature hyperoperation is clear and useful: -\[ - a\boxplus b = - \begin{cases} - \max(a,b), & a\neq b,\\ - \{\text{temperatures }\leq a\}, & a=b, - \end{cases} -\] -with the usual convention that colder numbers lie below $0$. But lifting this -from scalar temperatures to full thermographs without adding residues becomes -either false (Proposition~\ref{prop:no-congruence}) or tautological (return -``all thermographs of all sums of representatives''). - -\OPEN{} The next solvable formulation is therefore not ``find a binary -operation on thermographs'', and not ``use the full Berlekamp/Norton surface''. -It is: -\begin{quote} -Define a residue-enriched temperature quotient for a manageable class of games -and decide whether a restricted Norton/overheating product survives: numeric -units, mean-normalized units with cold coefficients retained separately, or an -all-small quotient refined by atomic weight plus its nimber-like kernel. -\end{quote} -If yes, the answer to the open problem is ``one tropical object, but only after -passing to a stricter residue-enriched associated graded''. If no, the answer is -``two tropical objects sharing only the scalar hyperfield shadow''. +explicit witness and also runs the positive numeric-unit audit used below. On a +35-game catalogue and six units it checks $210$ exact thermic predictions plus +$24$ representative pairs each for Norton multiplication and matching +overheating. It finds no numeric-unit failure. This points to the exact +boundary proved next: nonnumeric units can see cold coefficients erased by the +naive quotient, while every positive numeric unit descends individually. + +\section{Positive result: numeric Norton units descend} + +The bounded scan above left one conspicuous possibility alive. It is not an +accident of the small catalogue; numeric units admit an exact formula. + +\begin{definition} +Let $U=u>0$ be a short-game number, written in lowest dyadic form +$u=m/2^k$. Put +\[ + \delta_U=\begin{cases}2^{-k},&k>0,\\1,&k=0,\end{cases} + \qquad a_U=u-\delta_U. +\] +Thus the canonical options of a nonintegral $u$ are +$u-\delta_U$ and $u+\delta_U$, while a positive integer has the sole Left +option $u-1$. +\end{definition} + +\begin{proposition}[exact numeric Norton thermics]\label{prop:numeric-thermics} +\PROVED{} Let $U=u>0$ be dyadic and write $a=a_U$. +For every short game $G$ in the finite thermographic domain, +\[ + \mean(G.u)=u\mean(G). +\] +If $G$ is not a number, then +\[ + \temp(G.u)=u\temp(G)+a. \tag{1} +\] +If $G=x$ is a number and +$\epsilon_x=1/\operatorname{den}(x)$ is its canonical dyadic mesh, then +\[ + \temp(x.u)= + \begin{cases} + -1,&a-u\epsilon_x<0,\\ + a-u\epsilon_x,&a-u\epsilon_x\geq0. + \end{cases} \tag{2} +\] +In particular, the image of every cold number has temperature strictly less +than $a$. +\end{proposition} + +\begin{proof} +For the canonical numeric unit $u$, every Norton increment $U+I$ is the same +number $a$: a Left option contributes $U^L=u-\delta_U=a$, and a Right option +contributes $2U-U^R=u-\delta_U=a$. Hence the defining recursion is +\[ + n.u=nu\quad(n\in\mathbb Z),\qquad + G.u=\{G^L.u+a\mid G^R.u-a\}\quad(G\notin\mathbb Z). \tag{3} +\] + +We first need the numeric-option lemma hidden by the integer base case in (3). +If $x$ has exact denominator $2^j$, induction on $j$ gives mast $ux$. Integers +are literal leaves and have temperature $-1$. If $j>0$, the canonical options +are $x\pm2^{-j}$ and have smaller denominator. Once their images have frozen, +the parent walls meet at +$s_x=a-u2^{-j}$. When $a=0$ (precisely $u=1$ or $u=2^{-k}$), the simplicity +theorem instead makes every $x.u$ the number $ux$; when $a>0$, one has +$s_x\geq0$ for every $j>0$. Thus (2) follows, together with the strict bound +$\temp(x.u)0$, then +$D_{G.u}(a)=uD_G(0)>0$, so monotonicity rules out every earlier zero. Only the +infinitesimal case $\temp(G)=0$ needs care. We use the following elementary +stop lemma. + +\emph{No-premature-meeting lemma.} Let $a>0$, let $m$ be a number, and let $X$ +be canonical. If the transformed right wall of $X.u$ has maximal slope $+1$ +up to height $a$ and terminates at $um$, then Right wins $X-m$ moving first. +The mirror statement holds for a transformed left wall of slope $-1$. + +For completeness, prove the lemma by induction on the birthday of $X$. The +maximal slope forces an extremizing Right option $Y$. If $Y$ is numeric, the +numeric-option lemma and its strict freeze below $a$ force $Y=m$, giving the +winning move immediately. Otherwise every Left reply $Z$ of $Y$ has +$\operatorname{RS}(Z)\leq m$. Strict inequality is already a Right win; +equality forces the same maximal-slope condition and invokes the induction +hypothesis. Number avoidance ensures that these are all relevant replies in +$Y-m$. This proves the lemma; negation proves its mirror. + +Suppose now that both transformed walls met on a terminal interval below $a$. +Put $m=\operatorname{LS}(G)=\operatorname{RS}(G)$. Every stop-maximizing Left +option then satisfies the first half of the lemma, while lower-stop options are +immediate Right wins. Number avoidance therefore gives $G\leq m$; the mirror +argument gives $G\geq m$. Hence $G=m$, contrary to $G$ being nonnumeric. +There is no premature meeting. Equation (4) therefore gives exactly +$\temp(G.u)=a+u\temp(G)$ and common mast $u\mean(G)$. +\end{proof} + +\begin{corollary}[numeric Norton descent]\label{cor:numeric-descent} +\PROVED{} For every $\tau\geq0$, Norton multiplication by a fixed positive +dyadic unit $u$ induces an additive map +\[ + \overline A_{u,\tau}:\quad + F_{\leq\tau}/F_{<\tau} + \longrightarrow + F_{\leq u\tau+a_U}/F_{0$. If $v$ is nonintegral, both +numerators are odd, so $\delta_{uv}=\delta_u\delta_v$ and +\[ + \Delta=(1-\delta_u)(v-\delta_v). +\] +This is nonnegative and vanishes exactly when $v$ has numerator $1$, i.e. +$v=2^{-\ell}$. If $v=n$ is an integer, write $n=2^sq$ with $q$ odd. For +$s\geq k$, $\delta_{uv}=1$ and $\Delta=n(1-2^{-k})>0$. For $s1$ (separate $s=0$, or bound +$(n-2^s)/2^k\leq(n-2^s)/2$ when $s>0$). This proves both nonnegativity and the +classification. +\end{proof} + +\begin{corollary}[Norton is not a dyadic action]\label{cor:no-action} +\PROVED{} No temperature-preserving residue refinement can make all numeric +Norton transports into the scalar action of an associative algebra whose +dyadic coefficients multiply ordinarily. +\end{corollary} + +\begin{proof} +Take $u=1/2$, $v=2$, and $G=*$. Proposition~\ref{prop:composition-defect} +gives $\Delta=1$, and the games themselves give +\[ + \temp(A_2A_{1/2}(*))=1, + \qquad + \temp(A_1(*))=\temp(*)=0. +\] +Associativity would identify these two outputs. A residue refinement cannot +do so while preserving the temperature grading: the two leading classes occur +in different exact degrees. +\end{proof} + +The helper \texttt{numeric\_norton\_composition\_defect} implements (6) +without building either product. The bounded Python audit checks $2{,}304$ +positive-dyadic pairs for nonnegativity and the exact zero classification, then +pins five selected values against recursively materialized Norton products. + +\section{The coefficient-torsion obstruction} + +The preceding theorem closes the standard Norton route. A stronger argument +rules out replacing Norton multiplication by an arbitrary internal product. +We first state the naturality contract, because without one an unrelated binary +operation could always be invented. + +\begin{definition}[full-dyadic Newton-style coefficient action] +A full-dyadic Newton-style coefficient action on the temperature filtration is +a residue-enriched additive object $R$ and a unital graded coefficient ring +$C$ such that: +\begin{enumerate}[label=(\roman*),itemsep=0pt] +\item its addition is induced by disjunctive sum; +\item the thermic residues embed faithfully, in particular the nonzero class + $[*]\in F_{\leq0}/F_{<0}$ remains nonzero; +\item $C$ acts unital-associatively and distributively on $R$; +\item $C$ has mutually inverse homogeneous elements + $\pi_2,\pi_{1/2}$ representing $2$ and $1/2$; and +\item filtered-scalar compatibility holds: if $d_2=\deg(\pi_2)$, then + \[ + \pi_2[G]_\tau=[G+G]_{\tau+d_2}. + \] + Here a common abelian grading group $\Gamma$ receives fixed embeddings of the + thermic and $C$-gradings, $\tau+d_2$ is their sum in $\Gamma$, and the right + side denotes the initial class in that shifted component (hence is zero when + $G+G$ drops strictly below it). +\end{enumerate} +This is the explicit coefficient-compatibility contract tested here. It +includes an ordinary unital $\mathbb Z[1/2]$-algebra by taking +$\pi_2=2$, and it also includes the graded coefficient field of a valued dyadic +field by taking $\pi_2=\operatorname{in}(2)$ and +$\pi_{1/2}=\operatorname{in}(1/2)$. It does \emph{not} claim that the +initial-form map from a valued field to its associated graded is additive. +Requiring the scalar maps also to be the Norton maps is stronger, and was +already ruled out by Corollary~\ref{cor:no-action}. +\end{definition} + +\begin{proposition}[dyadic torsion no-go]\label{prop:torsion-no-go} +\PROVED{} No faithful full-dyadic Newton-style coefficient action exists. In +particular, no internal game algebra carrying such coefficients exists. +\end{proposition} + +\begin{proof} +In the live filtration convention, games of negative temperature are precisely +the cold numbers. The game $*$ is nonnumeric with temperature $0$, so +\[ + s=[*]\neq0\quad\text{in}\quad F_{\leq0}/F_{<0}. +\] +But $*+*=0$, hence filtered-scalar compatibility gives +$\pi_2s=[0]_{d_2}=0$ in the shifted target degree. +Since $\pi_2$ has inverse $\pi_{1/2}$, associativity gives +\[ + s=(\pi_{1/2}\pi_2)s=\pi_{1/2}(\pi_2s)=0, +\] +contradicting faithful retention of the residue. No commutativity assumption is +needed. The same argument kills every nonzero finite-nimber residue, since each +is self-inverse under disjunctive sum. +\end{proof} + +\begin{remark} +The raw $\gr_T$ does not itself contain the dyadic numbers: they lie in the cold +subgroup below degree zero. Proposition~\ref{prop:torsion-no-go} blocks both the +repair ``retain cold coefficients as a unital $\mathbb Z[1/2]$ subring'' and a +secondary valuation/Rees repair in which the \emph{full dyadic field} acts by +initial forms: in the latter, $\operatorname{in}(2)$ remains a homogeneous unit +with inverse $\operatorname{in}(1/2)$. One can evade the theorem by retaining +only a valuation-ring or integer action in which $2$ is not inverted, by +discarding the dyadics, by killing the nimber residue, or by abandoning a shared +unit, associativity, or distributivity. A characteristic-2 ring on a +nimber-only slice is therefore possible in principle. None of these is a +single full-dyadic Newton-style ring for the full thermographic filtration: each +drops one of the two coefficient/residue worlds that the proposed bridge was +meant to unify. +\end{remark} + +\section{Resolution: two objects, a substantive shadow} + +\PROVED{} The original dichotomy is now decided under the explicit naturality +contract above. The place axis has a valued ring and hence an associative +graded ring; Dumas additivity and Newton slopes use that multiplication. The +game axis has a temperature-filtered abelian group. Its degree-zero residue +has essential 2-torsion, so it admits no coefficient-compatible action by the +full dyadic field, even through graded initial forms; its standard product-like +numeric operators have the independent composition defect (6). Thermography +and Newton polygons are therefore \emph{two tropical objects}, not one tropical +ring with the full cold coefficient world. + +The connection is nevertheless mathematical rather than typographical: +\begin{itemize}[leftmargin=*,itemsep=0pt] +\item temperature obeys the non-Archimedean max inequality and its scalar + hyperaddition records the equal-degree cancellation locus; +\item the exact thermograph recursion uses dual max-plus/min-plus wall folds; +\item switches and binomial Newton sides share the bounded one-parameter + dictionary; and +\item every positive numeric Norton unit induces the exact external affine + regrading (5). +\end{itemize} +What fails is precisely the multiplicative unification that would turn those +shadows into one associated graded ring. Describing individual residue groups, +or studying characteristic-2 and nonassociative structures on restricted +slices, remains worthwhile follow-up mathematics; it is no longer needed to +answer the \texttt{under} problem posed here. \appendix \section{Checks run in this pass}\label{sec:checks} @@ -403,14 +741,24 @@ \section{Checks run in this pass}\label{sec:checks} \item A Python probe through the installed \texttt{.venv} binding checked 324 small-game sums for the temperature inequality and the off-diagonal equality pattern, and printed the witnesses in Proposition~\ref{prop:no-congruence}. -\item \texttt{cargo test heating}: 7 heating/Norton/overheating tests passed, +\item \texttt{cargo test heating}: 15 heating/Norton/overheating tests passed, including the explicit non-descent witness - \texttt{hot\_units\_do\_not\_descend\_mod\_cold\_numbers}. -\item \texttt{.venv/bin/python experiments/under\_descent.py}: recorded the - $*$ versus $*+1$ obstruction for unit $\uparrow$, and found no failures for - numeric units $1,2$ on the bounded 21-game / 126-pair sanity scan. + \texttt{hot\_units\_do\_not\_descend\_mod\_cold\_numbers}, the exact dyadic + regrade, the load-bearing numeric-image lemma, matching-overheating equality, + numeric quotient descent, a bounded day-three singleton-option census, a + Norton-linearity sentinel, and the exact composition-defect theorem. +\item \texttt{cargo check --features python}: the new Python thermic shortcuts + compile against the feature-gated bindings. +\item \texttt{python experiments/under\_descent.py}: recorded the $*$ versus + $*+1$ obstruction for unit $\uparrow$; checked $210$ exact thermic predictions + on a 35-game catalogue and six numeric units; and checked $24$ representative + pairs each for Norton multiplication and matching overheating, with zero + numeric-unit failures. It also checked $2{,}304$ positive-dyadic pairs for + nonnegative defect and the exact zero classification, with five game-level + composition witnesses. \end{itemize} +\footnotesize \begin{thebibliography}{9} \bibitem{BCG} Berlekamp, Conway, and Guy. @@ -425,6 +773,11 @@ \section{Checks run in this pass}\label{sec:checks} The economist's view of combinatorial games. In \emph{Games of No Chance}, 1996. +\bibitem{BerlekampBlockbusting} +Elwyn Berlekamp. +Blockbusting and Domineering. +\emph{Journal of Combinatorial Theory, Series A} 49 (1988), 67--116. + \bibitem{Viro} Oleg Viro. Hyperfields for tropical geometry I.