Repository navigation
Challenges: Odlyzko root-discriminant bound and Mazur's torsion bound - #289
Conversation
Greptile SummaryThis PR adds the first two entries to the Lean Pool challenge board: an Odlyzko root-discriminant bound for totally complex number fields and Mazur's torsion bound for elliptic curves over ℚ, both stated verbatim as the FLT project assumes them.
Confidence Score: 5/5Safe to merge; adds two well-formed open challenge statements with no closed proof code beyond the sorry stubs. Both Lean statements typecheck structurally, the module docstrings are consistent with the YAML entries (the quality gate will verify this), imports are Mathlib-only, and the intentional Set.ncard weakening in the Mazur statement is explicitly documented. No regressions to existing pool code are possible since challenge files are isolated by design. Files Needing Attention: No files require special attention.
|
| Filename | Overview |
|---|---|
| Challenge/Odlyzko.lean | New challenge file for the Odlyzko root-discriminant bound; statement faithfully encodes the informal description, imports are Mathlib-only, module docstring matches what the card generator would produce from challenges.yml. |
| Challenge/Mazur.lean | New challenge file for Mazur's torsion bound; Set.ncard semantics (returns 0 on infinite sets) are intentionally and explicitly documented in both the docstring and the informal YAML entry, matching the FLT project's stated assumption. |
| Challenge/challenges.yml | Two new registry entries; all required fields present and consistent with the Lean files. |
| Challenge.lean | Top-level index updated with import statements for both new challenge modules; consistent with running lake exe mk_all on the Challenge library. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
CL["Challenge.lean\n(top-level index)"]
CM["Challenge/Mazur.lean\ntorsion_ncard_le := sorry"]
CO["Challenge/Odlyzko.lean\nabs_discr_ge := sorry"]
CY["Challenge/challenges.yml\nregistry"]
CL -->|"import Challenge.Mazur"| CM
CL -->|"import Challenge.Odlyzko"| CO
CM -->|"registered in"| CY
CO -->|"registered in"| CY
M1["Mathlib.AlgebraicGeometry\n.EllipticCurve.Affine.Point"]
M2["Mathlib.GroupTheory.Torsion"]
M3["Mathlib.NumberTheory.NumberField\n.Discriminant.Defs"]
M4["Mathlib.NumberTheory.NumberField\n.InfinitePlace.TotallyRealComplex"]
CM -->|"import"| M1
CM -->|"import"| M2
CO -->|"import"| M3
CO -->|"import"| M4
CY -->|"card sync gate\n(quality.py)"| CM
CY -->|"card sync gate\n(quality.py)"| CO
Reviews (4): Last reviewed commit: "Challenges: Odlyzko root-discriminant bo..." | Re-trigger Greptile
d1137f8 to
bfdb024
Compare
Two open statements the Fermat's Last Theorem project assumes and does not plan to prove itself, stated verbatim as FLT needs them (its `FLT/Assumptions/` axioms, Apache-2.0, headers retained): - `Challenge.Odlyzko.abs_discr_ge` — a totally complex number field of degree at least 18 has absolute discriminant at least 8.25 to the degree. Minkowski's elementary bound is too weak; this follows from Poitou's simplification of Odlyzko's analysis of the zeros of the Dedekind zeta function (table p17 of "Sur les petits discriminants"). FLT issue #458, which also links Thomas Browning's notes on an approach; Buzzard calls it one of the easiest of the results FLT assumes. - `Challenge.Mazur.torsion_ncard_le` — the torsion subgroup of the rational points of an elliptic curve over ℚ has at most 16 elements, the numerical consequence of Mazur's 1977 classification. Every known proof of FLT uses it. `Set.ncard` is 0 on an infinite set, so the statement reads "at most 16, or infinite" — the form FLT assumes, since finiteness is classical and far easier; the card says so. Both are `sorry` in the `Challenge` library, registered in `Challenge/challenges.yml` with the informal statement each is judged against, and carry a rough estimate of what a solution would cost. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bfdb024 to
47416c2
Compare
🤖 LLM review — challenge (
|
| Aspect | Value |
|---|---|
| Significance | ✅ high |
| Faithful to the prose | ✅ faithful |
| Matches cited source | ✅ matches |
| Vacuity risk | ✅ none |
| Difficulty | research |
| Estimated solution size | ~55,000 lines — This aggregates roughly 50000 lines for Mazur’s theorem, whose modular-curve, Jacobian, and Eisenstein-ideal infrastructure is absent from Mathlib, and roughly 5000 for the explicit-formula and numerical analysis behind the Odlyzko bound. |
Statement check: The Odlyzko declaration states the exact degree, signature, and discriminant inequality from the prose, while the Mazur declaration states that finite rational torsion has cardinality at most 16 and deliberately assigns cardinality zero in the infinite case.
Both challenges are significant, faithful numerical consequences of the cited results and have no evident vacuity, trivial proof, or gameable formulation.
Tokens: 5,073 in / 6,546 out · Tier: flex · Effort: xhigh · Cost: $0.1109
Automated review against .github/CHALLENGE_REVIEW_RULES.md. Disagree? Reply on the PR; rules can be updated in a PR of their own.
…ol/pull/289)) came back with the mathematics unreadable: (#291) > elliptic curves over `^R09` … `|(discr K : ^])| ^U 8.25 ^ finrank ^R0a K` where it should read `over ℚ` and `|(discr K : ℝ)| ≥ 8.25 ^ finrank ℚ K`. The mangling is the model's own: nothing between `json.loads` and the posted comment touches those strings, the bytes in the stored comment are literal ASCII, and Greptile's comment through the same fetch path renders `ℚ` fine. It is also not a systematic escape — `ℚ` came out as `^R0a` in three places and `^R09` in another — so it cannot be decoded after the fact, only prevented. So: one notation rule, appended to every system prompt, asking for the characters as they appear in the diff and offering a graceful fallback (describe the symbol in words) rather than an approximation. A review of Lean that cannot render `ℚ` or `≥` is worth much less in this repository. Tested by asserting the rule reaches the model for every mode in `REVIEW_MODES`, so a new review kind cannot quietly skip it. Verified for real by re-running `/review` on #289 after this merges. 🤖 Generated with [Claude Code](https://claude.com/claude-code) BODY LLM review: ask for literal Unicode so the mathematics is readable The first challenge review (#289) came back with the mathematics unreadable: `over ^R09` for `over ℚ`, and `|(discr K : ^])| ^U 8.25 ^ finrank ^R0a K` for `|(discr K : ℝ)| ≥ 8.25 ^ finrank ℚ K`. The mangling is the model's own — nothing between `json.loads` and the posted comment touches those strings, the stored bytes are literal ASCII, and another bot's comment through the same fetch path renders `ℚ` fine. It is not a systematic escape either (`ℚ` came out as both `^R0a` and `^R09`), so it cannot be decoded after the fact, only prevented. Append one notation rule to every system prompt: copy the characters as they appear in the diff, and if a symbol cannot be reproduced, describe it in words rather than approximate it. A test asserts the rule reaches the model for every mode in REVIEW_MODES. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
|
/review Re-running the challenge review to confirm the notation fix in #291: the first pass rendered |
|
/review — re-run to live-test the gpt-5.6-sol @ xhigh upgrade (752d7bf); comparing cost against the gpt-5.5 baseline on the same head. |
The first two entries on the challenge board, and the first real exercise of the machinery in #288 (stacked on it; retarget to
mainonce that merges).Both are results the FLT project assumes and does not plan to prove itself —
FLT/Assumptions/states each as anaxiomwith a literature reference. They are stated here verbatim as FLT needs them, Apache-2.0 with the upstream headers retained.Challenge.Odlyzko.abs_discr_geA totally complex number field of degree ≥ 18 has
|discr K| ≥ 8.25 ^ finrank ℚ K— root discriminant at least 8.25. Minkowski's elementary bound is too weak; this comes from Poitou's simplification of Odlyzko's analysis of the zeros of the Dedekind zeta function (equation 26 and the table on p17 of "Sur les petits discriminants").FLT tracking issue #458 links Thomas Browning's notes on an approach. Buzzard calls it one of the easiest of the results FLT assumes.
Challenge.Mazur.torsion_ncard_leThe torsion subgroup of
E(ℚ)has at most 16 elements — the numerical consequence of Mazur's 1977 classification (cyclic of order ≤ 10 or 12, andℤ/2ℤ × ℤ/nℤforn = 2, 4, 6, 8). Every known proof of FLT uses it. FLT tracking issue #477.Note
Set.ncardreturns 0 on an infinite set, so the statement reads "at most 16, or infinite". That is the form FLT assumes — finiteness of the torsion subgroup is classical and far easier — and both the card and the registry's informal statement say so.What this exercises in #288
The statement gates (Mathlib-only imports,
sorryrestricted to the registered declarations,#print axiomsconfirming each registered statement is open and nothing else in the file rests onsorryAx), the generated cards,mk_allon theChallengelibrary, and the challenge review path.challenge-verify.ymlhas nothing to verify yet — both are open.🤖 Generated with Claude Code