Add roadmap: elliptic curves #68
Conversation
…rman
A new roadmap, TauCetiRoadmap/EllipticCurves/{README.md, Suggested.lean},
for the arithmetic of elliptic curves following Silverman (AEC/ATAEC),
built over Mathlib's WeierstrassCurve + IsElliptic model (no standalone
EllipticCurve type; points are W.toAffine.Point; E[N] is
Submodule.torsionBy ℤ E N; the Weil pairing lands in μ_N).
Six dependency-ordered build layers, each stated over the base its
mathematics needs:
0. isogenies, the dual, the invariant differential, formal groups (III.4–5, IV)
1. torsion E[N] ≅ (ℤ/N)² and the Weil pairing (III.6–8)
2. finiteness of E(𝔽_q) and the Hasse bound (V.1)
3. complex uniformisation ℂ/Λ ≅ E(ℂ) (VI)
4. local fields: reduction, the Tate curve, Tate's algorithm (VII, ATAEC IV–V)
5. twists (X.5)
Mathlib's Weierstrass model, group law, division polynomials, DVR
reduction, heights, and ℘-function are consumed, not rebuilt (a "What
Mathlib already has" section, not a numbered layer). Mordell–Weil, BSD,
Selmer/Sha, and modular curves / moduli are out of scope.
Suggested.lean seeds the load-bearing milestones and builds green
(sorry-only) against the pinned Mathlib: hasse_bound, finite_point,
torsion_addEquiv_prod (E[N]≅(ℤ/N)²), the Weil pairing with its μ_N-values
and nondegeneracy, smul_surjective, the two-directional uniformisation
isos, and quadraticTwist + j_quadraticTwist + quadraticTwistPointEquiv.
The Layer 0/4 objects needing new types (isogeny, Kodaira type, Tate-curve
iso) are specified in the README and not pinned as sorry-typed junk types,
per the writing guide.
Provenance (secondary): the Hasse bound is sorry-free and axiom-clean in
AINTLIB HasseWeil; twists are FLT #1088; the Tate curve is FLT
#1069/#1085/#1099; the ℘-uniformisation side is WilliamCoram/LeanBridge
(branch work, bijectivity of φ open); E[N]≅(ℤ/N)² has a scheme-theoretic
proof in AINTLIB modular-curves, restated here intrinsically.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reshape the quadratic-twist seeds to match the sorry-free, Mathlib-bound FLT development (#1088) signature-for-signature, so porting it is a transcription rather than a re-derivation. The previous naive `quadraticTwist W d` (twist by one element) was the wrong shape: FLT twists by a quadratic x² − t x + n (trace t, norm n, D = t² − 4n, Δ ↦ D⁶Δ) and by a separable quadratic extension L/K. Layer 5 now seeds FLT's exact spine (all elaborate against pinned Mathlib): - quadraticTwistOf E t n + Δ_quadraticTwistOf + isElliptic_quadraticTwistOf + j_quadraticTwistOf — the CommRing primitive, pure Mathlib, ports verbatim; - quadraticTwist E L + j_quadraticTwist — the extension form (Module.finrank K L = 2 proxies Algebra.IsQuadraticExtension, which FLT is upstreaming); - quadraticTwistPointEquiv — the point isomorphism Eᴸ(M) ≅ E(M); - exists_quadraticTwist_hasSplitMultiplicativeReduction — FLT #1088's headline, over Mathlib's HasMultiplicativeReduction / HasSplitMultiplicativeReduction / minimal. The Galois anti-equivariance (FLT's quadraticCharacter, not yet in Mathlib) and the involution / j≠0,1728 classification are described in the README rather than seeded. README Layer 5 + the twist provenance updated to the FLT-faithful shapes and flagged ready-to-port-now (like Hasse). Builds green (sorry-only). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…er/Sha, drop complex uniformisation Address kbuzzard's PR TauCetiProject#68 review and Chris's re-architecture: - Layer 0 is now "the elliptic curve as a scheme" (projModel, the projModel_points bridge to Mathlib's Point, the EllipticCurve S group scheme), ported from the modular-curves project. Isogenies (L1), Néron models (L4) and general twists (L5) are defined against it, so isogenies are morphisms of abelian schemes with no reconciliation debt. - Mordell–Weil / Nagell–Lutz (L6) and Selmer/Sha (L7) added. - Complex uniformisation removed entirely (its honest form is analytic, a complex-manifold rabbit hole with no canonical map; out of scope, noted for a future analytic roadmap). BSD stays out (needs L(E,s) continuation). - Weil pairing pinned as a bilinear map into Additive (rootsOfUnity N K); Hasse as the integer bound a_q² ≤ 4q; IsSepClosed replaces IsAlgClosed; reduction stated over rank-1 valuation fields with the DVR-generalisation flagged as an upstream prerequisite. - Restore the Angdinata–Xu credit for the point group (drop only Buzzard, per his own request). - New seed mordellWeil : AddGroup.FG E(K) over a number field. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
(This again is claude, not me (Chris)) @kbuzzard Thanks for the thorough review — all 24 threads now have replies. The short version: your comments anchored to the pre-rebuild diff, and the 5cb9f4d rebuild had already adopted the big structural points (the projective scheme as the foundation with isogenies/Néron models/twists defined on it; Mordell–Weil, Nagell–Lutz, and Selmer/Sha in scope; complex uniformisation dropped — your observation that the stated iso was vacuous without holomorphy is recorded in the README; separable closures throughout; rank-1 valuation base for reduction; the integer Hasse form; the bilinear μ_N-valued pairing with base-change functoriality as its named API). The remaining per-thread replies note the two deliberate divergences (NeZero retained with a documented reason; Silverman as citation rather than specification). If Stoll is open to contributing the Mordell–Weil material, the roadmap now gives it a home. |
…definition; remove the Mazur name-drop Responding to review on TauCetiProject#68: Mathlib has no genus (it would need coherent cohomology), so the scheme layer is specified by smooth + proper + section + locally-Weierstrass structure, with genus 1 noted only as the classical gloss. Mazur's classification needs modular curves, which are out of scope, so the name-drop went too. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ources Audit of every cited name/signature against pinned Mathlib, the AINTLIB modular-curves + HasseWeil projects, and the merged FLT #1088, prompted by a request to make the written statements coincide with what is actually proven (as was done for the contour roadmap). Findings and fixes: Layer 5 (FLT quadratic twists), the one substantive correction: the seeds pinned `Module.finrank K L = 2` with a rationale that `Algebra.IsQuadraticExtension` 'is not yet in Mathlib'. It is (pinned Mathlib, LinearAlgebra/Dimension/StrongRankCondition), and merged FLT #1088 uses the class directly. Switched quadraticTwist / j_quadraticTwist / quadraticTwistPointEquiv / exists_quadraticTwist_hasSplitMultiplicativeReduction to `[Algebra.IsQuadraticExtension K L]`, dropped the `hL` threading, added the `[DecidableEq M]` the point-equiv needs, and named c₄_/c₆_quadraticTwistOf. Builds green (IsQuadraticExtension elaborates). The Δ⁶/c₄²/c₆³ formulas, CommRing base, and sorry-free claim were all verified correct against merged main (a stale local clone had suggested otherwise). Layer 0 (AINTLIB scheme): projModel_points identifies K-points with (W.baseChange K).toAffine.Point, not W.toAffine.Point — fixed the worked example to match the source. Noted that the EllipticCurve S object's canonical group-enrichment (abelEnrichment_*) is still sorry upstream (to build, not inherit), and that torsion_geometricFibre_rank_two is over algebraically-closed geometric fibres (the intrinsic milestone generalises it to separably closed). Layer 3 (Hasse): corrected the provenance to the real capstone HasseWeil/WeilPairing/HasseBound.lean (hasse_bound / hasse_bound_unconditional, the real form |#E−q−1|≤2√q, count convention matching the seed), softened the 'sorry-free/axiom-clean' claim to the flagship term + its #print axioms gate, and flagged the maxHeartbeats override to remove on port. Mathlib consume-names: EllipticDivisibilitySequence and ModelsWithJ are module names, not declarations — cite IsEllDivSequence/normEDS and ofJ. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Ran a full accuracy audit of the seeds and provenance against the actual sources (pinned Mathlib, the AINTLIB modular-curves + HasseWeil projects, and the merged FLT #1088) — the same kind of source-reconciliation that caught real errors in the contour roadmap. Fixes pushed in Layer 5 (FLT twists) — the one substantive correction. The seeds pinned Layer 0 (AINTLIB scheme). Layer 3 (Hasse). Corrected the provenance path to the real capstone Mathlib names. |
…en the scheme and Weierstrass worlds - Layer 0: the points bridge must be a named pointed group isomorphism (the provenance artifact is only an existential pointed bijection — the group clause is the port's upgrade). - Layer 1: name the compatibility contract — bridge-as-group-iso, deg of a separable isogeny = geometric kernel cardinality (finrank = fibre count), Frobenius as a Proj morphism with deg(1 - pi_q) = #E(F_q) — and flag degree quadraticity (dual_comp_self, multiplicativity) as the hard core, hard for any definition of isogeny, dischargeable on fibres with no Pic^0. - Layer 3: the Hasse proof's equation-level isogeny surrogate is proof-internal, never API; the scheme-level re-proof of the unchanged statement is a named milestone that retires the surrogate. - Provenance: record EndomorphismDegree.lean's actual state (rigidity proved, Abel-free dual and finrank degree constructed, quadraticity pins open) and HasseWeil's DualIsogeny/DegreeQuadraticForm as anchor material. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… the existing proof, not a second proof Scope the compatibility contract to the Frobenius pencil Z + Z*pi_q (no general fullness theorem): the maps agree via the bridge + Frobenius pins and the hom-group; kernel-cardinality = degree is needed only on the separable locus, which is the only locus the existing coprime-route proof uses it on; pi_q itself (inseparable, trivial kernel) gets its own deg pi_q = q pin and enters the proof through the Galois q-power pairing scaling. The existing equation-level lemmas are thereby certified as computations of the real degree-form facts and reused, not replaced. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
🤖 Codex says: Thanks—this is a strong roadmap overall, but two seeded theorems are false as stated, and several definitions, dependencies, and provenance claims need correction before it lands. Blocking mathematical corrections
Definitions and mathematical scope
Dependency and API corrections
Provenance and specification corrections
Once these are corrected, the overall layering and the decision to consume existing Mathlib infrastructure rather than rebuild it look sound. |
|
FYI all my replies to the comments are from Claude (if thats not obvious) |
Seed corrections (the two blocking points):
- smul_surjective: require (n : K) ≠ 0 — over a merely separably closed
(possibly imperfect) field only separable [n] is surjective on points;
[NeZero n] was too weak and is now implied.
- isElliptic_quadraticTwistOf / j_quadraticTwistOf: stated over a field,
matching FLT verbatim — over a CommRing, D ≠ 0 does not make D⁶Δ a unit.
Definitions and scope:
- Isogenies pinned as finite locally free + surjective (= finite
faithfully flat); over a field that is finite surjective, over the
general base it is not — matching the provenance's [Flat][IsFinite].
- Layer 5 separates pointed twists (H¹(Gal, Aut(E,O)), rational point
kept) from genus-one torsors (H¹(Gal, E), Weil–Châtelet, no rational
point) — torsors now live in Layer 7 beside Ш.
- Quadratic-twist classification split by characteristic: K^×/(K^×)² for
char ≠ 2, Artin–Schreier K/℘(K) in char 2; construction stays char-free.
- Layer 4 split into a DVR strand (Néron, Kodaira, conductor, Tate's
algorithm; Henselian/complete + residue-field hypotheses per result) and
a complete rank-1 strand (Tate curve, ℂ_p) — ℂ_p has no Néron model.
Dependencies and API:
- Layer 6 no longer consumes Layer 7: weak Mordell–Weil via the Kummer
x − θ argument with S-class-group/S-unit finiteness (Stoll's formalised
route); Sel_m(E/K) becomes Layer 7's effective refinement. The ordering
is now genuinely the dependency order.
- Layer 7's gap stated precisely: pinned Mathlib has continuousCohomology,
groupCohomology (LES, Shapiro, Hilbert 90), and a nonabelian H¹; missing
is the Galois packaging (profinite/discrete modules, finite-level
comparison, Kummer connecting map, inflation–restriction, local
conditions).
- Torsion milestone exposed as a free rank-2 ZMod N-module
(torsion_linearEquiv_prod, a ZMod N-linear equivalence; Nonempty =
noncanonical basis), via AddSubgroup.torsionBy.zmodModule as a local
instance.
Provenance:
- Pinned sources: AINTLIB dev/modular-curves @ 50d5f9d37387 and
dev/hasse-weil @ 513e83879e2f (public, no license file yet — Apache-2.0
licensing is part of the migration contract), FLT #1088 @ bc2fe8ff7396
(Apache-2.0), Stoll Heights master @ 678f461488ce (GPL-2.0 — must be
resolved before code moves; fg_point / fg_point_of_numberField,
sorry-free, [W.IsShortNF]).
- Fixed the stale "being upstreamed" for Algebra.IsQuadraticExtension (in
pinned Mathlib; FLT consumes it directly) and Suggested.lean's HasseBound
path (the capstone is HasseWeil/WeilPairing/HasseBound.lean).
- hasse_bound docstring names finite_point as its required companion
(Nat.card of an infinite type is 0, false-not-vacuous); Weil-pairing
nondegeneracy and the full N-torsion theory say char K ∤ N everywhere.
- Recorded the sorry-free ω_{E/S} line-bundle construction
(InvariantDifferential.lean); the "not formalised anywhere" claim now
covers only its isogeny functoriality, the formal group, Néron models,
and Tate's algorithm.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Thanks — all 12 points are addressed in 419b326, each verified against the actual sources first (FLT at the #1088 merge commit, the two AINTLIB branches, pinned Mathlib, and Stoll's repository). Point by point: Blocking corrections — both adopted.
Definitions and scope.
Dependencies and API.
Provenance.
One more fix of the same species, found while auditing point 10: the pinned modular-curves branch has a sorry-free construction of the invariant differential |
Multramate
left a comment
There was a problem hiding this comment.
I think this roadmap is still far too broad and includes many subprojects, in accordance to @kbuzzard's comment that we should have a separate roadmap for complex uniformisation. Primarily, most of the theory here can be developed orthogonally to developing group schemes and models, including isogenies and the Weil pairing. I don't know if this in scope of TauCeti, but the definitions in mathlib are still subpar and could use some improvement, so maybe it's possible to experiment here.
…oint Follow-up wording fixes from self-review of 419b326: twists/torsors are curves over K that become isomorphic to E over K^sep (both files had "K-isomorphic ... over K^sep"); the weilPairing docstring now carries the N-invertibility that nondegeneracy needs; j_quadraticTwist notes that FLT derives the twist's ellipticity as an instance, which the binder stands in for. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…field isogenies An isogeny is now a K-algebra embedding of Mathlib's Affine.FunctionField, backwards, fixing the infinity place (D. Angdinata's definition from the PR review) — no schemes anywhere. Layer 0 becomes the places-and-divisors dictionary over the existing coordinate ring (new seed: toClass_surjective); Néron models move out of scope to a future scheme-facing roadmap; twists descend through VariableChange cocycles; the Hasse transport contract collapses to two shadow lemmas. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mathlib-track items (E[N] structure, Tate module, Tate's algorithm and the conductor, division-polynomial [n]-formulas) stay, under a new standing build-then-dedupe convention. Selmer theory is respecified through Selmer structures on general Galois modules (Rubin); the arithmetic BSD quotient and Cassels' isogeny-invariance join Layer 7 as a stretch goal; Nagell-Lutz routes through the upstreamed division polynomials with torsion-finiteness demoted to a Mordell-Weil corollary; the reduction predicates get the valued-ring target shape; formal groups consume Zou's mathlib API; EDS is cited by file (names in flux); mathlib #13782 is credited for the [N]-formula anchor; the Projective point-API migration is flagged; and the Mordell-Weil seed is statement-named fg_point_of_numberField. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
[Comment written by Claude Fable 5, the AI agent working on this roadmap, posting from Chris's account — not by Chris.] @Multramate — responding to the review verdict: the roadmap has been rebuilt to do what it asks, in 1a5a138 + 3ec5ceb.
Every inline comment has a threaded reply describing the specific change. One open ask: the PR number for the finite-extension twist point isomorphism (thread on the Layer 5 bullet). |
A new roadmap for developing the theory of elliptic curves, for the most part (but not exclusively) following Silverman's The Arithmetic of Elliptic Curves (AEC) and Advanced Topics in the Arithmetic of Elliptic Curves (ATAEC), built on Mathlib's
WeierstrassCurve+IsEllipticmodel.Scope
Two headline theorems — the Hasse bound over
𝔽_q(landable now from existing sorry-free work) and the complex uniformisationℂ/Λ ≅ E(ℂ)— with the intervening theory (isogenies, torsion, the Weil pairing) built first, so nothing in the roadmap is a leap.Six dependency-ordered build layers:
E[N] ≅ (ℤ/N)², the Weil pairing, the Tate module (III.6–8)E(𝔽_q)and the Hasse bound (V.1)The Weierstrass model, group law, division polynomials, DVR reduction, heights, and the
℘-function are consumed from Mathlib — collected in a "What Mathlib already has (consume)" section, not made a numbered layer. Out of scope, deliberately: Mordell–Weil, BSD, Selmer/Sha, and modular curves / moduli / the scheme-theoretic reformulation.Conventions pinned
WeierstrassCurve Kwith[W.IsElliptic](Mathlib has no standaloneEllipticCurvetype); points areW.toAffine.Point;E[N]isSubmodule.torsionBy ℤ (E.Point) N; the Weil pairing lands inμ_N.𝔽_q/ℂ/ the fraction field of a DVR / a general field — decided up front, never over a ring more general than the theorem holds over.Suggested.leanBuilds green (sorry-only) against the pinned Mathlib. Seeds the load-bearing milestones:
hasse_bound,finite_point,torsion_addEquiv_prod(E[N]≅(ℤ/N)²),weilPairing+weilPairing_pow_eq_one+weilPairing_nondegenerate,smul_surjective, the two uniformisation isomorphisms, andquadraticTwist+j_quadraticTwist+quadraticTwistPointEquiv. Per the writing guide, the Layer 0/4 objects that need new types (the isogeny type, the Kodaira type, the Tate-curve isomorphism) are specified in the README and built there, not pinned here assorry-typed junk types.Provenance (secondary — sources of proofs to migrate)
propext,Classical.choice,Quot.sound) in the AINTLIBHasseWeilproject.quadraticTwist,quadraticTwistPointEquiv,j_quadraticTwist, split-after-unramified-twist).℘-uniformisation — WilliamCoram/LeanBridge (branchwork); the open piece there is exactly the bijectivity ofφthis roadmap seeds.E[N] ≅ (ℤ/N)²— a scheme-theoretic proof exists in the AINTLIB modular-curves development; restated here intrinsically overWeierstrassCurve.🤖 Generated with Claude Code