Skip to content

Add roadmap: elliptic curves #68

Open
CBirkbeck wants to merge 11 commits into
TauCetiProject:mainfrom
CBirkbeck:roadmap/elliptic-curves
Open

Add roadmap: elliptic curves #68
CBirkbeck wants to merge 11 commits into
TauCetiProject:mainfrom
CBirkbeck:roadmap/elliptic-curves

Conversation

@CBirkbeck

@CBirkbeck CBirkbeck commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

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 + IsElliptic model.

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:

  1. isogenies, the dual isogeny, the invariant differential, formal groups (AEC III.4–5, IV)
  2. torsion E[N] ≅ (ℤ/N)², the Weil pairing, the Tate module (III.6–8)
  3. finiteness of E(𝔽_q) and the Hasse bound (V.1)
  4. complex uniformisation (VI)
  5. local fields: reduction, the Tate curve, Tate's algorithm / Kodaira types / conductor exponent (VII, ATAEC IV–V)
  6. twists (X.5)

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

  • The object is WeierstrassCurve K with [W.IsElliptic] (Mathlib has no standalone EllipticCurve type); points are W.toAffine.Point; E[N] is Submodule.torsionBy ℤ (E.Point) N; the Weil pairing lands in μ_N.
  • Each layer is stated over the base its mathematics needs — a perfect field / 𝔽_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.lean

Builds 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, and quadraticTwist + 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 as sorry-typed junk types.

Provenance (secondary — sources of proofs to migrate)

  • Hasse bound — sorry-free and axiom-clean (propext, Classical.choice, Quot.sound) in the AINTLIB HasseWeil project.
  • Quadratic twists — FLT #1088 (quadraticTwist, quadraticTwistPointEquiv, j_quadraticTwist, split-after-unramified-twist).
  • Tate curve — FLT #1069 / #1085 / #1099.
  • -uniformisation — WilliamCoram/LeanBridge (branch work); 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 over WeierstrassCurve.

🤖 Generated with Claude Code

…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>
@CBirkbeck
CBirkbeck requested a review from a team as a code owner July 10, 2026 10:33
@tauceti-review-bot
tauceti-review-bot Bot enabled auto-merge (squash) July 10, 2026 10:33
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>
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
Comment thread TauCetiRoadmap/EllipticCurves/Suggested.lean Outdated
…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>
@CBirkbeck

CBirkbeck commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator Author

(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.

@CBirkbeck CBirkbeck changed the title Add roadmap: elliptic curves following Silverman Add roadmap: elliptic curves following Jul 17, 2026
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
…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>
@CBirkbeck CBirkbeck changed the title Add roadmap: elliptic curves following Add roadmap: elliptic curves Jul 17, 2026
…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>
@CBirkbeck

Copy link
Copy Markdown
Collaborator Author

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 87ada3b:

Layer 5 (FLT twists) — the one substantive correction. The seeds pinned Module.finrank K L = 2 with a note that Algebra.IsQuadraticExtension isn't upstream yet. It is upstream (pinned Mathlib, LinearAlgebra/Dimension/StrongRankCondition), and the merged FLT #1088 uses the class directly — so I switched quadraticTwist/j_quadraticTwist/quadraticTwistPointEquiv/exists_quadraticTwist_hasSplitMultiplicativeReduction to [Algebra.IsQuadraticExtension K L], dropped the hL threading, and added the [DecidableEq M] the point-equiv needs. Builds green. (The Δ⁶/c₄²/c₆³ formulas, the CommRing base, and the sorry-free claim all checked out against merged main — a stale local FLT clone had briefly 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. Noted 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 torsion_addEquiv_prod milestone correctly generalises it to separably closed).

Layer 3 (Hasse). Corrected the provenance path to the real capstone HasseWeil/WeilPairing/HasseBound.lean (hasse_bound/hasse_bound_unconditional, the real form |#E−q−1|≤2√q; the count convention Fintype.card W.toAffine.Point matches the seed). Softened 'sorry-free/axiom-clean' to the flagship term + its #print axioms gate, and flagged the maxHeartbeats override to remove on port.

Mathlib names. EllipticDivisibilitySequence and ModelsWithJ are module names, not declarations — now cite IsEllDivSequence/normEDS and ofJ. Everything else in the consume-list (reduction predicates E.HasMultiplicativeReduction R/.minimal R, Submodule.torsionBy, the 9 typeclasses) verified exact.

CBirkbeck and others added 2 commits July 18, 2026 10:56
…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>
@kim-em

kim-em commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🤖 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

  1. smul_surjective is too general. Over [IsSepClosed K], multiplication by n is surjective only when it is separable, so the theorem needs (hn : (n : K) ≠ 0). [NeZero n] does not exclude char K ∣ n. For arbitrary nonzero n, use [IsAlgClosed K] instead. The existing torsion theorem already has the needed characteristic hypothesis, so the narrower separably closed statement should suffice.

  2. isElliptic_quadraticTwistOf is false over an arbitrary CommRing with only D ≠ 0. Since
    Δ(E_{t,n}) = D⁶ Δ(E),
    ellipticity requires D to be a unit. Please either assume IsUnit (t² − 4n) or state the theorem over a field, where nonzero implies invertible. The discriminant, c₄, and c₆ identities can remain over CommRing.

Definitions and mathematical scope

  1. Pin the general-base definition of isogeny correctly. Over the general base scheme introduced in Layer 0, “finite surjective” does not imply flatness and is insufficient for the kernel, degree, and dual-isogeny theory used later. Define an isogeny as a finite locally free and surjective group-scheme homomorphism—equivalently finite faithfully flat—and note that over a field this reduces to finite surjective.

  2. Separate pointed twists from genus-one torsors. H¹(Gal(Kˢᵉᵖ/K), Aut(E,O)) classifies twists of the pointed elliptic curve; these retain a rational identity point. Genus-one curves without a rational point are torsors classified by H¹(Gal(Kˢᵉᵖ/K), E), belonging with Weil–Châtelet and Sha in Layer 7. The current prose conflates these two theories and consequently overstates why the scheme layer is needed for Layer 5.

  3. Qualify the square-class description by characteristic. The description by Kˣ/(Kˣ)² is the characteristic-not-two Kummer picture. In characteristic two, separable quadratic extensions are Artin–Schreier and are described by K/(x²−x). Likewise, the generic Aut E = {±1} discussion needs suitable characteristic and j hypotheses. Please distinguish these cases while retaining the characteristic-free Algebra.IsQuadraticExtension formulation for the concrete construction.

  4. Split the local-field hypotheses. Néron models, Kodaira types, component groups, conductors, and Tate’s algorithm belong over a DVR—normally complete or Henselian, with any required residue-field hypotheses stated explicitly. The Tate curve and p-adic analytic material can instead use complete rank-one valued fields, including ℂ_p where appropriate. A single rank-one valuation hypothesis does not support both strands: ℂ_p is nondiscretely valued and does not have a classical Néron model.

Dependency and API corrections

  1. Repair the Layer 6→7 backward dependency. The roadmap says its ordering is the dependency order, but Layer 6 consumes Selmer finiteness supplied by Layer 7. This is not a logical cycle, but it is a backward edge that unnecessarily makes Mordell–Weil depend on the continuous-cohomology stack. A cleaner order is to prove weak Mordell–Weil directly using the Kummer argument plus finiteness of the relevant class-group and unit data, then introduce Selmer groups in Layer 7 as the effective refinement.

  2. Describe the continuous-cohomology gap precisely. Pinned Mathlib already contains continuousCohomology, ordinary groupCohomology, and nonabelian . The missing work is the Galois-specific packaging: profinite Galois modules, the Kummer/descent connecting map and exact sequence, restriction and inflation–restriction, localization at places and local conditions, and the required finite-level comparison results. Please cite the existing APIs and list these concrete missing pieces instead of saying continuous Galois cohomology is merely “still settling.”

  3. Clarify the torsion-module target. The existing AddEquiv is mathematically adequate—an additive equivalence between these N-torsion groups is automatically ZMod N-linear—so this is not a correctness defect. However, later Tate-module and Galois-representation layers consume the statement that E[N] is a free ZMod N-module of rank two. Please expose that structure directly, either as freeness plus rank two or as a ZMod N-linear equivalence, and explain that the equivalence is wrapped in Nonempty because a basis is noncanonical.

Provenance and specification corrections

  1. Make the external dependencies reproducible. The Michael Stoll development needs a public source, pinned revision, license, and coordination status before it can serve as the model to migrate. Please provide the same revision and licensing information for the AINTLIB and FLT material that the roadmap proposes bringing into Tau Ceti.

  2. Correct the pinned-Mathlib and Hasse provenance. Algebra.IsQuadraticExtension is already present in pinned Mathlib, so “being upstreamed” is stale. The README names HasseWeil/WeilPairing/HasseBound.lean, while Suggested.lean names HasseWeil/HasseBound.lean; reconcile those paths and pin the external revision supporting the claims about axioms, sorry, and heartbeat requirements.

  3. Expose the Hasse theorem’s finiteness dependency. Since the seed uses Nat.card, hasse_bound should either take [Finite W.toAffine.Point] explicitly or be presented together with finite_point as a required dependency. Please also state that the nondegenerate Weil-pairing and full N-torsion theory require char K ∤ N.

Once these are corrected, the overall layering and the decision to consume existing Mathlib infrastructure rather than rebuild it look sound.

@CBirkbeck

Copy link
Copy Markdown
Collaborator Author

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>
@CBirkbeck

Copy link
Copy Markdown
Collaborator Author

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.

  1. smul_surjective now takes (hn : (n : K) ≠ 0) and stays separably closed, as you suggest ( [NeZero n] dropped — it is implied by hn). The docstring records the counterexample shape (inseparable [n] over an imperfect separably closed field like 𝔽_p(t)ˢᵉᵖ) and notes the IsAlgClosed variant we deliberately don't seed.

  2. isElliptic_quadraticTwistOf is restated over a field with hD : t² − 4n ≠ 0 — which turns out to be FLT's exact statement (its proof goes through isUnit_iff_ne_zero), so this also restores statement fidelity to the source; the seed had over-generalised to CommRing. The Δ/c₄/c₆ identities stay ring-level, as in FLT. j_quadraticTwistOf likewise now matches FLT's shape (field, twist-ellipticity as an explicit hypothesis).

Definitions and scope.

  1. Isogenies are pinned as finite locally free + surjective (= finite faithfully flat) group-scheme homomorphisms, with the field-case reduction to finite surjective noted (conventions, Layer 1, and the Suggested.lean section header). This also matches the provenance: AINTLIB's EndomorphismDegree.lean works with [Flat]+[IsFinite] hypotheses and proves surjectivity, and endDeg is Scheme.Hom.finrank — which only means anything locally free.

  2. Pointed twists vs. torsors are now separated exactly as you describe: Layer 5 is H¹(Gal, Aut(E, O)) — every twist keeps its rational point and Weierstrass model — and the genus-one torsors (H¹(Gal, E(Kˢᵉᵖ)), Weil–Châtelet) moved to Layer 7 next to Ш, which is also where the scheme-is-indispensable claim now honestly points.

  3. Characteristic split added: K^×/(K^×)² labelled as the char ≠ 2 Kummer picture, char 2 classified by Artin–Schreier K/℘(K); the Aut(E,O) ≅ {±1} line notes j = 0 = 1728 coincide in characteristics 2 and 3; the concrete Algebra.IsQuadraticExtension construction stays characteristic-free.

  4. Layer 4 split into two strands: Néron models / Kodaira types / component groups / conductors / Tate's algorithm over a DVR (complete or Henselian per statement, residue-field hypotheses explicit — Ogg's formula flagged as Saito's theorem in residue characteristic 2, 3), and the Tate curve over a complete rank-1 valued field including ℂ_p, with the "ℂ_p has no Néron model" point stated. The consume-section note about generalising Mathlib's reduction predicates now targets the Tate-curve strand specifically. BLR and Saito added to the references.

Dependencies and API.

  1. The Layer 6→7 backward edge is gone. Weak Mordell–Weil is now proved within Layer 6 by the Kummer x − θ argument into A(S, 2), finite by S-class-group finiteness + S-unit finite generation (with a pointer to Mathlib's DedekindDomain.SelmerGroup K(S,n) and its finiteness TODO); Sel_m(E/K) is Layer 7's effective refinement. Having found Stoll's repository (point 10), I checked: this is exactly his formalised route (Heights/WeakMordellWeil.lean, finite_index_range_nsmulAddMonoidHom_two). The Ordering section now truthfully says the ordering is the dependency order.

  2. The cohomology gap is now stated precisely, citing what pinned Mathlib has (Algebra/Category/ContinuousCohomology/, the RepresentationTheory/Homological/GroupCohomology/ suite with low-degree API, LES, Shapiro, Hilbert 90, and CategoryTheory/Sites/NonabelianCohomology/H1.lean) and listing the four missing Galois-specific pieces: profinite groups on discrete modules with the finite-level comparison, the Kummer connecting map/exact sequence for [m], inflation–restriction in that setting, and localisation at places for the local conditions.

  3. Torsion milestone restated as the module fact: torsion_linearEquiv_prod is now a ZMod N-linear equivalence with (ZMod N)² (free of rank 2), using Mathlib's AddSubgroup.torsionBy.zmodModule as a local instance (it is a plain def upstream — reducibly the same subgroup as the Submodule.torsionBy convention); the docstring explains the Nonempty wrapper (noncanonical basis) and the automatic-linearity remark. Elaborates against pinned Mathlib; build green.

Provenance.

  1. Pinned sources block added: AINTLIB dev/modular-curves @ 50d5f9d3 and dev/hasse-weil @ 513e8387 (public; no license file — it's my repository, and Apache-2.0 licensing of the migrated material is stated as part of the migration contract); FLT #1088 merged as bc2fe8ff (Apache-2.0); and Stoll's development located at MichaelStollBayreuth/Heights @ 678f4614fg_point / fg_point_of_numberField, sorry-free, under [W.IsShortNF] (porting note added for the reduction to short normal form). ⚠ That repo is GPL-2.0, which is incompatible with Apache-2.0, so the roadmap explicitly treats it as a model-to-follow rather than code-to-copy until relicensing/contribution is agreed (Kevin has offered to coordinate, above in this thread).

  2. Both staleness bugs fixed: Algebra.IsQuadraticExtension is stated as being in pinned Mathlib (LinearAlgebra/Dimension/StrongRankCondition.lean) with FLT consuming it directly — no porting adjustment at all; and the HasseBound paths are reconciled — the capstone is HasseWeil/WeilPairing/HasseBound.lean (README was right, Suggested.lean pointed at the sibling HasseWeil/HasseBound.lean, which is the conditional skeleton — now disambiguated in both). The axiom claim (propext, Classical.choice, Quot.sound) is tied to the pinned revision and marked as a documented in-repo check to become a CI gate on porting.

  3. hasse_bound's finiteness dependency is explicit: the docstring (and Layer 3) now present finite_point as the required companion — Nat.card of an infinite type is 0, so the inequality would be false-not-vacuous, and any proof necessarily establishes finiteness. I kept the statement free of a redundant [Finite …] hypothesis, per your "presented together" alternative. And char K ∤ N is now stated wherever the nondegenerate pairing / full N-torsion theory is invoked.

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 ω_{E/S} as a glued line bundle (InvariantDifferential.lean), so the closing "not yet formalised anywhere" claim now covers only its isogeny functoriality, the formal group, Néron models, and Tate's algorithm.

@Multramate Multramate left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
Comment thread TauCetiRoadmap/EllipticCurves/README.md Outdated
CBirkbeck and others added 3 commits July 20, 2026 15:18
…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>
@CBirkbeck

Copy link
Copy Markdown
Collaborator Author

[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.

  • Orthogonal to group schemes and models. The scheme layer is gone entirely. An isogeny is now your function-field definition (pullback : W₂.FunctionField →ₐ[K] W₁.FunctionField with inducedPlace pullback W₁.infinityPlace = W₂.infinityPlace); Layer 0 is the places/divisors dictionary over Mathlib's existing CoordinateRing/FunctionField/toClass (new seed: toClass_surjective); the Weil pairing and everything downstream is developed with no schemes anywhere. Degrees become Module.finrank, separability becomes field theory, and Frobenius is f ↦ f^q.
  • Narrower. Néron models are out of scope (a future scheme-facing roadmap), complex uniformisation was already dropped, and the mathlib-track items — the E[N] structure, the Tate module, Tate's algorithm/conductor, the division-polynomial [n]-formulas — are kept only under an explicit build-then-dedupe convention, so nothing here competes with upstream work.
  • "Maybe it's possible to experiment here." That is now explicitly this roadmap's job: it adopts your definition and coordinates with your in-flight isogeny/Weil-pairing development rather than forking it — wherever your upstream lands first, the roadmap consumes it and deletes the duplication.

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants