This course builds elliptic curve theory from first principles up to the machinery behind the 2026 rank-30 record. Nothing is assumed beyond undergraduate algebra, and every symbol is defined before use. PARI/GP is the computational workhorse throughout; a later phase covers driving it from Mathematica.

Structure

PhaseContents
0Toolchain and algebraic prerequisites
1Curves, the Weierstrass model, the group law
2Analytic theory and finite fields
3Torsion, Galois representations, reduction
4Heights and the Mordell–Weil theorem
5Descent, Selmer groups, Ш
6L-functions, modularity, BSD
7High-rank construction
8Practice: PARI cookbook and a Mathematica package

Standing notation

SymbolMeaning
$\mathbb{Z},\mathbb{Q},\mathbb{R},\mathbb{C}$integers, rationals, reals, complex numbers
$\mathbb{F}_q$the finite field with $q$ elements, $q$ a prime power
$\mathbb{Z}_p,\ \mathbb{Q}_p$$p$-adic integers and $p$-adic numbers
$K$a field, usually $\mathbb{Q}$ or a number field
$\overline{K}$a fixed algebraic closure of $K$
$K^\times$the multiplicative group $K\setminus\{0\}$
$G_K$$\operatorname{Gal}(\overline{K}/K)$, the absolute Galois group
$\operatorname{char} K$the characteristic of $K$
$E$an elliptic curve
$E(K)$the group of $K$-rational points of $E$
$\mathcal{O}$the point at infinity, identity of $E(K)$
$r$the rank of $E(\mathbb{Q})$
$\Delta$the discriminant of a Weierstrass equation
$N$the conductor of $E$
$a_p$$p+1-\#E(\mathbb{F}_p)$, the trace of Frobenius at $p$
$h,\ \hat h$naive and canonical (Néron–Tate) height
$v_p$the $p$-adic valuation: $v_p(p^k u)=k$ for $p \nmid u$
$\#S$ or $|S|$cardinality of a set $S$
$a \mid b$$a$ divides $b$
$\lfloor x\rfloor$greatest integer $\le x$
Conventions
  • "Curve" always means a smooth projective geometrically irreducible curve unless said otherwise.
  • Group operations on $E$ are written additively: $P+Q$, $[m]P$ or $mP$, $-P$.
  • $\log$ is the natural logarithm.
  • Where two normalisation conventions exist (notably for $\hat h$), both are stated and the software convention is flagged.

Exercises

0.1 Verify that $v_p$ satisfies $v_p(xy)=v_p(x)+v_p(y)$ and $v_p(x+y)\ge\min(v_p(x),v_p(y))$ for $x,y\in\mathbb{Q}^\times$, and give an example where the second is strict.

Solution

Write $x = p^{a}u$, $y = p^{b}w$ with $u,w$ having numerator and denominator prime to $p$. Then $xy = p^{a+b}uw$ and $uw$ is again prime to $p$, so $v_p(xy)=a+b$. For the sum, assume $a \le b$; then $x+y = p^{a}(u + p^{b-a}w)$ and the bracket is a $p$-adic integer times a unit denominator, so $v_p(x+y)\ge a=\min(a,b)$.

Strict example: $p=2$, $x=1$, $y=1$. Then $v_2(x)=v_2(y)=0$ but $v_2(2)=1 \gt 0$.

0.2 Show that $\lfloor \log_{10} n\rfloor + 1$ is the number of decimal digits of a positive integer $n$. Roughly how many digits has a 150-digit curve coefficient in binary?

Solution

$n$ has $d$ digits iff $10^{d-1} \le n \lt 10^{d}$ iff $d-1 \le \log_{10}n \lt d$ iff $d = \lfloor\log_{10}n\rfloor+1$.

Binary digits $\approx 150 \cdot \log_2 10 \approx 150 \times 3.3219 \approx 498$ bits. So a 150-digit coefficient is about a 500-bit integer — eight 64-bit machine words.

Primary texts: Silverman, The Arithmetic of Elliptic Curves (AEC), 2nd ed.; Silverman, Advanced Topics (ATAEC); Silverman & Tate, Rational Points on Elliptic Curves; Cremona, Algorithms for Modular Elliptic Curves (free online).

PARI is a C library for number theory; GP is its interactive calculator front end. It is the fastest freely available tool for elliptic curves over $\mathbb{Q}$ and will be used in almost every lesson.

Install
# macOS
brew install pari
# optionally, Cremona's curve database (enables ellsearch / ellidentify)
brew install pari-elldata

# Debian/Ubuntu
sudo apt install pari-gp pari-elldata

# check
gp --version

Other Homebrew formulae exist for PARI's optional data packages — pari-seadata and pari-seadata-big (modular polynomials for fast point counting), pari-galdata and pari-galpol (Galois theory data). None is needed for rank work; pari-elldata is convenient for looking up small-conductor curves.

Three ways to run it

  1. Interactive. Type gp. You get a readline prompt with history. ? lists help topics, ?ellinit gives help on one function, ??ellinit opens the full manual entry.
  2. Script. Put commands in work.gp and run gp -q work.gp. The -q flag suppresses the banner and the %1 = echoes.
  3. Pipe. echo 'print(1+1)' | gp -q — this is the form we will use when calling PARI from another program.
First session
? \p 38                    \\ set 38 decimal digits of precision
? E = ellinit([0,0,1,-7,6]);
? E.disc
%  6close  \\ (large integer)
? E.j
? ellrank(E)
%  [3, 3, 0, [[-3,0],[-2,3],[-1,3]]]
? P = [-3,0]; Q = [-2,3];
? elladd(E,P,Q)
? ellmul(E,P,7)
? ellheight(E,P)
? ellorder(E,P)            \\ 0 means infinite order
? quit
GP syntax essentials
  • \\ starts a comment to end of line; /* ... */ is a block comment.
  • ; at the end of a line suppresses printing of the result.
  • % is the last result, %n the $n$-th.
  • Vectors are [a,b,c], matrices [a,b;c,d], indexing is 1-based: v[1].
  • \p 50 sets real precision; \ps 20 sets series precision.
  • # toggles a timer; ## prints the time of the last command.
  • Assignment is =; equality test is ==.
  • Member access on structures uses a dot: E.disc, E.j, E.omega.

Exercises

0.3 Start gp and compute the discriminant and $j$-invariant of $y^2 = x^3 - x$. Confirm by hand from $\Delta = -16(4A^3+27B^2)$ and $j = 1728\cdot\frac{4A^3}{4A^3+27B^2}$.

Solution
? E = ellinit([0,0,0,-1,0]);
? E.disc
%  64
? E.j
%  1728

By hand: $A=-1$, $B=0$, so $4A^3+27B^2 = -4$ and $\Delta = -16\cdot(-4)=64$. And $j = 1728\cdot\frac{4(-1)}{-4} = 1728$. The value $j=1728$ signals complex multiplication by $\mathbb{Z}[i]$, which we meet in Lesson 32.

0.4 Write a two-line GP script that prints $\#E(\mathbb{F}_p)$ for $E: y^2=x^3+1$ and all primes $p \lt 50$ of good reduction, and observe the pattern.

Solution
E = ellinit([0,0,0,0,1]);
forprime(p=5, 50, print(p, " ", p+1-ellap(E,p)))

Output: $p=5\to6$, $7\to12$, $11\to12$, $13\to12$, $17\to18$, $19\to12$, $23\to24$, $29\to30$, $31\to24$, $37\to48$, $41\to42$, $43\to36$, $47\to48$.

Notice $a_p = 0$ (so $\#E = p+1$) whenever $p \equiv 2 \pmod 3$. That is the CM signature: this curve has $j=0$ and complex multiplication by $\mathbb{Z}[\zeta_3]$, and $a_p=0$ exactly at primes inert in $\mathbb{Q}(\sqrt{-3})$. This behaviour will matter when we design rank sieves (Lesson 87).

PARI/GP user manual, pari.math.u-bordeaux.fr/doc.html. The tutorial gp -q ?tutorial or the PDF A Tutorial for PARI/GP.

You will write real code in GP, so it is worth twenty minutes on the language itself.

Types

TypeExampleNotes
t_INT42arbitrary precision integer
t_REAL42.0arbitrary precision float; precision set by \p
t_FRAC3/7exact rational, always in lowest terms
t_INTMODMod(3,7)element of $\mathbb{Z}/7\mathbb{Z}$; arithmetic stays reduced
t_PADIC3 + O(5^10)$p$-adic number to given precision
t_POLx^3 - x + 1polynomial in a formal variable
t_POLMODMod(x, x^2+1)element of a quotient ring, e.g. a number field
t_SER1 + x + O(x^5)power series
t_VEC,t_COL,t_MAT[1,2], [1,2]~, [1,2;3,4]row vector, column vector, matrix
t_CLOSURE(x)->x^2anonymous function

type(x) reports the type. The type system is what makes GP powerful: writing Mod(3,7)^100 automatically does modular exponentiation, and ellinit applied to coefficients that are t_INTMOD gives a curve over $\mathbb{F}_p$.

Control flow and functions
\\ loops
for(i=1, 10, print(i))
forprime(p=2, 100, ...)
forvec(v=[[1,3],[1,3]], print(v))      \\ v ranges over a box
fordiv(60, d, print(d))

\\ conditionals
if(cond, then_expr, else_expr)

\\ user functions
f(x, y=1) = x^2 + y;                    \\ y has default 1
g = (x) -> x^2;                          \\ closure

\\ local variables: use my()
h(n) = my(s = 0); for(i=1,n, s += i); s;

\\ vectors built by comprehension
v = vector(10, i, i^2);
w = [ p | p <- primes(20), p % 4 == 1 ];   \\ filtered
u = [ p^2 | p <- primes(10) ];             \\ mapped

\\ apply / select
apply(x->x^2, [1,2,3])
select(x->x>2, [1,2,3,4])
The one trap

Variables are global by default. Always declare locals with my(...) at the top of a function, or a loop counter will silently clobber a global you cared about. A related trap: x is a formal polynomial variable by default, so assigning x = 3 anywhere makes every later polynomial in x evaluate to a number. Use my(x) or different names.

Precision

\p n sets $n$ decimal digits for t_REAL. Functions that need higher internal precision generally take it automatically, but for canonical heights on record-sized curves you will want \p 100 or more. To check a computed real is genuinely nonzero, compare it with 10^-(precision - margin), or better, redo the computation at two precisions and check stability.

Exercises

0.5 Write a GP function naivecount(a,b,p) returning $\#E(\mathbb{F}_p)$ for $y^2=x^3+ax+b$ by direct character summation, and check it against ellcard.

Solution
naivecount(a,b,p) = my(s = 0);
  for(x = 0, p-1, s += 1 + kronecker(x^3 + a*x + b, p));
  s + 1;     \\ +1 for the point at infinity

? naivecount(-1,0,101)
%  116
? E = ellinit([0,0,0,-1,0], 101); ellcard(E)
%  116

kronecker(n,p) is the Legendre symbol for odd prime $p$: $+1$ if $n$ is a nonzero square mod $p$, $-1$ if a non-square, $0$ if $p \mid n$. The count $1+\left(\frac{f(x)}{p}\right)$ is exactly the number of $y$ with $y^2=f(x)$.

0.6 Use Mod and ellinit to build $y^2 = x^3+1$ over $\mathbb{F}_{13}$ and list all its points. Confirm the count.

Solution
? E = ellinit([0,0,0,0,1], 13);
? ellcard(E)
%  12
? #ellgroup(E)          \\ group structure
? \\ enumerate:
? for(x=0,12, for(y=0,12, if(Mod(y^2 - x^3 - 1, 13)==0, print([x,y]))))

You should find 11 affine points plus $\mathcal{O}$, total 12. Note $12 = 13+1-2$, so $a_{13}=2$; and $13\equiv1\pmod3$, consistent with Exercise 0.4's CM pattern (split primes have $a_p\ne0$).

PARI/GP user manual §2 (the GP calculator) and §3 (functions by category).

ellinit returns a vector with a fixed layout. Knowing it saves constant manual lookups.

Input

ellinit([a1,a2,a3,a4,a6]) builds the curve $$y^2 + a_1xy + a_3y = x^3 + a_2x^2 + a_4x + a_6.$$ The short form ellinit([a4,a6]) is shorthand for $[0,0,0,a_4,a_6]$, i.e. $y^2 = x^3+a_4x+a_6$. A second argument gives the base field: ellinit([...], p) for $\mathbb{F}_p$, ellinit([...], O(p^n)) for $\mathbb{Q}_p$, ellinit([...], nf) for a number field.

IndexMember nameMeaning
1–5E.a1E.a6the Weierstrass coefficients
6–9E.b2,E.b4,E.b6,E.b8the $b$-invariants
10–11E.c4,E.c6the $c$-invariants
12E.discdiscriminant $\Delta$
13E.j$j$-invariant
14–15E.rootsroots of the cubic (over $\mathbb{R}$ or $\mathbb{C}$)
E.omegathe period lattice $[\omega_1,\omega_2]$
E.etaquasi-periods (for sigma/zeta functions)
E.areacovolume of the period lattice
The functions you will use most
ellminimalmodel(E, &v)   \\ minimal model; v records the change of variables
ellglobalred(E)          \\ [N, v, product of c_p, ...]  -- N is the conductor
elllocalred(E, p)        \\ [f_p, Kodaira type code, [u,r,s,t], c_p]
ellap(E, p)              \\ a_p
ellcard(E)               \\ #E(F_q)  (curve over a finite field)
ellgroup(E)              \\ group structure of E(F_q)
elltors(E)               \\ torsion subgroup over Q
elladd(E,P,Q)  ellsub    \\ group law
ellmul(E,P,n)            \\ n*P
ellorder(E,P)            \\ order of P (0 if infinite)
ellisoncurve(E,P)        \\ membership test
ellheight(E,P)           \\ canonical height
ellheightmatrix(E,[P,Q]) \\ Gram matrix of the height pairing
ellrank(E)               \\ [lower bound, upper bound, s, points]
ellrootno(E)             \\ root number w = +-1
ellanalyticrank(E)       \\ [analytic rank, leading L-coefficient]
elllseries(E, s)         \\ L(E,s)
ellratpoints(E, h)       \\ search for points with naive height <= h
ellisomat(E)             \\ the Q-isogeny class
ellisogeny(E, G)         \\ Velu: the isogeny with kernel G
elltwist(E, d)           \\ quadratic twist by d
ellpointtoz(E,P)         \\ elliptic logarithm
ellztopoint(E,z)         \\ elliptic exponential
ellsearch(N)             \\ database lookup (needs pari-elldata)
Always minimalise first

Reduction type, conductor and local data are only meaningful for a minimal model. ellinit does not minimalise automatically. Habit: E = ellminimalmodel(ellinit([...]));

Exercises

0.7 Take $E: y^2 = x^3 - 16\cdot 27$ (that is, ellinit([0,-432])). Compute its minimal model, conductor, torsion and rank. What famous curve is it?

Solution
? E = ellinit([0,-432]);
? Em = ellminimalmodel(E); Em[1..5]
? ellglobalred(Em)[1]
%  27
? elltors(Em)
%  [3, [3], [[12,36]]]      \\ Z/3Z
? ellrank(Em)
%  [0, 0, 0, []]

Conductor 27, torsion $\mathbb{Z}/3\mathbb{Z}$, rank 0. This is the curve $x^3+y^3=1$ in disguise — the Fermat cubic. Rank 0 with only 3-torsion means the only rational points on $x^3+y^3=1$ are the trivial ones $(1,0)$ and $(0,1)$: Fermat's Last Theorem for exponent 3.

0.8 For $E:y^2+y=x^3-x^2-10x-20$ (conductor 11) print the Kodaira type and Tamagawa number at every bad prime.

Solution
? E = ellminimalmodel(ellinit([0,-1,1,-10,-20]));
? N = ellglobalred(E)[1]
%  11
? fordiv(N, p, if(isprime(p), print(p, " ", elllocalred(E,p))))
11 [1, 5, [1,0,0,0], 5]

Reading the output: conductor exponent $f_{11}=1$, so multiplicative reduction; Kodaira code 5 means type $\mathrm{I}_5$; Tamagawa number $c_{11}=5$. Consistent: for split multiplicative $\mathrm{I}_n$ we expect $c_p=n$ and $v_p(\Delta)=n=5$. Check with valuation(E.disc,11).

PARI/GP manual, §3.7 "Elliptic curves". ??ellinit in the interpreter gives the component table.

Mathematica has no arithmetic elliptic curve functionality — its Elliptic* and Weierstrass* functions are analytic (the $\wp$ function, theta functions, elliptic integrals). What it is excellent at is symbolic polynomial algebra, which is exactly what the high-rank constructions in Phase 7 need. So the right architecture is a bridge.

Route 1: process pipe (recommended)

Mathematica
gp[cmd_String] := StringTrim @ RunProcess[
   {"gp", "-q"}, "StandardOutput", cmd <> "\nquit\n"];

gp["E = ellinit([0,0,1,-7,6]); print(ellrank(E))"]
(* "[3, 3, 0, [[-3, 0], [-2, 3], [-1, 3]]]" *)

Nothing to install beyond gp on the path. The result is a string; parse it back into Mathematica expressions:

Parsing GP output
gpParse[s_String] := ToExpression[
   StringReplace[s, {"[" -> "{", "]" -> "}"}],
   InputForm];

gpEval[cmd_String] := gpParse @ gp["print(" <> cmd <> ")"];

gpEval["ellheightmatrix(ellinit([0,0,1,-7,6]), \
        [[-3,0],[-2,3],[-1,3]])"]
(* returns a Mathematica 3x3 matrix of reals *)
Two gotchas
  • GP prints big reals in the form 1.2345678901234567890 E12. Convert with StringReplace[s, " E" -> "*10^"] before ToExpression.
  • GP's ~ marks a column vector and Mod(a,b) prints literally. If you may get those, ask GP to normalise first: print(lift(x)), print(Vec(x)).

Route 2: persistent session via Python

For many small calls, spawning gp each time costs ~30 ms. A persistent session removes that.

Setup and use
# shell, once
export CFLAGS="-I$(brew --prefix pari)/include"
export LDFLAGS="-L$(brew --prefix pari)/lib"
pip install cysignals cypari2
(* Mathematica *)
session = StartExternalSession["Python"];
ExternalEvaluate[session, "from cypari2 import Pari; pari = Pari()"];

pariCall[expr_String] := ExternalEvaluate[session,
   "str(pari(\"" <> expr <> "\"))"];

pariCall["ellrank(ellinit([0,0,1,-7,6]))"]

Route 3: file exchange for bulk data

For thousands of curves, neither pipes nor sessions are right — write a file and let GP chew on it.

Bulk pattern
(* Mathematica: emit candidate curves *)
Export["/tmp/curves.txt",
  StringRiffle[
    ToString[#, InputForm] & /@ curveList /. {"{" -> "[", "}" -> "]"},
    "\n"], "Text"];
\\ GP: process them
{ v = readvec("/tmp/curves.txt");
  for(i = 1, #v,
      my(E = ellinit(v[i]));
      if(E, print(i, ":", ellrank(E)[1]))); }
Division of labour
TaskTool
Symbolic families over $\mathbb{Q}(t)$, Mestre's construction, Gröbner conditionsMathematica
Numeric arithmetic: heights, descent, $L$-functions, $a_p$PARI
Bulk sieving over millions of specialisationscompiled code calling libpari, or GP scripts run in parallel

Exercises

0.9 Write a Mathematica function ECRank[{a1,a2,a3,a4,a6}] that returns the PARI rank bounds as a Mathematica list.

Solution
ECRank[coeffs_List] := Module[{s},
  s = gp["print(ellrank(ellinit(" <>
        StringReplace[ToString[coeffs, InputForm],
                      {"{" -> "[", "}" -> "]"}] <> "))"];
  gpParse[s][[1 ;; 2]]
];

ECRank[{0, 0, 1, -7, 6}]   (* {3, 3} *)

The slice [[1;;2]] keeps only the lower and upper bounds, dropping the generators and the $s$ component.

0.10 Measure the round-trip cost of Route 1 for 100 calls and compare with a single call that does 100 curves. What does that tell you about sieve design?

Solution
AbsoluteTiming[Do[gp["print(ellap(ellinit([0,0,0,-1,n]), 101))"], {n, 100}]]
(* roughly 3-4 seconds: ~35 ms per process spawn *)

AbsoluteTiming[gp["for(n=1,100, print(ellap(ellinit([0,0,0,-1,n]),101)))"]]
(* roughly 0.05 seconds *)

Two orders of magnitude. Design rule: never call PARI once per candidate. Batch the loop inside GP, or move the inner loop into compiled code linking libpari. In Phase 7 the sieve evaluates $a_p$ for millions of curves; a per-curve process spawn would make it impossible.

Wolfram documentation for RunProcess and ExternalEvaluate; cypari2 documentation at github.com/sagemath/cypari2.

Everything used later, defined once.

Group

A set $G$ with an operation $\cdot$ that is associative, has an identity $e$, and has inverses. Abelian means $ab=ba$; we then write the operation additively. A subgroup $H \le G$ is a subset closed under the operation and inverses. The index $[G:H]$ is the number of cosets $gH$. A subgroup of an abelian group is normal, so the quotient $G/H$ is a group.

Finitely generated abelian groups

$A$ is finitely generated if $A = \langle a_1,\dots,a_n\rangle$ for finitely many $a_i$. The structure theorem: every such $A$ satisfies $$A \cong \mathbb{Z}^r \times A_{\text{tors}},$$ where $A_{\text{tors}} = \{a : na = 0 \text{ for some } n \ge 1\}$ is finite, and $r$ — the rank — is uniquely determined. Equivalently $r = \dim_\mathbb{Q}(A\otimes_\mathbb{Z}\mathbb{Q})$.

That last characterisation is the useful one: the rank is a dimension of a vector space, so it is detected by linear independence, which is why the height pairing (Lesson 50) can compute it.

Ring, field, ideal

A ring is a set with $+$ and $\times$ where $(R,+)$ is abelian, $\times$ is associative with identity $1$, and distributivity holds. All our rings are commutative. A field is a ring where every nonzero element is invertible. An ideal $I \subseteq R$ is an additive subgroup with $rI \subseteq I$; it is prime if $ab \in I \Rightarrow a\in I$ or $b \in I$, and maximal if no proper ideal strictly contains it. $R/I$ is a field iff $I$ is maximal.

Module, exact sequence

An $R$-module is an abelian group $M$ with an $R$-action satisfying the vector-space axioms. (A $\mathbb{Z}$-module is exactly an abelian group.)

A sequence of homomorphisms $\cdots \to A \xrightarrow{f} B \xrightarrow{g} C \to \cdots$ is exact at $B$ if $\operatorname{im} f = \ker g$. A short exact sequence $$0 \to A \xrightarrow{f} B \xrightarrow{g} C \to 0$$ means $f$ is injective, $g$ is surjective, and $\operatorname{im} f = \ker g$ — so $C \cong B/f(A)$.

Why exact sequences matter here

The whole of descent theory is the manipulation of one short exact sequence, $$0 \to E(\mathbb{Q})/mE(\mathbb{Q}) \to \mathrm{Sel}^{(m)} \to \text{Ш}[m] \to 0,$$ where the outer terms are unknown and the middle is computable. Exactness converts that into the dimension count $\dim\mathrm{Sel} = \dim(E/mE) + \dim\text{Ш}[m]$, which is the rank bound.

Characteristic

The characteristic of a field $K$ is the least $n \gt 0$ with $\underbrace{1+\cdots+1}_{n}=0$, or $0$ if no such $n$ exists. It is $0$ or a prime. $\operatorname{char}\mathbb{Q}=0$; $\operatorname{char}\mathbb{F}_{p^k}=p$. The distinction matters because dividing by 2 and 3 — needed to simplify Weierstrass equations — fails in characteristics 2 and 3.

Exercises

0.11 Show that if $0\to A\to B\to C\to0$ is exact with $A$ and $C$ finite, then $\#B = \#A \cdot \#C$. Where is this used in the course?

Solution

$g:B\to C$ is surjective with kernel $f(A)\cong A$. The fibres of $g$ are cosets of $\ker g$, all of size $\#\ker g = \#A$, and there are $\#C$ of them. Hence $\#B = \#A\cdot\#C$.

Use: applied to the Selmer sequence with $m=2$ and taking $\log_2$, this gives $\dim_{\mathbb{F}_2}\mathrm{Sel}^{(2)} = \dim(E(\mathbb{Q})/2E(\mathbb{Q})) + \dim\text{Ш}[2]$ — the rank bound of Lesson 60.

0.12 Let $A$ be finitely generated abelian of rank $r$ with torsion $T$. Compute $\#(A/2A)$ in terms of $r$ and $T$.

Solution

$A \cong \mathbb{Z}^r\times T$, and $A/2A \cong (\mathbb{Z}/2)^r \times T/2T$. For a finite abelian group, $\#(T/2T)=\#T[2]$ (the map $t\mapsto 2t$ has kernel $T[2]$ and image $2T$, so $\#T = \#T[2]\cdot\#2T$, giving $\#(T/2T)=\#T/\#2T=\#T[2]$). Hence $$\#(A/2A) = 2^{r}\cdot \#T[2], \qquad \dim_{\mathbb{F}_2}(A/2A) = r + \dim_{\mathbb{F}_2}T[2].$$

This is exactly the formula that turns a Selmer computation into a rank bound: the $\dim E(\mathbb{Q})[2]$ term appearing everywhere in Phase 5 is this $\dim T[2]$.

Dummit & Foote, Abstract Algebra, Chs. 1–5 and 10 for modules; Atiyah & Macdonald for commutative algebra.
Absolute value, place

An absolute value on a field $K$ is $|\cdot|:K\to\mathbb{R}_{\ge0}$ with $|x|=0\iff x=0$, $|xy|=|x||y|$, and $|x+y|\le|x|+|y|$. It is non-archimedean if the stronger $|x+y|\le\max(|x|,|y|)$ holds. A place of $K$ is an equivalence class of nontrivial absolute values.

On $\mathbb{Q}$ the places are: the usual $|\cdot|_\infty$, and for each prime $p$ the $p$-adic one $|x|_p = p^{-v_p(x)}$. Ostrowski's theorem says these are all of them.

Product formula

For $x\in\mathbb{Q}^\times$, $$|x|_\infty \prod_{p} |x|_p = 1.$$

Proof: write $x=\pm\prod p^{e_p}$; then $|x|_p = p^{-e_p}$ and $|x|_\infty = \prod p^{e_p}$. The product formula is the reason height functions are well defined (Lesson 44) and the reason canonical heights decompose into local pieces (Lesson 48).

$p$-adic numbers

$\mathbb{Q}_p$ is the completion of $\mathbb{Q}$ with respect to $|\cdot|_p$: formal series $\sum_{n\ge n_0}c_np^n$ with $c_n\in\{0,\dots,p-1\}$. Its valuation ring is $\mathbb{Z}_p=\{x:|x|_p\le1\}$, a local ring with maximal ideal $p\mathbb{Z}_p$ and residue field $\mathbb{Z}_p/p\mathbb{Z}_p\cong\mathbb{F}_p$.

Hensel's lemma

Let $f\in\mathbb{Z}_p[x]$ and $a\in\mathbb{Z}_p$ with $f(a)\equiv0\pmod p$ and $f'(a)\not\equiv0\pmod p$. Then there is a unique $\alpha\in\mathbb{Z}_p$ with $f(\alpha)=0$ and $\alpha\equiv a \pmod p$.

Hensel is why local solvability is decidable: to test whether a curve has a $\mathbb{Q}_p$-point you check finitely many residues mod a bounded power of $p$ and lift. That decidability is the whole reason Selmer groups are computable while Mordell–Weil groups are not.

Number field, ring of integers

A number field $K$ is a finite field extension of $\mathbb{Q}$; $[K:\mathbb{Q}]$ is its degree. Its ring of integers $\mathcal{O}_K$ consists of elements satisfying a monic polynomial over $\mathbb{Z}$. $\mathcal{O}_K$ is a Dedekind domain: every nonzero ideal factors uniquely into prime ideals.

Class group and unit group

The ideal class group $\mathrm{Cl}(K)$ is the group of fractional ideals modulo principal ones; it is finite, of order $h_K$. The unit group $\mathcal{O}_K^\times$ is finitely generated of rank $r_1+r_2-1$ by Dirichlet's theorem, where $r_1$ and $r_2$ count real and complex-conjugate-pair embeddings.

These two finiteness theorems are the engine of descent

The weak Mordell–Weil theorem (Lesson 51) reduces to: there are only finitely many abelian extensions of $K$ of bounded exponent unramified outside a finite set. That statement is exactly finiteness of $\mathrm{Cl}(K)$ plus finite generation of $\mathcal{O}_K^\times$. And computing them is the practical bottleneck: for a record curve, full 2-descent needs the class group of a cubic field of ~450-digit discriminant, which is infeasible.

In PARI
? K = bnfinit(x^3 - x - 1, 1);
? K.no        \\ class number h_K
%  1
? K.reg       \\ regulator
? K.fu        \\ fundamental units
? bnfisprincipal(K, idealprimedec(K,5)[1])
? K.disc      \\ field discriminant
%  -23

bnfinit is expensive; the flag 1 asks for fundamental units too. Under GRH the results are much faster but conditional — use bnfcertify(K) to remove the assumption when feasible.

Exercises

0.13 Decide whether $y^2 = x^3 + 7$ has a point over $\mathbb{Q}_3$ with $x \in \mathbb{Z}_3$, using Hensel.

Solution

Work mod 3. Squares mod 3 are $\{0,1\}$. Compute $x^3+7 \equiv x^3+1 \pmod 3$: for $x\equiv0,1,2$ we get $1,2,0$. So $x\equiv0$ gives $y^2\equiv1$, solvable with $y\equiv\pm1$.

Take $a=1$ and $f(y)=y^2-(x^3+7)$ with $x=0$: $f(1)=1-7=-6\equiv0\pmod3$ and $f'(1)=2\not\equiv0\pmod3$. Hensel lifts to $y\in\mathbb{Z}_3$ with $y^2=7$. So yes.

? sqrt(7 + O(3^10))
%  1 + 3 + 3^2 + 2*3^4 + ... 

0.14 Verify the product formula for $x = 60/7$.

Solution

$60/7 = 2^2\cdot3\cdot5\cdot7^{-1}$. So $|x|_2 = 2^{-2}=1/4$, $|x|_3=1/3$, $|x|_5=1/5$, $|x|_7=7$, all other $|x|_p=1$, and $|x|_\infty=60/7$.

Product: $\frac{60}{7}\cdot\frac14\cdot\frac13\cdot\frac15\cdot7 = \frac{60\cdot7}{7\cdot60}=1$. ✓

0.15 Compute the class number of $\mathbb{Q}(\sqrt{-5})$ in PARI and exhibit a non-unique factorisation.

Solution
? K = bnfinit(x^2 + 5, 1); K.no
%  2

Class number 2, so $\mathcal{O}_K = \mathbb{Z}[\sqrt{-5}]$ is not a UFD. The classic witness: $6 = 2\cdot3 = (1+\sqrt{-5})(1-\sqrt{-5})$, and all four factors are irreducible (norms $4,9,6,6$; there is no element of norm 2 or 3 since $a^2+5b^2 \in\{2,3\}$ has no integer solution).

This failure of unique factorisation is precisely what the class group measures, and precisely what makes descent computations expensive.

Serre, A Course in Arithmetic, Ch. I–II for $p$-adics; Neukirch, Algebraic Number Theory, Ch. I; Cohen, A Course in Computational Algebraic Number Theory for algorithms.

Just enough geometry to state the group law properly and to handle elliptic surfaces in Phase 7.

Affine variety

For a set $S$ of polynomials in $\overline{K}[x_1,\dots,x_n]$, the affine variety is $$V(S) = \{P\in\overline{K}^n : f(P)=0\ \forall f\in S\}.$$ It is defined over $K$ if $S$ can be chosen in $K[x_1,\dots,x_n]$, and then $V(K) = V \cap K^n$ denotes the $K$-rational points. $V$ is irreducible if its ideal $I(V)$ is prime.

Projective variety

Same, in $\mathbb{P}^n$: take $S$ homogeneous, so that $f(P)=0$ is independent of the choice of homogeneous coordinates.

Coordinate ring and function field

For an irreducible affine variety $V/K$, the coordinate ring is $K[V]=K[x_1,\dots,x_n]/I(V)$, an integral domain. Its fraction field $K(V)$ is the function field. The dimension of $V$ is the transcendence degree of $K(V)$ over $K$. A curve is a variety of dimension 1.

Smoothness

$P\in V$ is smooth (nonsingular) if the Jacobian matrix $\bigl(\partial f_i/\partial x_j\bigr)(P)$ has rank $n-\dim V$. For a plane curve $F=0$ in $\mathbb{P}^2$ this reduces to: not all of $\partial F/\partial X,\partial F/\partial Y,\partial F/\partial Z$ vanish at $P$.

Divisors

A divisor on a smooth curve $C$ is a finite formal $\mathbb{Z}$-combination $D=\sum n_P(P)$ of points. Its degree is $\deg D=\sum n_P$. For $f\in\overline{K}(C)^\times$, $\operatorname{div}(f)=\sum_P \operatorname{ord}_P(f)\,(P)$, where $\operatorname{ord}_P(f)$ is the order of vanishing (negative for a pole). Divisors of this form are principal; they have degree 0. Two divisors are linearly equivalent, $D_1\sim D_2$, if $D_1-D_2$ is principal.

Picard group

$\operatorname{Pic}(C) = \operatorname{Div}(C)/\{\text{principal}\}$, and $\operatorname{Pic}^0(C)$ is the subgroup of classes of degree 0. This is a group, always — and for genus 1 it will be the curve.

Riemann–Roch

For a divisor $D$ on a smooth projective curve $C$ of genus $g$, set $$L(D)=\{f\in\overline{K}(C)^\times : \operatorname{div}(f)\ge -D\}\cup\{0\}, \qquad \ell(D)=\dim_{\overline K}L(D).$$ Then, with $K_C$ a canonical divisor ($\deg K_C=2g-2$), $$\ell(D)-\ell(K_C-D)=\deg D + 1 - g.$$ In particular if $\deg D \gt 2g-2$ then $\ell(D)=\deg D+1-g$.

Read $L(D)$ as "functions whose poles are no worse than $D$ allows". For $g=1$ and $\deg D=n\ge1$ we get $\ell(D)=n$ exactly. That single fact produces the Weierstrass equation, in Lesson 14.

Exercises

0.16 Let $C$ have genus 1 and $\mathcal{O}\in C$. Compute $\ell(n(\mathcal{O}))$ for $n=0,1,2,3,4,5,6$.

Solution

Genus $g=1$, so $\deg K_C=0$; and for a genus-1 curve $K_C\sim0$. For $n\ge1$, $\deg(n(\mathcal{O}))=n\gt0=2g-2$, so Riemann–Roch gives $\ell = n+1-1 = n$. For $n=0$, $L(0)$ consists of functions with no poles, i.e. constants, so $\ell(0)=1$.

$n$0123456
$\ell$1123456

The jump structure is the point: $\ell(1(\mathcal{O}))=1$ means there is no function with a simple pole only at $\mathcal{O}$ (that would give an isomorphism to $\mathbb{P}^1$, contradicting $g=1$). $\ell(2(\mathcal{O}))=2$ gives a new function $x$ with a double pole; $\ell(3(\mathcal{O}))=3$ gives $y$ with a triple pole. These are the Weierstrass coordinates.

0.17 In $L(6(\mathcal{O}))$, which has dimension 6, list seven natural elements built from $x$ and $y$ and deduce that a relation must hold.

Solution

$x$ has a pole of order 2, $y$ of order 3. Pole orders: $1\to0$, $x\to2$, $x^2\to4$, $x^3\to6$, $y\to3$, $xy\to5$, $y^2\to6$. All seven lie in $L(6(\mathcal{O}))$.

Seven elements in a 6-dimensional space must be linearly dependent, so there is a relation $$\alpha y^2+\beta xy+\gamma y = \delta x^3+\epsilon x^2+\zeta x+\eta.$$ Both $y^2$ and $x^3$ must genuinely appear (otherwise the pole of order 6 could not cancel), so after rescaling we obtain exactly the general Weierstrass equation $$y^2+a_1xy+a_3y = x^3+a_2x^2+a_4x+a_6.$$ This is the derivation completed in Lesson 14 — and it explains why the indices are $1,2,3,4,6$ with no $a_5$: the weights are $\operatorname{wt}(x)=2$, $\operatorname{wt}(y)=3$, and $a_i$ carries weight $i$ with all terms of total weight 6.

Silverman AEC Ch. I–II (a compressed but complete treatment); Hartshorne, Algebraic Geometry, Ch. I and IV for the full version; Fulton, Algebraic Curves (free online) is the friendliest.

The question is ancient: given a polynomial equation with rational coefficients, describe all rational solutions. For equations in two variables — curves — the answer is governed almost entirely by one invariant.

Genus

For a smooth projective curve $C$ over $\mathbb{C}$, the genus $g$ is the number of handles of the associated Riemann surface. Algebraically, $g = \dim_{\overline K}L(K_C)$, the dimension of the space of regular differentials. For a smooth plane curve of degree $d$ in $\mathbb{P}^2$, $$g = \frac{(d-1)(d-2)}{2}.$$

So lines and conics ($d=1,2$) have $g=0$; smooth cubics ($d=3$) have $g=1$; smooth quartics have $g=3$. A singular point of a plane curve reduces the genus — a nodal cubic has $g=0$, which is exactly why singular cubics are excluded from the definition of an elliptic curve.

The trichotomy
GenusRational pointsReason
$0$none, or infinitely many, parametrised by a rational functiona conic with one rational point is isomorphic to $\mathbb{P}^1$
$1$none, or a finitely generated abelian groupMordell–Weil
$\ge2$always finitely manyFaltings' theorem (Mordell conjecture), 1983

Genus 0, worked

Take $x^2+y^2=1$ with the rational point $(-1,0)$. A line of rational slope $t$ through it, $y=t(x+1)$, meets the conic again in $$\left(\frac{1-t^2}{1+t^2},\ \frac{2t}{1+t^2}\right),$$ and every rational point arises from exactly one $t\in\mathbb{Q}\cup\{\infty\}$. One point plus lines gives everything. Clearing denominators recovers Pythagorean triples.

Why can this not work for a cubic? A line through one rational point of a cubic meets it in two further points, which are conjugate over a quadratic field and individually irrational. You need two rational points to produce a third. The construction stops being a parametrisation and becomes a binary operation — a group law.

Congruent numbers

$n\in\mathbb{Z}_{\gt0}$ is congruent if it is the area of a right triangle with rational sides. Setting $x = n(a+c)/b$, $y=2n^2(a+c)/b^2$ turns the conditions $a^2+b^2=c^2$, $ab/2=n$ into $$E_n:\quad y^2 = x^3 - n^2x,$$ and one shows: $n$ is congruent $\iff$ $E_n(\mathbb{Q})$ has a point of infinite order $\iff \operatorname{rank}E_n(\mathbb{Q})\ge1$. So a two-thousand-year-old problem is a rank computation.

Try it
? for(n=1,10, print(n, " rank ", ellrank(ellinit([0,0,0,-n^2,0]))[1]))
1 rank 0
2 rank 0
3 rank 0
4 rank 0
5 rank 1
6 rank 1
7 rank 1
8 rank 0
9 rank 0
10 rank 0

5, 6, 7 are congruent; 1, 2, 3, 4 are not. That $1$ is not congruent is Fermat's theorem that $x^4-y^4=z^2$ has no nontrivial solutions.

Exercises

1.1 Verify that $6$ is congruent by exhibiting the triangle, and find the corresponding point on $E_6: y^2=x^3-36x$.

Solution

The $(3,4,5)$ triangle has area $6$. With $a=3,b=4,c=5$: $x = 6(3+5)/4 = 12$, $y = 2\cdot36\cdot8/16 = 36$. Check: $12^3 - 36\cdot12 = 1728-432=1296=36^2$. ✓

? E = ellinit([0,0,0,-36,0]); ellisoncurve(E,[12,36])
%  1
? ellorder(E,[12,36])
%  0        \\ infinite order

1.2 Show a smooth plane cubic has genus 1, and compute the genus of $y^2 = x^5+1$ (as a smooth projective model).

Solution

Degree $d=3$: $g=(3-1)(3-2)/2 = 1$. ✓

$y^2 = f(x)$ with $\deg f = n$ and $f$ squarefree is a hyperelliptic curve; its smooth projective model has genus $g=\lfloor(n-1)/2\rfloor$. For $n=5$: $g=2$. (The naive plane model of degree 5 is singular at infinity, so the plane-degree formula does not apply directly.)

By Faltings, $y^2=x^5+1$ therefore has only finitely many rational points. In fact they are $(0,\pm1)$, $(-1,0)$, $(2,\pm3)$, $(4,\pm 33)$ and the point at infinity.

1.3 Parametrise all rational points on $x^2 - 2y^2 = 1$ starting from $(1,0)$.

Solution

Line $y = t(x-1)$: substituting, $x^2 - 2t^2(x-1)^2 = 1$, i.e. $(x-1)\bigl[(x+1) - 2t^2(x-1)\bigr]=0$. The second factor gives $x(1-2t^2) = -1-2t^2$, so $$x = \frac{1+2t^2}{2t^2-1},\qquad y = t(x-1) = \frac{2t}{2t^2-1}.$$

Check $t=1$: $(3,2)$, and $9-2\cdot4=1$ ✓. This is a Pell conic; note the rational points are dense but the integer points form a group generated by $(3,2)$ — a genus-0 shadow of the Mordell–Weil phenomenon.

Silverman AEC Intro and II.§5. Koblitz, Introduction to Elliptic Curves and Modular Forms, Ch. I, for congruent numbers.
Projective $n$-space

$$\mathbb{P}^n(K)=\bigl(K^{n+1}\setminus\{0\}\bigr)/\!\sim,\qquad (x_0,\dots,x_n)\sim(\lambda x_0,\dots,\lambda x_n),\ \lambda\in K^\times.$$ The class is written $[x_0:\cdots:x_n]$.

Geometrically a point of $\mathbb{P}^n$ is a line through the origin in $K^{n+1}$. The map $[X:Y:Z]\mapsto(X/Z,Y/Z)$ identifies $\{Z\ne0\}\subset\mathbb{P}^2$ with the affine plane; the complement $\{Z=0\}$ is a copy of $\mathbb{P}^1$, the line at infinity. Each direction of the affine plane acquires exactly one point at infinity, so parallel lines meet.

Homogenisation

Given affine $f(x,y)=0$ of degree $d$, set $x=X/Z$, $y=Y/Z$ and multiply by $Z^d$: $$F(X,Y,Z)=Z^d f(X/Z,\,Y/Z).$$ $F$ is homogeneous of degree $d$, so $F=0$ is well defined on $\mathbb{P}^2$. Conversely, dehomogenise by setting $Z=1$.

Weierstrass at infinity

$y^2 = x^3+Ax+B$ homogenises to $Y^2Z = X^3+AXZ^2+BZ^3$. Set $Z=0$: $X^3=0$, so $X=0$, and $Y\ne0$ (else all coordinates vanish, which is not a point). Scaling $Y=1$: $$\mathcal{O}=[0:1:0]$$ is the unique point at infinity.

Three facts about $\mathcal{O}$ to keep
  1. It is smooth. $\partial F/\partial Z = Y^2 - 2AXZ-3BZ^2$ evaluates to $1\ne0$ at $[0:1:0]$, so the Jacobian criterion holds. $\mathcal{O}$ is an ordinary point of the curve, not a defect of the model.
  2. It lies on every vertical line. $x=c$ homogenises to $X=cZ$; at $Z=0$ this forces $X=0$, giving $[0:1:0]$. Hence vertical lines meet $E$ in $(c,y)$, $(c,-y)$ and $\mathcal{O}$.
  3. It is an inflection point. The line at infinity $Z=0$ meets $E$ at $\mathcal{O}$ with multiplicity 3. That is why $\mathcal{O}$ works as the identity: $\mathcal{O}+\mathcal{O}+\mathcal{O}=\mathcal{O}$.
Bézout's theorem

Two projective plane curves of degrees $d$ and $e$ with no common component meet in exactly $de$ points of $\mathbb{P}^2(\overline K)$, counted with multiplicity.

For a line ($d=1$) and a cubic ($e=3$) this gives exactly three intersection points with multiplicity — the fact the group law needs. Multiplicity accounts for tangency (a tangent line meets with multiplicity $\ge2$) and inflection (multiplicity 3).

Exercises

1.4 How many points does $\mathbb{P}^2(\mathbb{F}_q)$ have? And $\mathbb{P}^n(\mathbb{F}_q)$?

Solution

$\#\mathbb{P}^n(\mathbb{F}_q) = \frac{q^{n+1}-1}{q-1}=1+q+\cdots+q^n$: there are $q^{n+1}-1$ nonzero vectors and each projective point corresponds to $q-1$ of them.

For $n=2$: $q^2+q+1$. Decomposition check: the affine plane has $q^2$ points, the line at infinity $q+1$. ✓

1.5 Homogenise $y^2+y = x^3-x^2-10x-20$ and find all its points with $Z=0$.

Solution

Multiply by $Z^3$: $Y^2Z + YZ^2 = X^3 - X^2Z - 10XZ^2 - 20Z^3$. Setting $Z=0$ gives $0=X^3$, so $X=0$ and the only point is $[0:1:0]$.

General principle: for any Weierstrass equation, every term except $x^3$ has $x$-degree $\le2$, so after homogenisation every term except $X^3$ carries a factor of $Z$. Hence $Z=0\Rightarrow X=0$, and there is always exactly one point at infinity.

1.6 Show that the tangent to $y^2=x^3+Ax+B$ at a point with $y=0$ is vertical, and interpret this in the group law.

Solution

Implicit differentiation: $2y\,dy = (3x^2+A)\,dx$, so $dy/dx = (3x^2+A)/(2y)$, which is infinite when $y=0$ (and $3x^2+A\ne0$, guaranteed by smoothness). The tangent is therefore the vertical line $x=x_0$.

A vertical line meets $E$ at $(x_0,0)$ twice and at $\mathcal{O}$. So $2P = \mathcal{O}$: points with $y=0$ are exactly the points of order 2. This recovers $E[2]=\{\mathcal{O}\}\cup\{(e_i,0)\}$ with $e_i$ the roots of the cubic.

Silverman AEC I.§2. Fulton, Algebraic Curves, Ch. 4–5 for Bézout with multiplicities.
Singular point

$P$ on the projective curve $F=0$ is singular if $\frac{\partial F}{\partial X}(P)=\frac{\partial F}{\partial Y}(P)=\frac{\partial F}{\partial Z}(P)=0$. The curve is smooth if it has no singular point over $\overline K$.

For $y^2=f(x)$ with $\operatorname{char}K\ne2$: $\partial/\partial y$ gives $2y=0$, $\partial/\partial x$ gives $f'(x)=0$, and the equation gives $y^2=f(x)$. So a singular point has $y=0$ and $f(x)=f'(x)=0$ — a repeated root of $f$.

Discriminant of a polynomial

For monic $f$ with roots $\alpha_1,\dots,\alpha_n$ in $\overline K$, $$\operatorname{disc}(f)=\prod_{i\lt j}(\alpha_i-\alpha_j)^2.$$ It lies in $K$ (symmetric in the roots) and vanishes iff $f$ has a repeated root. For $f = x^3+Ax+B$, $\operatorname{disc}(f) = -4A^3-27B^2$.

Discriminant of a Weierstrass equation

$$\Delta = -16\bigl(4A^3+27B^2\bigr) = 16\operatorname{disc}(x^3+Ax+B).$$ The curve is smooth iff $\Delta\ne0$. The factor $16$ (and its generalisation to the full Weierstrass form, Lesson 16) is fixed by requiring $\Delta$ to transform as $\Delta\mapsto u^{-12}\Delta$.

The two singular shapes

Root patternNameModelSmooth points form
double rootnode$y^2=x^2(x+1)$$\overline K^\times$ or a norm-1 torus
triple rootcusp$y^2=x^3$$\overline K^+$ (additive group)

In both cases the smooth locus is a genus-0 curve and its rational points are parametrisable, so nothing arithmetic survives. For the cusp: $t\mapsto(t^{-2},t^{-3})$ parametrises $y^2=x^3$ minus the origin, and the group law becomes $t_1+t_2$. For the node $y^2=x^2(x+1)$: the two tangent directions at the origin have slopes $\pm1$, and $t\mapsto\bigl(t^2-1,\ t(t^2-1)\bigr)$ works, with the group law becoming $t_1t_2$.

Why we care about singular curves anyway

They are excluded from the definition, but they reappear as reductions: $E/\mathbb{Q}$ reduced mod a prime $p\mid\Delta$ becomes singular over $\mathbb{F}_p$. Node versus cusp then becomes multiplicative versus additive reduction (Lesson 38), and the multiplicative/additive group structures above are exactly the local L-factors of Lesson 66.

Checking smoothness
? poldisc(x^3 - x)
%  4
? E = ellinit([0,0,0,-1,0]); E.disc
%  64                    \\ = 16 * 4
? ellinit([0,0,0,0,0])   \\ y^2 = x^3, a cusp
%  0                     \\ ellinit returns 0 for singular input
? ellinit([0,1,0,0,0])   \\ y^2 = x^3 + x^2, a node
%  0

Exercises

1.7 For which $B\in\mathbb{Z}$ is $y^2=x^3+B$ singular? For which $(A,B)$ with $A,B\in\{-2,\dots,2\}$ is $y^2=x^3+Ax+B$ singular?

Solution

$\Delta=-16\cdot27B^2$, zero iff $B=0$. So only $y^2=x^3$, a cusp.

General: $\Delta=0\iff 4A^3+27B^2=0$. Over the given range: $(0,0)$; and we need $4A^3=-27B^2$, so $A\le0$. $A=-3$: outside range. Checking $A\in\{-2,-1\}$: $4(-8)=-32=-27B^2\Rightarrow B^2=32/27$, not an integer; $4(-1)=-4=-27B^2$, no. So only $(0,0)$.

? for(a=-2,2, for(b=-2,2, if(4*a^3+27*b^2==0, print([a,b]))))
[0, 0]

1.8 Verify that $t\mapsto(t^{-2},t^{-3})$ parametrises the smooth points of $y^2=x^3$, and check the group law becomes addition.

Solution

$(t^{-3})^2 = t^{-6} = (t^{-2})^3$ ✓, and every point with $x\ne0$ arises: given $(x,y)$ with $y^2=x^3$, $x\ne0$, put $t=x/y$; then $t^{-2}=y^2/x^2=x^3/x^2=x$ ✓ and $t^{-3}=y^3/x^3=y^3/y^2=y$ ✓.

Group law: three points $t_1,t_2,t_3$ are collinear iff $t_1+t_2+t_3=0$. Sketch: the line $y=\lambda x+\mu$ meets $y^2=x^3$ where $x^3-\lambda^2x^2-2\lambda\mu x-\mu^2=0$; in the $t$-coordinate, substituting $x=t^{-2},y=t^{-3}$ and clearing gives a cubic in $t$ whose coefficient comparison yields $\sum t_i = 0$. Hence the smooth locus is $(\overline K,+)$ — the additive group, whence "additive reduction".

Silverman AEC III.§1 and III.§2, Prop. 2.5 for the singular parametrisations.

We now derive the Weierstrass model rather than postulating it. This explains the strange indices and the weight system that recurs throughout.

Elliptic curve (intrinsic definition)

An elliptic curve over $K$ is a pair $(E,\mathcal{O})$ where $E$ is a smooth projective geometrically irreducible curve of genus 1 over $K$ and $\mathcal{O}\in E(K)$.

Weierstrass model exists

Every elliptic curve $(E,\mathcal{O})/K$ is isomorphic over $K$ to a smooth plane cubic $$y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6,\qquad a_i\in K,$$ with $\mathcal{O}$ mapping to $[0:1:0]$. Two such models for the same curve differ by a substitution $$x=u^2x'+r,\quad y=u^3y'+su^2x'+t,\qquad u\in K^\times,\ r,s,t\in K.$$

The derivation

Apply Riemann–Roch with $g=1$, so $\deg K_E=0$ and in fact $K_E\sim0$. For $n\ge1$, $\ell(n(\mathcal{O}))=n$. Build a basis step by step:

Seven vectors in a 6-dimensional space are dependent: $$\alpha_1y^2+\alpha_2xy+\alpha_3y+\alpha_4x^3+\alpha_5x^2+\alpha_6x+\alpha_7=0.$$ Both $\alpha_1$ and $\alpha_4$ are nonzero: if $\alpha_1=0$ the remaining functions have pole orders $\le5$ except $x^3$, which then could not cancel; symmetrically for $\alpha_4$. Rescale $x\mapsto\alpha_1\alpha_4 x$, $y\mapsto\alpha_1\alpha_4^2y$ to make $\alpha_1=\alpha_4=1$ and rearrange. That is the Weierstrass equation.

The weight system

Assign $\operatorname{wt}(x)=2$ and $\operatorname{wt}(y)=3$ — their pole orders. Then requiring every term to have weight 6 forces $\operatorname{wt}(a_i)=i$ with $i\in\{1,2,3,4,6\}$. There is no $a_5$ because a weight-5 monomial in $x,y$ alone would be $xy$, already accounted for by $a_1xy$ (weight $1+2+3=6$). Every formula in the theory respects these weights; it is the fastest way to check a formula for typos.

Uniqueness of the model up to $(u,r,s,t)$: the only freedom is a change of basis for $L(2(\mathcal{O}))$ and $L(3(\mathcal{O}))$ preserving the normalisations, i.e. $x\mapsto u^2x+r$ and $y\mapsto u^3y+su^2x+t$.

Exercises

1.9 Show the map $E\to\mathbb{P}^2$, $P\mapsto[x(P):y(P):1]$ (and $\mathcal{O}\mapsto[0:1:0]$) is injective.

Solution

Suppose $x(P)=x(Q)$ and $y(P)=y(Q)$ with $P\ne Q$, both $\ne\mathcal{O}$. The function $x - x(P)$ lies in $L(2(\mathcal{O}))$ and vanishes at both $P$ and $Q$; it has a double pole, so its divisor is $(P)+(Q)-2(\mathcal{O})$ and thus $(P)+(Q)\sim2(\mathcal{O})$. Similarly $y-y(P)$ has divisor $(P)+(Q)+(R)-3(\mathcal{O})$ for some third point $R$. Subtracting, $(R)\sim(\mathcal{O})$, which for genus 1 forces $R=\mathcal{O}$ (if $(R)-(\mathcal{O})$ were principal, the corresponding function would give an isomorphism to $\mathbb{P}^1$). Then $y-y(P)$ has a pole of order 3 at $\mathcal{O}$ and zeros only at $P,Q,\mathcal{O}$ — a contradiction unless $P=Q$.

(Cleanest version: $x$ has degree 2 as a map $E\to\mathbb{P}^1$, so its fibres have two points; $y$ separates them because $y$ takes different values on $P$ and $-P$ unless both are 2-torsion.)

1.10 The curve $u^3+v^3=1$ has genus 1 and the rational point $(1,0)$. Find its Weierstrass model.

Solution

Standard substitution: $x = \dfrac{12}{u+v}$, $y = \dfrac{36(u-v)}{u+v}$ gives $y^2 = x^3 - 432$.

? E = ellinit([0,0,0,0,-432]);
? Em = ellminimalmodel(E); Em[1..5]
%  [0, 0, 1, 0, -7]
? ellglobalred(Em)[1]
%  27
? elltors(Em)
%  [3, [3], [[0, 0]]]
? ellrank(Em)[1..2]
%  [0, 0]

Rank 0, torsion $\mathbb{Z}/3$: the only rational points on $u^3+v^3=1$ are $(1,0)$ and $(0,1)$, plus the point at infinity. That is Fermat for exponent 3.

Silverman AEC III.§3, Prop. 3.1 — the derivation above in full detail.

A reference sheet you will return to constantly. From $a_1,\dots,a_6$ define:

$$b_2=a_1^2+4a_2,\qquad b_4=2a_4+a_1a_3,\qquad b_6=a_3^2+4a_6,$$ $$b_8=a_1^2a_6+4a_2a_6-a_1a_3a_4+a_2a_3^2-a_4^2,$$ $$c_4=b_2^2-24b_4,\qquad c_6=-b_2^3+36b_2b_4-216b_6,$$ $$\Delta=-b_2^2b_8-8b_4^3-27b_6^2+9b_2b_4b_6,\qquad j=\frac{c_4^3}{\Delta}.$$

Two identities bind them: $$4b_8=b_2b_6-b_4^2,\qquad 1728\,\Delta=c_4^3-c_6^2.$$

Where they come from

Completing the square ($y\mapsto y-\tfrac12(a_1x+a_3)$) turns the equation into $y^2=4x^3+b_2x^2+2b_4x+b_6$ — that is what the $b_i$ record. Then completing the cube gives $y^2=x^3-27c_4x-54c_6$. So the $b_i$ are the "char $\ne2$" coefficients and the $c_i$ the "char $\ne2,3$" ones.

Weights and transformation

$\operatorname{wt}(b_i)=i$, $\operatorname{wt}(c_i)=i$, $\operatorname{wt}(\Delta)=12$, $\operatorname{wt}(j)=0$. Under $(u,r,s,t)$, $$u^4c_4'=c_4,\qquad u^6c_6'=c_6,\qquad u^{12}\Delta'=\Delta,\qquad j'=j.$$ So $c_4,c_6,\Delta$ depend on the chosen equation while $j$ does not.

$j$ classifies curves over $\overline K$

$E_1\cong E_2$ over $\overline K$ $\iff$ $j(E_1)=j(E_2)$. Every $j_0\in\overline K$ occurs: for $\operatorname{char}K\ne2,3$ take $$j_0\ne0,1728:\ y^2=x^3-\frac{3j_0}{j_0-1728}x-\frac{2j_0}{j_0-1728};\qquad j_0=0:\ y^2=x^3+1;\qquad j_0=1728:\ y^2=x^3+x.$$

Special $j$

$j=0$: $y^2=x^3+B$, automorphism group of order 6 ($\operatorname{char}\ne2,3$), CM by $\mathbb{Z}[\zeta_3]$.
$j=1728$: $y^2=x^3+Ax$, automorphisms of order 4, CM by $\mathbb{Z}[i]$.
All other $j$: $\operatorname{Aut}(E)=\{\pm1\}$.

Reading them off
? E = ellinit([1,2,3,4,6]);
? [E.a1, E.a2, E.a3, E.a4, E.a6]
%  [1, 2, 3, 4, 6]
? [E.b2, E.b4, E.b6, E.b8]
%  [9, 11, 33, 44]
? [E.c4, E.c6]
%  [-183, 4293]
? E.disc
%  -22887
? E.j
%  6128487/22887
? 1728*E.disc == E.c4^3 - E.c6^2
%  1
? 4*E.b8 == E.b2*E.b6 - E.b4^2
%  1

Exercises

1.11 Verify $1728\Delta=c_4^3-c_6^2$ symbolically for the short form $y^2=x^3+Ax+B$.

Solution

Here $a_1=a_2=a_3=0$, $a_4=A$, $a_6=B$, so $b_2=0$, $b_4=2A$, $b_6=4B$, $b_8=-A^2$. Then $$c_4=-24\cdot2A=-48A,\qquad c_6=-216\cdot4B=-864B,$$ $$\Delta=-8(2A)^3-27(4B)^2=-64A^3-432B^2=-16(4A^3+27B^2).$$ Now $c_4^3-c_6^2 = -48^3A^3-864^2B^2=-110592A^3-746496B^2 = -1728(64A^3+432B^2)=1728\Delta$. ✓

? A=a; B=b; E=ellinit([0,0,0,A,B]);
? 1728*E.disc - (E.c4^3 - E.c6^2)
%  0

1.12 Find a curve over $\mathbb{Q}$ with $j=-3375$ and identify it.

Solution

Using the formula with $j_0=-3375$: $j_0-1728=-5103$, so $A=-3j_0/(j_0-1728)=10125/5103=125/63$ and $B=-2j_0/(j_0-1728)=6750/5103\cdot(-1)\cdots$ — messy. Easier in PARI:

? E = ellinit(ellfromj(-3375));
? Em = ellminimalmodel(E); Em[1..5]
%  [0, 0, 1, -38, 90]
? ellglobalred(Em)[1]
%  49

Conductor 49. $j=-3375=-15^3$ is one of the thirteen CM $j$-invariants over $\mathbb{Q}$ — this curve has complex multiplication by the order of discriminant $-7$, i.e. $\mathbb{Z}\!\left[\frac{1+\sqrt{-7}}{2}\right]$.

1.13 Show that if $E$ has $j=0$ in characteristic $\ne2,3$ then $c_4=0$, and conversely.

Solution

$j=c_4^3/\Delta$ and $\Delta\ne0$, so $j=0\iff c_4^3=0\iff c_4=0$. In short form $c_4=-48A$, so (char $\ne2,3$) $j=0\iff A=0\iff E:y^2=x^3+B$. ✓

Then $1728\Delta=-c_6^2$, so $c_6\ne0$ automatically.

Silverman AEC III.§1, and Table 3.1 for the full transformation formulas for every $a_i,b_i,c_i$.

The admissible substitutions are exactly $$x=u^2x'+r,\qquad y=u^3y'+su^2x'+t,\qquad u\in K^\times,\ r,s,t\in K.$$ Under these, the coefficients transform by (Silverman's Table 3.1): $$ua_1'=a_1+2s,\qquad u^2a_2'=a_2-sa_1+3r-s^2,$$ $$u^3a_3'=a_3+ra_1+2t,\qquad u^4a_4'=a_4-sa_3+2ra_2-(t+rs)a_1+3r^2-2st,$$ $$u^6a_6'=a_6+ra_4+r^2a_2+r^3-ta_3-t^2-rta_1.$$

Two simplification steps
  1. Kill $a_1,a_3$ (needs $2$ invertible). Take $s=-a_1/2$, $t=-a_3/2$, $u=1$, $r=0$. Result: $y^2=x^3+\frac{b_2}{4}x^2+\frac{b_4}{2}x+\frac{b_6}{4}$.
  2. Kill $a_2$ (needs $3$ invertible). Then take $r=-b_2/12$. Result: the short Weierstrass form $$y^2=x^3+Ax+B,\qquad A=-\frac{c_4}{48},\quad B=-\frac{c_6}{864}.$$
Characteristics 2 and 3
  • char 3. Step 1 works, step 2 does not. Best form: $y^2=x^3+a_2x^2+a_4x+a_6$. Note $j=0$ curves in char 3 are supersingular.
  • char 2. Neither works. Two families: if $j\ne0$, one can reach $y^2+xy=x^3+a_2x^2+a_6$ (ordinary); if $j=0$, $y^2+a_3y=x^3+a_4x+a_6$ (supersingular).

This is why every serious implementation stores $[a_1,a_2,a_3,a_4,a_6]$ rather than $(A,B)$, and why ellinit takes five coefficients.

Minimal models over $\mathbb{Q}$

Minimal Weierstrass model

Among all integral Weierstrass equations for $E/\mathbb{Q}$, one with $|\Delta|$ minimal. Over $\mathbb{Q}$ it exists and is unique up to $(u,r,s,t)$ with $u=\pm1$ and $r,s,t\in\mathbb{Z}$. Since $\Delta\mapsto u^{-12}\Delta$, minimising means finding the largest $u\in\mathbb{Z}$ with $u^{12}\mid\Delta$ (compatibly at each prime) and applying the corresponding substitution.

Kraus's criterion decides, prime by prime, whether a given $(c_4,c_6)$ pair comes from an integral model — that is the basis of Laska's and Tate's minimalisation algorithms.

Minimalising
? E = ellinit([0, 0, 0, -16*27*1^4, 0]);   \\ deliberately non-minimal
? E.disc
%  1719926784
? Em = ellminimalmodel(E, &v);
? Em.disc
%  1024
? v                       \\ the change of variables [u,r,s,t]
%  [6, 0, 0, 0]
? ellchangecurve(E, v) == Em
%  1
? \\ move a point across:
? ellchangepoint([12, 36], v)

Note $6^{12}\cdot1024 = 1719926784$ ✓. Always keep v: points computed on one model must be transported with ellchangepoint.

Exercises

1.14 Put $y^2+y=x^3-x^2-10x-20$ into short form over $\mathbb{Q}$ and compare coefficient sizes.

Solution
? E = ellinit([0,-1,1,-10,-20]);
? [E.c4, E.c6]
%  [496, 20008]
? A = -E.c4/48; B = -E.c6/864;
? [A, B]
%  [-31/3, -2501/108]
? Es = ellinit([A,B]);  Es.j == E.j
%  1

Short form is $y^2=x^3-\frac{31}{3}x-\frac{2501}{108}$: denominators appear. Scaling by $u=1/6$ to clear them gives $y^2=x^3-13392x-1080432$, with $\Delta = 6^{12}\cdot(-11^5)$. The original model has $\Delta=-11^5$ and tiny coefficients. Moral: the minimal model is generally not in short form; insisting on short form can inflate coefficients enormously.

1.15 Show the substitution with $u=1$, $r=0$, $s=-a_1/2$, $t=-a_3/2$ really eliminates $a_1$ and $a_3$, using the transformation table.

Solution

$ua_1'=a_1+2s = a_1+2(-a_1/2)=0$ ✓.

$u^3a_3'=a_3+ra_1+2t = a_3+0+2(-a_3/2)=0$ ✓.

And $u^2a_2' = a_2 - sa_1 + 0 - s^2 = a_2 + \frac{a_1^2}{2} - \frac{a_1^2}{4} = a_2+\frac{a_1^2}{4} = \frac{b_2}{4}$, matching the claim. Note both steps divided by 2, hence the characteristic restriction.

1.16 Over $\mathbb{F}_2$, list all curves in the form $y^2+xy=x^3+a_2x^2+a_6$ and compute their point counts.

Solution

$a_2,a_6\in\{0,1\}$ and we need $\Delta\ne0$; for this family $\Delta=a_6$, so $a_6=1$. Two curves: $(a_2,a_6)=(0,1)$ and $(1,1)$.

? E1 = ellinit([1,0,0,0,1], 2); ellcard(E1)
%  4
? E2 = ellinit([1,1,0,0,1], 2); ellcard(E2)
%  2

Hasse: $|a_2|\le2\sqrt2\approx2.83$, so $\#E\in\{1,\dots,5\}$; we get $4$ and $2$, i.e. $a_2=-1$ and $a_2=1$. Both are ordinary ($a_2$ odd, so $a_2\ne0$), consistent with $j=1/a_6\ne0$.

Silverman AEC III.§1 (transformations), VII.§1 and VIII.§8 (minimal models); Cremona, Algorithms, §3.2 for Laska–Kraus–Connell minimalisation.
Isomorphism

$E_1\cong E_2$ over $K$ if there is a change of variables $(u,r,s,t)$ with entries in $K$ carrying one Weierstrass equation to the other. Equivalently, an isomorphism of curves taking $\mathcal{O}_1$ to $\mathcal{O}_2$ (which is automatically a group isomorphism).

In short form, char $\ne2,3$: $r=s=t=0$ is forced (they would reintroduce $a_1,a_2,a_3$), leaving only $u$, and $$(A,B)\longmapsto(u^{-4}A,\ u^{-6}B).$$

Automorphism group

$\operatorname{Aut}(E)$ is the group of isomorphisms $E\to E$ fixing $\mathcal{O}$. For char $\ne2,3$: $$\#\operatorname{Aut}(E)=\begin{cases}2 & j\ne0,1728 \quad (u=\pm1),\\ 4 & j=1728 \quad (u^4=1),\\ 6 & j=0\quad (u^6=1).\end{cases}$$ In char 2 or 3 with $j=0$ the group can have order 12 or 24.

Twist

$E'$ is a twist of $E$ over $K$ if $E'\cong E$ over $\overline K$ but not necessarily over $K$. Twists are classified by $H^1\bigl(G_K,\operatorname{Aut}(E)\bigr)$ (Galois cohomology, Lesson 55).

Quadratic twists

Definition

For $d\in K^\times$ and $E:y^2=x^3+Ax+B$, the quadratic twist is $$E^{(d)}:\ y^2=x^3+d^2Ax+d^3B,$$ equivalently the curve $dy^2=x^3+Ax+B$ after the substitution $(x,y)\mapsto(x/d,y/d^{3/2})$. $E^{(d)}\cong E$ over $K(\sqrt d)$ via $u=\sqrt d$, and $j(E^{(d)})=j(E)$.

$E^{(d)}\cong E^{(d')}$ over $K$ iff $d/d'\in(K^\times)^2$, so quadratic twists are parametrised by $K^\times/(K^\times)^2$.

Rank splits over the quadratic field

$$\operatorname{rank}E\bigl(\mathbb{Q}(\sqrt d)\bigr)=\operatorname{rank}E(\mathbb{Q})+\operatorname{rank}E^{(d)}(\mathbb{Q}).$$ Proof idea: $\operatorname{Gal}(\mathbb{Q}(\sqrt d)/\mathbb{Q})$ acts on $E(\mathbb{Q}(\sqrt d))\otimes\mathbb{Q}$; the $+1$ eigenspace is $E(\mathbb{Q})\otimes\mathbb{Q}$ and the $-1$ eigenspace is $E^{(d)}(\mathbb{Q})\otimes\mathbb{Q}$.

Also $a_p(E^{(d)})=\left(\frac{d}{p}\right)a_p(E)$ for $p\nmid 2d\Delta$, so twisting flips signs of the $a_p$ at half the primes — the mechanism behind twist families as a rank laboratory.

Higher twists

$j=1728$, $E:y^2=x^3+Ax$: quartic twists $y^2=x^3+d\,Ax$, $d\in K^\times/(K^\times)^4$.
$j=0$, $E:y^2=x^3+B$: sextic twists $y^2=x^3+d\,B$, $d\in K^\times/(K^\times)^6$. Congruent-number curves $y^2=x^3-n^2x$ are quartic-twist relatives of $y^2=x^3-x$.

Twisting
? E = ellinit([0,0,0,-1,0]);          \\ y^2 = x^3 - x
? Ed = ellinit(elltwist(E, 5));       \\ twist by 5
? Ed[1..5]
? ellrank(E)[1..2]
%  [0, 0]
? ellrank(Ed)[1..2]
%  [1, 1]
? \\ so rank E(Q(sqrt 5)) = 0 + 1 = 1
? for(p=7,50, if(isprime(p), print(p," ",ellap(E,p)," ",ellap(Ed,p)," ",kronecker(5,p))))

You should see $a_p(E_d)=\left(\frac5p\right)a_p(E)$ at every good $p$.

Exercises

1.17 Show $y^2=x^3-x$ and $y^2=x^3-4x$ are isomorphic over $\mathbb{Q}$, but $y^2=x^3-x$ and $y^2=x^3-2x$ are not.

Solution

Need $u$ with $u^{-4}(-1)=-4$, i.e. $u^4=1/4$, $u=1/\sqrt2$ — not rational. Try the other direction: $(A,B)=(-1,0)\to(-4,0)$ needs $u^{-4}=4$; $u^4 = 1/4$. Hmm, so not via $u$ alone. But $y^2=x^3-4x$ is the quadratic twist of $y^2=x^3-x$ by $d=2$ ($d^2A = 4\cdot(-1)=-4$) — and it is also the quartic twist by 4, and $4=2^2$ is a square in the quartic-twist parameter space? Let us just check numerically:

? E1=ellinit([0,0,0,-1,0]); E2=ellinit([0,0,0,-4,0]); E3=ellinit([0,0,0,-2,0]);
? [E1.j, E2.j, E3.j]
%  [1728, 1728, 1728]
? ellisomat(E1)[1]   \\ isogeny class
? ellglobalred(E1)[1], ellglobalred(E2)[1], ellglobalred(E3)[1]
%  32, 64, 256

Different conductors, so none of the three is $\mathbb{Q}$-isomorphic to another. All share $j=1728$, so all are quartic twists of one another over $\overline{\mathbb{Q}}$. The lesson: equal $j$ is necessary but far from sufficient over $\mathbb{Q}$; the conductor separates twists cheaply.

1.18 Use the rank-splitting formula and PARI to find $\operatorname{rank}E(\mathbb{Q}(\sqrt{-1}))$ for $E: y^2=x^3-x$.

Solution
? E = ellinit([0,0,0,-1,0]); ellrank(E)[1..2]
%  [0, 0]
? Ed = ellinit(elltwist(E,-1)); Ed[1..5]
? ellrank(Ed)[1..2]
%  [0, 0]

Both ranks are 0, so $\operatorname{rank}E(\mathbb{Q}(i))=0$. Note $E^{(-1)}: y^2=x^3-x$ again up to isomorphism — the curve is its own $(-1)$-twist because it has CM by $\mathbb{Z}[i]$ and $i$ acts as an automorphism. So the rank over $\mathbb{Q}(i)$ is twice the rank over $\mathbb{Q}$, which is 0.

1.19 Verify $a_p(E^{(d)})=\left(\frac dp\right)a_p(E)$ directly from the character-sum formula.

Solution

$a_p(E) = -\sum_{x\in\mathbb{F}_p}\chi(x^3+Ax+B)$ with $\chi$ the quadratic character. For $E^{(d)}$ in the form $dy^2=x^3+Ax+B$ (isomorphic over $\mathbb{F}_p$ to the standard twist model), $$\#E^{(d)}(\mathbb{F}_p)=1+\sum_x\Bigl(1+\chi\bigl(d\,(x^3+Ax+B)\bigr)\Bigr) = p+1+\chi(d)\sum_x\chi(x^3+Ax+B),$$ using multiplicativity $\chi(du)=\chi(d)\chi(u)$. Hence $a_p(E^{(d)}) = -\chi(d)\sum_x\chi(f(x)) = \chi(d)a_p(E) = \left(\frac dp\right)a_p(E)$. ✓

Silverman AEC III.§10 (automorphisms) and X.§2, X.§5 (twists).
Chord–tangent composition

For $P,Q\in E$, let $\ell$ be the line through $P$ and $Q$ (the tangent at $P$ if $P=Q$). By Bézout, $\ell$ meets $E$ in a third point $R$ (with multiplicity). Define $P*Q=R$. Then $$P+Q := (P*Q)*\mathcal{O},$$ the third intersection of the line through $R$ and $\mathcal{O}$.

Since $\mathcal{O}=[0:1:0]$ lies on every vertical line, $(x,y)*\mathcal{O} = (x,-y-a_1x-a_3)$, which in short form is just $(x,-y)$: reflection in the $x$-axis. So $P+Q$ is "third intersection, then reflect".

$(E,+)$ is an abelian group

With identity $\mathcal{O}$, inverse $-P=P*\mathcal{O}$, and $P+Q+R=\mathcal{O}$ exactly when $P,Q,R$ are collinear.

Quick axioms

Associativity via $\operatorname{Pic}^0$

Define $\sigma:E\to\operatorname{Pic}^0(E)$ by $\sigma(P)=\bigl[(P)-(\mathcal{O})\bigr]$.

$\sigma$ is injective: if $(P)-(\mathcal{O})\sim(Q)-(\mathcal{O})$ then $(P)\sim(Q)$; a function with divisor $(P)-(Q)$ and $P\ne Q$ would be a degree-1 map $E\to\mathbb{P}^1$, i.e. an isomorphism, contradicting $g=1$.

$\sigma$ is surjective: given $D$ of degree 0, $\ell(D+(\mathcal{O}))=1$ by Riemann–Roch, so there is $f$ with $\operatorname{div}(f)\ge-D-(\mathcal{O})$; the divisor $\operatorname{div}(f)+D+(\mathcal{O})$ is effective of degree 1, hence equals $(P)$ for a unique $P$, and $D\sim(P)-(\mathcal{O})$.

$\sigma$ is a homomorphism: if $P,Q,R$ are collinear on the line $\ell=0$, then $\operatorname{div}(\ell/Z)=(P)+(Q)+(R)-3(\mathcal{O})$ (recall $Z=0$ meets $E$ thrice at $\mathcal{O}$). So $(P)+(Q)+(R)\sim3(\mathcal{O})$, i.e. $\sigma(P)+\sigma(Q)+\sigma(R)=0$, which matches $P+Q+R=\mathcal{O}$.

Therefore $+$ is transported from $\operatorname{Pic}^0(E)$, where associativity is inherited from addition of divisors. Done.

Other proofs of associativity
  • Cayley–Bacharach: if two cubics meet in 9 points and a third cubic passes through 8, it passes through the 9th. Elegant; degenerate configurations need care.
  • Uniformisation: transport from $\mathbb{C}/\Lambda$ where associativity is obvious, then use Lefschetz for char 0. Does not reach char $p$.
  • Purely algebraic: Angdinata–Xu's proof, valid in every characteristic, formalised in Lean 4 and now in Mathlib. If you plan to certify rank claims formally, this is the available foundation — Mordell–Weil and heights are not yet formalised.

Exercises

1.20 Show directly that $\operatorname{div}(\ell/Z) = (P)+(Q)+(R)-3(\mathcal{O})$ for a line $\ell$ meeting $E$ at $P,Q,R$.

Solution

$\ell/Z$ is a ratio of two linear forms, hence a rational function on $E$ of degree 0 as a divisor. Its zeros are where $\ell=0$ on $E$, which by Bézout is $(P)+(Q)+(R)$ with multiplicity. Its poles are where $Z=0$ on $E$, which is $3(\mathcal{O})$ because the line at infinity meets $E$ with multiplicity 3 at $\mathcal{O}$ (recall $\mathcal{O}$ is an inflection point).

Hence $\operatorname{div}(\ell/Z)=(P)+(Q)+(R)-3(\mathcal{O})$, and since it is principal, $(P)+(Q)+(R)\sim3(\mathcal{O})$. ✓

1.21 On $y^2=x^3-2$, compute $P+Q$ for $P=(3,5)$, $Q=(3,-5)$, and then $2P$, by hand and in PARI.

Solution

$Q=-P$, so $P+Q=\mathcal{O}$.

$2P$: $\lambda=\frac{3\cdot9+0}{2\cdot5}=\frac{27}{10}$. $x_3=\lambda^2-2x_1=\frac{729}{100}-6=\frac{129}{100}$. $y_3=\lambda(x_1-x_3)-y_1=\frac{27}{10}\left(3-\frac{129}{100}\right)-5=\frac{27}{10}\cdot\frac{171}{100}-5=\frac{4617}{1000}-5=-\frac{383}{1000}$.

? E = ellinit([0,0,0,0,-2]);
? elladd(E,[3,5],[3,-5])
%  [0]                      \\ the point at infinity
? ellmul(E,[3,5],2)
%  [129/100, -383/1000]

Note the denominators: $x$ has denominator $10^2$, $y$ has $10^3$ — the weight-2/weight-3 pattern again, and the source of the height growth law $h(2P)\approx4h(P)$.

Silverman AEC III.§2–3, Prop. 3.4. Angdinata & Xu, ITP 2023, for the formalised algebraic proof.
General addition algorithm

Let $E: y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6$, $P_1=(x_1,y_1)$, $P_2=(x_2,y_2)$.

Negation: $-P_1=(x_1,\ -y_1-a_1x_1-a_3)$.

If $x_1=x_2$ and $y_1+y_2+a_1x_2+a_3=0$: $P_1+P_2=\mathcal{O}$.

Otherwise set $$\lambda=\begin{cases}\dfrac{y_2-y_1}{x_2-x_1}, & x_1\ne x_2,\\[10pt] \dfrac{3x_1^2+2a_2x_1+a_4-a_1y_1}{2y_1+a_1x_1+a_3}, & x_1=x_2,\end{cases}\qquad \nu=y_1-\lambda x_1,$$ then $$x_3=\lambda^2+a_1\lambda-a_2-x_1-x_2,\qquad y_3=-(\lambda+a_1)x_3-\nu-a_3.$$

Derivation. Substitute $y=\lambda x+\nu$ into the equation. The result is a monic cubic in $x$ whose roots are $x_1,x_2,x_3'$; comparing the $x^2$ coefficient gives $x_1+x_2+x_3'=\lambda^2+a_1\lambda-a_2$. Then reflect: $x_3=x_3'$ and $y_3 = -(\lambda x_3+\nu)-a_1x_3-a_3$.

Cost, and why coordinates matter

Affine addition needs one field inversion, which over $\mathbb{F}_p$ costs roughly 10–100 multiplications. Projective and Jacobian coordinates avoid inversions by carrying a denominator.

Jacobian coordinates

Represent $(x,y)$ as $(X:Y:Z)$ with $x=X/Z^2$, $y=Y/Z^3$ — the weights again. For $y^2=x^3+Ax+B$ the doubling formulas become $$S=4XY^2,\quad M=3X^2+AZ^4,\quad X'=M^2-2S,\quad Y'=M(S-X')-8Y^4,\quad Z'=2YZ,$$ with no division at all.

Height growth

Write $x(P)=a/d^2$, $y(P)=b/d^3$ in lowest terms — always possible, by the weights. Then the doubling formula gives $d(2P)$ of size roughly $d(P)^2$, so $$h(2P)\approx4h(P).$$ This is not incidental: it is the exact statement that the height is a quadratic form up to $O(1)$, and it is what makes the canonical height (Lesson 47) exist. Practically, it is why generators of high-rank curves have hundreds of digits: they sit high in a lattice whose points grow quartically.

Watching the growth
? E = ellinit([0,0,0,0,-2]); P = [3,5];
? for(n=1,6, my(Q=ellmul(E,P,2^n)); print(2^n, "  ", sizedigit(numerator(Q[1]))))
2   3
4   9
8   33
16  129
32  513
64  2049

Digits roughly quadruple each doubling: $3,9,33,129,513,2049$ — each is about $4\times$ the previous. Exactly $h(2P)\approx4h(P)$.

Exercises

1.22 Derive $x_3=\lambda^2-x_1-x_2$ for short Weierstrass form from Vieta's formulas.

Solution

Substituting $y=\lambda x+\nu$ into $y^2=x^3+Ax+B$: $$x^3 - \lambda^2x^2 + (A-2\lambda\nu)x + (B-\nu^2)=0.$$ This monic cubic has roots $x_1,x_2,x_3'$. Vieta: the sum of the roots equals minus the coefficient of $x^2$, i.e. $x_1+x_2+x_3'=\lambda^2$. So $x_3'=\lambda^2-x_1-x_2$, and reflection preserves $x$. ✓

1.23 Implement the general addition law in GP without using elladd, and verify against PARI on a curve with $a_1,a_3\ne0$.

Solution
myadd(E, P, Q) =
{ my(a1=E.a1, a2=E.a2, a3=E.a3, a4=E.a4, lam, nu, x3, y3);
  if(P == [0], return(Q));
  if(Q == [0], return(P));
  my(x1=P[1], y1=P[2], x2=Q[1], y2=Q[2]);
  if(x1 == x2 && y1 + y2 + a1*x2 + a3 == 0, return([0]));
  lam = if(x1 != x2,
           (y2-y1)/(x2-x1),
           (3*x1^2 + 2*a2*x1 + a4 - a1*y1)/(2*y1 + a1*x1 + a3));
  nu = y1 - lam*x1;
  x3 = lam^2 + a1*lam - a2 - x1 - x2;
  y3 = -(lam + a1)*x3 - nu - a3;
  [x3, y3];
}

? E = ellinit([1,2,3,4,6]);
? P = ellratpoints(E, 20)[1]; Q = ellratpoints(E,20)[2];
? myadd(E,P,Q) == elladd(E,P,Q)
%  1
? myadd(E,P,P) == ellmul(E,P,2)
%  1

1.24 On $E:y^2=x^3+17$, the point $P=(-2,3)$ has infinite order. Compute $\hat h(P)$ and $\hat h(2P)$ in PARI and confirm the ratio is 4.

Solution
? E = ellinit([0,0,0,0,17]); P = [-2,3];
? ellisoncurve(E,P)
%  1
? h1 = ellheight(E,P)
%  0.4413...
? h2 = ellheight(E, ellmul(E,P,2))
%  1.7652...
? h2/h1
%  4.0000000000000000000

Exactly 4, to full precision — because $\hat h$ is an exact quadratic form, unlike the naive height $h$ where the relation holds only up to $O(1)$. This exactness is the whole point of the canonical height and is what makes the regulator determinant test valid.

Silverman AEC III.§2, Group Law Algorithm 2.3. Cohen–Frey, Handbook of Elliptic and Hyperelliptic Curve Cryptography, Ch. 13, for coordinate systems and operation counts.
Multiplication by $m$

$[m]:E\to E$, $P\mapsto \underbrace{P+\cdots+P}_{m}$ for $m\gt0$, $[0]P=\mathcal{O}$, $[-m]P=-[m]P$. It is a morphism of curves and a group homomorphism.

Division polynomials

Define $\psi_m\in\mathbb{Z}[a_1,\dots,a_6][x,y]$ by $$\psi_0=0,\quad \psi_1=1,\quad \psi_2=2y+a_1x+a_3,$$ $$\psi_3=3x^4+b_2x^3+3b_4x^2+3b_6x+b_8,$$ $$\psi_4=\psi_2\cdot\bigl(2x^6+b_2x^5+5b_4x^4+10b_6x^3+10b_8x^2+(b_2b_8-b_4b_6)x+(b_4b_8-b_6^2)\bigr),$$ and recursively $$\psi_{2m+1}=\psi_{m+2}\psi_m^3-\psi_{m-1}\psi_{m+1}^3,\qquad \psi_2\psi_{2m}=\psi_m\bigl(\psi_{m+2}\psi_{m-1}^2-\psi_{m-2}\psi_{m+1}^2\bigr).$$

Key properties
  1. $\psi_m(P)=0 \iff P\in E[m]\setminus\{\mathcal{O}\}$.
  2. Setting $\phi_m=x\psi_m^2-\psi_{m+1}\psi_{m-1}$ and $\omega_m$ appropriately, $$[m](x,y)=\left(\frac{\phi_m(x)}{\psi_m(x)^2},\ \frac{\omega_m(x,y)}{\psi_m(x,y)^3}\right).$$
  3. For $m$ odd, $\psi_m$ is a polynomial in $x$ alone of degree $\frac{m^2-1}{2}$; for $m$ even, $\psi_m/\psi_2$ is, of degree $\frac{m^2-4}{2}$.
  4. $\deg[m]=m^2$.

Property (2) again shows the weights: numerator and denominator of $x\circ[m]$ have degrees $m^2$ and $m^2-1$; for $y$ the exponent is 3 rather than 2. Property (4) gives $\#E[m]=m^2$ when $\gcd(m,\operatorname{char}K)=1$, since $[m]$ is then separable.

Division polynomials
? E = ellinit([0,0,0,-1,0]);      \\ y^2 = x^3 - x
? elldivpol(E, 2)
%  4*x^3 - 4*x
? elldivpol(E, 3)
%  3*x^4 - 6*x^2 - 1
? polrootsQ(elldivpol(E,3))       \\ rational 3-torsion x-coords
%  []                             \\ none
? factor(elldivpol(E,2))
%  [x,1; x-1,1; x+1,1] * 4        \\ 2-torsion at x = 0, 1, -1
? \\ degrees:
? for(m=2,7, print(m, " ", poldegree(elldivpol(E,m))))

Note elldivpol(E,2) returns $\psi_2^2 = 4x^3+b_2x^2+2b_4x+b_6$ (the "$x$-only" version), which is PARI's convention.

Two uses
  • Torsion. Rational $m$-torsion points have $x$ a rational root of $\psi_m$. Factor and test. This is the algorithmic core of elltors.
  • Schoof's algorithm. Compute the action of Frobenius modulo $\psi_\ell$ for many small $\ell$, recover $a_p \bmod \ell$, and CRT. Polynomial-time point counting.

Exercises

1.25 Compute $\psi_3$ for $y^2=x^3+Ax+B$ from the definition and check its degree.

Solution

Here $b_2=0$, $b_4=2A$, $b_6=4B$, $b_8=-A^2$, so $$\psi_3=3x^4+0+3(2A)x^2+3(4B)x+(-A^2)=3x^4+6Ax^2+12Bx-A^2.$$ Degree $4=(3^2-1)/2$ ✓.

Sanity check: $P$ has order 3 iff $2P=-P$ iff $x(2P)=x(P)$. From $x(2P)=\frac{x^4-2Ax^2-8Bx+A^2}{4(x^3+Ax+B)}$, setting equal to $x$ and clearing gives $3x^4+6Ax^2+12Bx-A^2=0$. ✓

1.26 Find all rational 3-torsion on $y^2=x^3+1$.

Solution

$A=0,B=1$: $\psi_3=3x^4+12x = 3x(x^3+4)$. Rational roots: $x=0$ (and $x^3=-4$ has no rational root). At $x=0$: $y^2=1$, so $y=\pm1$.

? E = ellinit([0,0,0,0,1]);
? elltors(E)
%  [6, [6], [[2, 3]]]
? ellorder(E,[0,1])
%  3
? ellmul(E,[0,1],3)
%  [0]

So $(0,\pm1)$ have order 3. In fact the full torsion is $\mathbb{Z}/6\mathbb{Z}$, generated by $(2,3)$; the 2-torsion point is $(-1,0)$.

1.27 Verify $\deg[2]=4$ by counting preimages of a generic point on $y^2=x^3-x$ over $\overline{\mathbb{Q}}$.

Solution

$x([2]P)=\frac{x^4+2x^2+1}{4(x^3-x)}=\frac{(x^2+1)^2}{4x(x^2-1)}$. Setting this equal to a generic value $c$ gives $(x^2+1)^2 = 4cx(x^2-1)$, a quartic in $x$ with 4 roots for generic $c$. Each $x$ gives one point once $y$ is pinned by the requirement $[2]P$ has the right $y$. So $\#[2]^{-1}(\text{point}) = 4 = \deg[2]$ ✓. Equivalently $\#\ker[2]=\#E[2]=4$.

Silverman AEC III.§4 and Exercise 3.7. Washington, Elliptic Curves, §3.2, has the division polynomials written out.

Before any theory of heights, it is worth developing intuition by hand-searching.

Naive height (provisional)

For $x=a/b\in\mathbb{Q}$ in lowest terms, $H(x)=\max(|a|,|b|)$ and $h(x)=\log H(x)$. For $P\in E(\mathbb{Q})$, $h(P)=h(x(P))$ and $h(\mathcal{O})=0$.

Northcott property

$\{P\in E(\mathbb{Q}) : h(P)\le B\}$ is finite for every $B$. Reason: there are at most $(2B'+1)^2$ rationals $a/b$ with $\max(|a|,|b|)\le B'=e^B$, and each gives at most 2 points.

This finiteness is the reason a naive search terminates, and — combined with $h(2P)\approx4h(P)$ — the reason the descent argument in Lesson 52 proves finite generation.

The search, done properly

By the weight structure, a rational point has $x=a/d^2$, $y=b/d^3$ with $\gcd(a,d)=\gcd(b,d)=1$. So enumerate $d$ from 1 upward, and for each $d$ enumerate $a$ with $|a|\le Bd^2$, testing whether $d^6 f(a/d^2)$ is a perfect square. Stoll's ratpoints adds a sieve: for many small primes $q$, precompute which residues $a\bmod q$ can possibly make $f$ a square, and reject the rest before doing any big-integer work. That sieve is what makes the difference between $10^6$ and $10^{11}$ candidates per second.

Point search
? E = ellinit([0,0,0,-7,6]);
? ellratpoints(E, 10)              \\ naive height bound 10
%  [[-3,0],[-2,3],[-1,3],[0,-3],[1,0],[2,0],[3,-3],[6,-12],...]
? \\ how far can we get?
? #ellratpoints(E, 100)
? \\ time it:
? # ; ellratpoints(E, 1000); ##
Where naive search stops

Cost grows like $B^{3/2}$ in the height bound (you enumerate $d\le\sqrt B$ and $a\le Bd^2$ roughly). In practice ratpoints reaches naive height around $10^{14}$–$10^{18}$, i.e. $h\approx35$–$40$. Generators of rank-record curves have $\hat h$ in the hundreds. That gap is why 4-descent (Lesson 63) exists.

Both real components

If $\Delta\gt0$ the cubic has three real roots $e_1\lt e_2\lt e_3$ and $E(\mathbb{R})$ has two components: the "egg" over $[e_1,e_2]$ and the unbounded branch over $[e_3,\infty)$. A search that only walks $x$ upward from $e_3$ will miss every point on the egg. ratpoints and ellratpoints handle both intervals; a hand-rolled search must too.

Exercises

1.28 Find by hand all points with $|x|\le5$, $x\in\mathbb{Z}$, on $y^2=x^3-2$, and identify the group they generate.

Solution

Test $x=-1,\dots,5$: $x^3-2$ gives $-3,-2,-1,6,25,62,123$. Only $25$ is a square, at $x=3$. So $(3,\pm5)$.

? E = ellinit([0,0,0,0,-2]);
? ellrank(E)
%  [1, 1, 0, [[3, 5]]]
? elltors(E)
%  [1, [], []]

Rank 1, trivial torsion, so $E(\mathbb{Q})\cong\mathbb{Z}$ generated by $(3,5)$. This is Fermat's claim that $y^2=x^3-2$ has only the integer solutions $(3,\pm5)$ — true for integers, though there are infinitely many rational points.

1.29 On $E:y^2=x^3-7x+6$ (rank 3), find the three generators by search and verify their heights.

Solution
? E = ellinit([0,0,0,-7,6]);
? ellrank(E)
%  [3, 3, 0, [[-3,0],[-2,3],[-1,3]]]
? M = ellheightmatrix(E, [[-3,0],[-2,3],[-1,3]]);
? matdet(M)
%  0.4171...
? matdet(M) != 0
%  1

Nonzero determinant proves independence, so rank $\ge3$; PARI's descent gives upper bound 3, so rank $=3$ exactly. Note that all three generators have tiny coordinates — this is a "small" rank-3 curve. Contrast with the rank-30 record, whose generators have hundreds of digits.

1.30 Write a GP loop that finds all rational points on $y^2=x^3+1$ with $x=a/d^2$, $d\le3$, $|a|\le20$.

Solution
{ for(d=1,3,
    for(a=-20,20,
      if(gcd(a,d)==1,
        my(x = a/d^2, t = x^3+1, n = numerator(t), m = denominator(t));
        if(issquare(t), print([x, sqrtint(numerator(t*m^2))/m])))));
}

You should find $x=-1,0,2$ (with $d=1$) — giving $(-1,0)$, $(0,\pm1)$, $(2,\pm3)$ — and nothing new for $d=2,3$. Since elltors(E) gives $\mathbb{Z}/6$ and ellrank(E) gives 0, these six points plus $\mathcal{O}$ are all the rational points on $y^2=x^3+1$.

Stoll, ratpoints documentation. Silverman AEC VIII.§5 for the naive height.
Lattice

A lattice $\Lambda\subset\mathbb{C}$ is a discrete subgroup of rank 2: $$\Lambda=\mathbb{Z}\omega_1+\mathbb{Z}\omega_2,\qquad \omega_1,\omega_2\in\mathbb{C}^\times,\ \ \tau:=\omega_1/\omega_2\notin\mathbb{R}.$$ We normalise so $\operatorname{Im}\tau\gt0$. The quotient $\mathbb{C}/\Lambda$ is a compact Riemann surface of genus 1 — a torus.

Elliptic function

A meromorphic $f$ on $\mathbb{C}$ with $f(z+\omega)=f(z)$ for all $\omega\in\Lambda$. Equivalently, a meromorphic function on $\mathbb{C}/\Lambda$.

Three quick facts, all from contour integration around a fundamental parallelogram: a holomorphic elliptic function is constant; the sum of residues in a fundamental domain is 0 (so there is no elliptic function with a single simple pole); and the number of zeros equals the number of poles, counted with multiplicity.

Eisenstein series and $\wp$

For $k\ge3$, $\displaystyle G_k(\Lambda)=\sum_{\omega\in\Lambda\setminus\{0\}}\omega^{-k}$ (zero for odd $k$, by $\omega\mapsto-\omega$). The Weierstrass $\wp$ function is $$\wp(z;\Lambda)=\frac{1}{z^2}+\sum_{\omega\in\Lambda\setminus\{0\}}\left(\frac{1}{(z-\omega)^2}-\frac{1}{\omega^2}\right).$$ It converges absolutely and locally uniformly off $\Lambda$, is even, elliptic, and has a double pole at each lattice point and no other poles.

Its Laurent expansion at 0 is $$\wp(z)=\frac{1}{z^2}+\sum_{k\ge1}(2k+1)G_{2k+2}\,z^{2k},$$ and differentiating, $\wp'(z)=-2\sum_{\omega\in\Lambda}(z-\omega)^{-3}$, odd with triple poles.

The differential equation

$$\wp'(z)^2=4\wp(z)^3-g_2\wp(z)-g_3,\qquad g_2=60G_4,\quad g_3=140G_6.$$

Proof sketch. Expand both sides at $z=0$; the difference is an elliptic function that is holomorphic (all poles cancel by construction) and vanishes at $0$, hence identically zero.

The weights, again

$\wp$ has a double pole and $\wp'$ a triple pole — exactly the roles of $x$ and $y$. The differential equation is a Weierstrass equation. This is Riemann–Roch (Lesson 12) done analytically: $L(2(0))$ is spanned by $1,\wp$; $L(3(0))$ by $1,\wp,\wp'$; and the seven functions $1,\wp,\wp',\wp^2,\wp\wp',\wp^3,\wp'^2$ in the 6-dimensional $L(6(0))$ must satisfy a relation.

In PARI and Mathematica
\\ PARI: periods from a curve
? E = ellinit([0,0,0,-1,0]);
? E.omega
%  [5.2441..., 2.6220... + 2.6220...*I]
? ellwp(E, 0.3)          \\ evaluate wp at z=0.3 for this lattice
? ellwp(E, 0.3, 1)       \\ [wp(z), wp'(z)]
(* Mathematica *)
WeierstrassP[0.3, {g2, g3}]
WeierstrassInvariants[{w1, w2}]      (* -> {g2, g3} *)
WeierstrassHalfPeriods[{g2, g3}]     (* -> {w1/2, w2/2} *)

This is the one corner of elliptic curve theory Mathematica supports natively — because it is complex analysis, not arithmetic.

Exercises

2.1 Prove that a holomorphic elliptic function is constant.

Solution

A fundamental parallelogram $D=\{a+s\omega_1+t\omega_2: s,t\in[0,1]\}$ is compact, so $|f|$ attains a maximum on $D$. By periodicity that is the maximum on all of $\mathbb{C}$. A bounded entire function is constant, by Liouville. ∎

This is why elliptic functions must have poles, and why the simplest one has a double pole: a single simple pole is forbidden because residues must sum to zero.

2.2 Show $\wp$ is elliptic. (The naive term-by-term argument fails — why, and how is it fixed?)

Solution

$\wp'$ is manifestly elliptic: $\wp'(z+\omega)=-2\sum_{\mu\in\Lambda}(z+\omega-\mu)^{-3}=\wp'(z)$ by reindexing $\mu\mapsto\mu+\omega$ (the sum converges absolutely, so reindexing is legal).

For $\wp$ itself, term-by-term reindexing fails because the $-1/\omega^2$ corrections do not shift correspondingly. Instead: $\wp(z+\omega_i)-\wp(z)$ has zero derivative, so it is a constant $c_i$. Put $z=-\omega_i/2$ and use that $\wp$ is even: $c_i=\wp(\omega_i/2)-\wp(-\omega_i/2)=0$. Hence $\wp(z+\omega_i)=\wp(z)$ for $i=1,2$, and by additivity for all of $\Lambda$. ∎

2.3 Compute $g_2,g_3,\Delta$ for the square lattice $\Lambda=\mathbb{Z}+\mathbb{Z}i$ and identify the curve.

Solution

For $\Lambda=\mathbb{Z}+\mathbb{Z}i$, multiplying by $i$ preserves $\Lambda$, so $G_6(\Lambda)=\sum\omega^{-6}=\sum(i\omega)^{-6}=i^{-6}G_6=-G_6$, forcing $G_6=0$ and hence $g_3=0$.

So the curve is $y^2=4x^3-g_2x$, i.e. $j=1728$. Numerically $g_2\approx189.0728$.

? E = ellinit([0,0,0,-1,0]); E.j
%  1728
? \\ conversely, from the lattice:
? ellwp(ellinit(ellfromj(1728)), 0.1)

$g_3=0$ is exactly the statement that the curve has CM by $\mathbb{Z}[i]$: the automorphism $z\mapsto iz$ of $\mathbb{C}/\Lambda$ becomes $(x,y)\mapsto(-x,iy)$ on the curve.

Silverman AEC VI.§2–3. Ahlfors, Complex Analysis, Ch. 7 for the analytic side.
Uniformisation

(a) For a lattice $\Lambda$, the map $$\Phi:\mathbb{C}/\Lambda\to E_\Lambda(\mathbb{C})\subset\mathbb{P}^2,\qquad z\mapsto\bigl[\wp(z):\tfrac12\wp'(z):1\bigr],\quad 0\mapsto\mathcal{O},$$ is a complex-analytic group isomorphism onto $E_\Lambda: y^2=x^3-\tfrac{g_2}{4}x-\tfrac{g_3}{4}$.

(b) Conversely, for every $E/\mathbb{C}$ there is a lattice $\Lambda$, unique up to $\Lambda\mapsto c\Lambda$, with $E\cong E_\Lambda$.

Part (b) is the deep half (it uses the modularity of $j$ as a function of $\tau$; see Lesson 24). Part (a) has two components: bijectivity and homomorphy.

Bijectivity. $\wp$ has degree 2 as a map $\mathbb{C}/\Lambda\to\mathbb{P}^1$, so each value is attained twice, at $\pm z$; the two are distinguished by the sign of $\wp'$, except at the four points $z\in\frac12\Lambda/\Lambda$ where $\wp'=0$.

Homomorphy. This is the addition theorem:

Addition theorem for $\wp$

For $z_1\not\equiv\pm z_2$, $$\wp(z_1+z_2)=\frac14\left(\frac{\wp'(z_1)-\wp'(z_2)}{\wp(z_1)-\wp(z_2)}\right)^2-\wp(z_1)-\wp(z_2).$$ And the duplication formula $$\wp(2z)=\frac14\left(\frac{\wp''(z)}{\wp'(z)}\right)^2-2\wp(z).$$

Compare with $x_3=\lambda^2-x_1-x_2$ from Lesson 18: with $x=\wp$ and $y=\tfrac12\wp'$, the slope $\lambda=\frac{y_2-y_1}{x_2-x_1}=\frac12\cdot\frac{\wp'(z_2)-\wp'(z_1)}{\wp(z_2)-\wp(z_1)}$, and the formula is identical. Addition of complex numbers is the chord–tangent law.

What uniformisation buys
  • $E(\mathbb{C})\cong(\mathbb{R}/\mathbb{Z})^2$ as a topological group, so $E[m]\cong\frac1m\Lambda/\Lambda\cong(\mathbb{Z}/m)^2$ — the torsion structure of Lesson 33, for free.
  • Associativity over $\mathbb{C}$ is trivial.
  • The moduli of lattices up to scaling is $\mathbb{H}/\mathrm{SL}_2(\mathbb{Z})$, making $j$ a modular function (Lesson 24) and opening the door to modular forms.
  • Periods $\omega_1,\omega_2$ are computable to thousands of digits by AGM (next lesson) and enter the BSD formula.
  • Linear independence of points can be tested numerically via elliptic logarithms and LLL.

Exercises

2.4 Deduce $E[m]\cong(\mathbb{Z}/m)^2$ from uniformisation, and describe $E[2]$ geometrically.

Solution

$E[m]=\ker([m]:\mathbb{C}/\Lambda\to\mathbb{C}/\Lambda)=\{z: mz\in\Lambda\}/\Lambda=\frac1m\Lambda/\Lambda$. Since $\Lambda\cong\mathbb{Z}^2$, $\frac1m\Lambda/\Lambda\cong(\frac1m\mathbb{Z}/\mathbb{Z})^2\cong(\mathbb{Z}/m\mathbb{Z})^2$. ✓

$E[2]=\{0,\ \omega_1/2,\ \omega_2/2,\ (\omega_1+\omega_2)/2\}$. Under $\Phi$, these are $\mathcal{O}$ and the three points where $\wp'=0$, i.e. $y=0$: the roots $e_i=\wp(\omega_i/2)$ of the cubic. ✓ Consistent with Lesson 11 Exercise 1.6.

2.5 Show $e_1+e_2+e_3=0$ for $e_i=\wp(\omega_i/2)$ (with $\omega_3=\omega_1+\omega_2$).

Solution

The $e_i$ are the roots of $4x^3-g_2x-g_3$, i.e. of $x^3-\frac{g_2}{4}x-\frac{g_3}{4}$. There is no $x^2$ term, so by Vieta the sum of the roots is 0. ✓

Equivalently: the Weierstrass model coming from a lattice is automatically in short form, which is the statement $a_2=0$, i.e. $\sum e_i = 0$.

2.6 Use PARI to verify numerically that $\Phi$ is a homomorphism on $y^2=x^3-x$.

Solution
? \p 30
? E = ellinit([0,0,0,-1,0]);
? P = [-1,0]; Q = [0,0];
? zP = ellpointtoz(E,P); zQ = ellpointtoz(E,Q);
? R = elladd(E,P,Q); zR = ellpointtoz(E,R);
? (zP + zQ - zR) / E.omega[1]
%  1.0000000000000000000000000000    \\ differs by a lattice vector
? ellztopoint(E, zP+zQ) == R
%  1

$\Phi(z_P)+\Phi(z_Q)=\Phi(z_P+z_Q)$ up to a period, which is exactly what "homomorphism on $\mathbb{C}/\Lambda$" means.

Silverman AEC VI.§3–5, Thm. 5.1 (the uniformisation theorem).
Invariant differential

$$\omega=\frac{dx}{2y+a_1x+a_3}.$$ It is holomorphic and nonvanishing on all of $E$, including $\mathcal{O}$, and is invariant under translation: $\tau_Q^*\omega=\omega$ for $\tau_Q(P)=P+Q$. It spans the 1-dimensional space of regular differentials, matching $g=1$.

Elliptic logarithm and exponential

$$\log_E:E(\mathbb{C})\to\mathbb{C}/\Lambda,\qquad \log_E(P)=\int_{\mathcal{O}}^{P}\omega,$$ the inverse of $\Phi$. Its inverse is the elliptic exponential $\exp_E=\Phi$. The lattice $\Lambda$ is precisely the set of periods $\oint_\gamma\omega$ over closed loops $\gamma$.

Why this is the right coordinate

$\log_E$ is a group isomorphism onto $\mathbb{C}/\Lambda$: it converts the chord–tangent law into ordinary addition. Consequently $$\sum_i n_iP_i=\mathcal{O}\quad\Longrightarrow\quad \sum_i n_i\log_E(P_i)\in\Lambda.$$ So linear relations among points become integer relations among complex numbers, detectable by LLL. This gives a fast heuristic independence test, and — with height bounds — a rigorous one.

Computing periods: the AGM

Arithmetic–geometric mean

For $a_0,b_0\gt0$ set $a_{n+1}=\frac{a_n+b_n}{2}$, $b_{n+1}=\sqrt{a_nb_n}$. Both converge to a common limit $\mathrm{AGM}(a_0,b_0)$, quadratically: the number of correct digits doubles each step.

Periods via AGM

For $y^2=(x-e_1)(x-e_2)(x-e_3)$ with $e_1\lt e_2\lt e_3$ real, $$\omega_{\text{real}}=\frac{2\pi}{\mathrm{AGM}\bigl(\sqrt{e_3-e_1},\ \sqrt{e_3-e_2}\bigr)},\qquad \omega_{\text{imag}}=\frac{2\pi i}{\mathrm{AGM}\bigl(\sqrt{e_3-e_1},\ \sqrt{e_2-e_1}\bigr)}.$$

Quadratic convergence means 1000 digits in about 10 iterations. This is why period computations are essentially free, and why the "real period" $\Omega$ in the BSD formula is never the bottleneck.

Periods and elliptic logs
? \p 40
? E = ellinit([0,0,0,-7,6]);
? E.omega
%  [3.5952...,  1.7976... + 1.4185...*I]
? E.area                       \\ covolume of the lattice
? agm(1, sqrt(2))
%  1.1981402347355922074...
? P = [1,0]; z = ellpointtoz(E,P)
? ellztopoint(E, z)            \\ back again
%  [1.000..., 0.000...]
? \\ independence check via LLL on elliptic logs:
? pts = [[-3,0],[-2,3],[-1,3]];
? zs = apply(P -> real(ellpointtoz(E,P)), pts);
? lindep(concat(zs, real(E.omega[1])))
%  ~ [...]                    \\ look for small integer relations
Heuristic vs proof

lindep finding no small relation is evidence of independence, not a proof: a genuine relation could have huge coefficients. The rigorous version needs a height bound on the coefficients of any relation, which comes from the canonical height (Lesson 50) — or one can avoid analysis entirely with the mod-$p$ method of Lesson 90.

Exercises

2.7 Verify that $\omega=dx/(2y)$ is invariant under $(x,y)\mapsto(x,-y)$ composed with negation, i.e. that $[-1]^*\omega=-\omega$.

Solution

$[-1](x,y)=(x,-y)$ in short form. Pulling back: $[-1]^*\omega=\frac{d(x)}{2(-y)}=-\frac{dx}{2y}=-\omega$. ✓

More generally $[m]^*\omega=m\,\omega$, which is the differential-form shadow of $\log_E([m]P)=m\log_E(P)$ and ultimately of $\hat h(mP)=m^2\hat h(P)$ (the square appears because heights are quadratic, i.e. built from $\omega$ twice).

2.8 Compute $\mathrm{AGM}(1,\sqrt2)$ by hand to 6 digits and count iterations.

Solution

$a_0=1$, $b_0=1.414214$.
$a_1=1.207107$, $b_1=\sqrt{1.414214}=1.189207$.
$a_2=1.198157$, $b_2=\sqrt{1.207107\cdot1.189207}=1.198124$.
$a_3=1.1981405$, $b_3=1.1981402$.
$a_4=b_4=1.1981402$.

Four iterations for 7 digits. Correct digits: roughly $1,2,4,8$ — doubling each step, as promised. Gauss's constant $1/\mathrm{AGM}(1,\sqrt2)=0.8346268\ldots$

2.9 Use elliptic logarithms in PARI to test whether $(1,0)$, $(2,0)$ and $(-3,0)$ on $y^2=x^3-7x+6$ are independent.

Solution
? E = ellinit([0,0,0,-7,6]);
? apply(P->ellorder(E,P), [[1,0],[2,0],[-3,0]])
%  [2, 2, 2]

All three have order 2! They are the three 2-torsion points ($y=0$ means $2P=\mathcal{O}$), so they are certainly not independent of infinite order — they generate $(\mathbb{Z}/2)^2$, and $\hat h=0$ for each.

Lesson: always check torsion before testing independence. The genuine generators of this rank-3 curve are $[-3,0]$? No — PARI's ellrank returned $[[-3,0],[-2,3],[-1,3]]$, but $[-3,0]$ has $y=0$... in fact for this curve $x^3-7x+6=(x-1)(x-2)(x+3)$, so all three of $1,2,-3$ give 2-torsion. Re-running ellrank gives non-torsion generators such as $[0,\pm\sqrt6]$—not rational—so use:

? G = ellrank(E)[4]; apply(P->ellorder(E,P), G)
? matdet(ellheightmatrix(E, select(P->ellorder(E,P)==0, G)))

The moral stands: the height matrix is singular precisely when torsion sneaks into your list, since $\hat h(\text{torsion})=0$.

Cremona, Algorithms, §3.7 for AGM periods; Silverman ATAEC Ch. VI for elliptic logarithms and their use in integral-point algorithms.

Let $E:y^2=f(x)=x^3+Ax+B$ with $A,B\in\mathbb{R}$. The real locus is $\{(x,y): f(x)\ge0\}$, so its shape is determined by the number of real roots of $f$ — equivalently by the sign of $\Delta$.

Two cases
$\Delta\lt0$$\Delta\gt0$
real roots of $f$one, $e_1$three, $e_1\lt e_2\lt e_3$
$\{f\ge0\}$$[e_1,\infty)$$[e_1,e_2]\cup[e_3,\infty)$
shapeone unbounded branchan oval ("egg") plus an unbounded branch
$E(\mathbb{R})$$\cong\mathbb{R}/\mathbb{Z}$$\cong\mathbb{R}/\mathbb{Z}\times\mathbb{Z}/2\mathbb{Z}$
components $c_\infty$12
latticerhombic ($\omega_2=\bar\omega_1$)rectangular ($\omega_1\in\mathbb{R}$, $\omega_2\in i\mathbb{R}$)
Real period

$$\Omega=\int_{E(\mathbb{R})}\left|\frac{dx}{2y+a_1x+a_3}\right|.$$ Conventions differ: some authors take $\Omega$ to be the least positive real period $\omega_1$, others $c_\infty\cdot\omega_1$ (i.e. including the egg). PARI's E.omega[1] is $\omega_1$; the BSD formula as usually stated uses $\Omega=c_\infty\,\omega_1$ or absorbs $c_\infty$ into the Tamagawa product. Check which convention your source uses before comparing numbers.

Practical consequence for point search

When $\Delta\gt0$, small rational points frequently sit on the egg, the bounded component over $[e_1,e_2]$. A search that enumerates $x$ upward from $e_3$ misses them entirely. Any hand-rolled search must enumerate both intervals; ellratpoints does.

Inspecting the real structure
? E = ellinit([0,0,0,-7,6]);
? E.disc
%  246016                    \\ positive: two components
? E.roots
%  [2.0000..., 1.0000..., -3.0000...]     \\ e3, e2, e1 (PARI orders descending)
? E.omega
%  [3.5952..., 1.7976... + 1.4185...*I]
? \\ a point on the egg (x between -3 and 1):
? ellratpoints(E, 5)
? select(P -> P[1] <= 1, ellratpoints(E,20))

The group structure, explicitly

When $\Delta\gt0$, the identity component (the unbounded branch, containing $\mathcal{O}$) is $\cong\mathbb{R}/\mathbb{Z}$ and the egg is the nontrivial coset. Consequently: egg + egg = branch, egg + branch = egg. If $P$ is on the egg then $2P$ is on the unbounded branch. This is a real-place analogue of the component group that appears in Tamagawa numbers (Lesson 39).

Exercises

2.10 Sketch $y^2=x^3-x$ and $y^2=x^3-x+1$ and identify which has an egg.

Solution

$y^2=x^3-x=x(x-1)(x+1)$: three real roots $-1,0,1$, so $\Delta=64\gt0$. Egg over $[-1,0]$, branch over $[1,\infty)$. Two components.

$y^2=x^3-x+1$: $\Delta=-16(4(-1)^3+27)=-16\cdot23=-368\lt0$. One real root ($\approx-1.3247$), one component, no egg.

? [ellinit([0,0,0,-1,0]).disc, ellinit([0,0,0,-1,1]).disc]
%  [64, -368]

2.11 On $y^2=x^3-x$, verify that the sum of two egg points lies on the unbounded branch.

Solution
? E = ellinit([0,0,0,-1,0]);
? P = [-1,0]; Q = [0,0];      \\ both on the egg (x in [-1,0])
? elladd(E,P,Q)
%  [1, 0]                     \\ x = 1: on the unbounded branch
? \\ another pair, non-torsion example on a different curve:
? F = ellinit([0,0,0,-7,6]); pts = select(P->P[1]<=1, ellratpoints(F,20));
? R = elladd(F, pts[1], pts[2]); R[1] >= 2
%  1

Consistent with the group structure $\mathbb{R}/\mathbb{Z}\times\mathbb{Z}/2$: the egg is the nonidentity coset, and nonidentity + nonidentity = identity coset.

2.12 Compute $\Omega$ for $y^2=x^3-x$ two ways: from E.omega and from the AGM formula.

Solution
? \p 30
? E = ellinit([0,0,0,-1,0]);
? E.omega[1]
%  5.24411510858423962092967917 (approximately)
? e = E.roots; e1 = e[3]; e2 = e[2]; e3 = e[1];   \\ ascending: e1<e2<e3
? 2*Pi/agm(sqrt(e3-e1), sqrt(e3-e2))
%  5.24411510858423962092967917

They agree. For this curve $e_1=-1,e_2=0,e_3=1$, so the AGM is $\mathrm{AGM}(\sqrt2,1)=1.198140\ldots$ and $2\pi/1.198140=5.24412$. ✓

Silverman AEC V.§2. Cremona, Algorithms, §3.7.

Uniformisation says elliptic curves over $\mathbb{C}$ = lattices up to scaling. Let us make that moduli space explicit, because it is where modular forms come from.

Scale $\Lambda=\mathbb{Z}\omega_1+\mathbb{Z}\omega_2$ by $1/\omega_2$: every lattice is homothetic to $\Lambda_\tau=\mathbb{Z}\tau+\mathbb{Z}$ with $\tau\in\mathbb{H}=\{\operatorname{Im}\tau\gt0\}$.

When do two $\tau$ give the same lattice?

$\Lambda_\tau=\Lambda_{\tau'}$ up to scaling iff $\tau'=\gamma\tau$ for some $$\gamma=\begin{pmatrix}a&b\\c&d\end{pmatrix}\in\mathrm{SL}_2(\mathbb{Z}),\qquad \gamma\tau=\frac{a\tau+b}{c\tau+d}.$$ Hence $$\{\text{elliptic curves}/\mathbb{C}\}/\cong \;\;\longleftrightarrow\;\; \mathbb{H}/\mathrm{SL}_2(\mathbb{Z}).$$

Modular function

A meromorphic $f$ on $\mathbb{H}$ with $f(\gamma\tau)=f(\tau)$ for all $\gamma\in\mathrm{SL}_2(\mathbb{Z})$, meromorphic at the cusp $\tau\to i\infty$. More generally, a modular form of weight $k$ satisfies $f(\gamma\tau)=(c\tau+d)^kf(\tau)$ and is holomorphic everywhere including the cusp.

The Eisenstein series are modular forms: $G_k(\Lambda_{\gamma\tau})=(c\tau+d)^kG_k(\Lambda_\tau)$, so $G_4$ has weight 4 and $G_6$ weight 6. Then $g_2$ has weight 4, $g_3$ weight 6, $\Delta=g_2^3-27g_3^2$ has weight 12, and $$j(\tau)=1728\,\frac{g_2^3}{g_2^3-27g_3^2}$$ has weight 0 — a genuine modular function.

$j$ is the coordinate on moduli space

$j:\mathbb{H}/\mathrm{SL}_2(\mathbb{Z})\to\mathbb{C}$ is a bijection. Its $q$-expansion, with $q=e^{2\pi i\tau}$, is $$j(\tau)=\frac1q+744+196884q+21493760q^2+\cdots$$

Why this matters downstream
  • It makes $j$-invariants of CM curves algebraic integers (the theory of complex multiplication), giving the 13 CM $j$-values over $\mathbb{Q}$.
  • $\Delta(\tau)=q\prod_{n\ge1}(1-q^n)^{24}$ is a weight-12 cusp form; its cousin $\eta$ produces the newform of level 11 in Lesson 70.
  • Replacing $\mathrm{SL}_2(\mathbb{Z})$ by $\Gamma_0(N)$ gives the modular curve $X_0(N)$, which parametrises pairs $(E, C)$ with $C$ a cyclic subgroup of order $N$. Modularity (Lesson 70) says every $E/\mathbb{Q}$ of conductor $N$ receives a surjection from $X_0(N)$.
  • $X_1(N)$ parametrises pairs $(E,P)$ with $P$ of order $N$ — the object Mazur analysed to prove the torsion theorem.
$q$-expansions
? \ps 6
? ellj(x)                     \\ j as a q-series in x = q
%  x^-1 + 744 + 196884*x + 21493760*x^2 + 864299970*x^3 + ...
? eta(x)^24                   \\ the Delta cusp form
? \\ from tau numerically:
? ellj(0.5 + 0.8*I)

Exercises

2.13 Verify $j(i)=1728$ and $j(\rho)=0$ for $\rho=e^{2\pi i/3}$, and relate to Lesson 15.

Solution
? \p 20
? ellj(I)
%  1728.0000000000000000
? ellj(exp(2*Pi*I/3))
%  -0.0000000000000000000 + 0.E-20*I

$\tau=i$: the lattice $\mathbb{Z}i+\mathbb{Z}$ is the square lattice, invariant under multiplication by $i$; hence $g_3=0$ and $j=1728$. CM by $\mathbb{Z}[i]$.

$\tau=\rho$: the hexagonal lattice, invariant under multiplication by $\zeta_6$; hence $g_2=0$ and $j=0$. CM by $\mathbb{Z}[\zeta_3]$.

These are exactly the two exceptional $j$-values with extra automorphisms from Lesson 15.

2.14 Show $\mathrm{SL}_2(\mathbb{Z})$ is generated by $S=\begin{pmatrix}0&-1\\1&0\end{pmatrix}$ and $T=\begin{pmatrix}1&1\\0&1\end{pmatrix}$, and describe their action.

Solution

$T\tau=\tau+1$ (horizontal translation) and $S\tau=-1/\tau$ (inversion in the unit circle composed with reflection). The standard fundamental domain is $\mathcal{F}=\{|\tau|\ge1,\ |\operatorname{Re}\tau|\le\tfrac12\}$.

Generation sketch: given any $\tau$, use $T^{\pm1}$ to bring $\operatorname{Re}\tau$ into $[-\frac12,\frac12]$. If $|\tau|\lt1$ apply $S$, which increases $\operatorname{Im}\tau$ (since $\operatorname{Im}(-1/\tau)=\operatorname{Im}\tau/|\tau|^2$). Repeat. Since $\operatorname{Im}$ of the orbit takes a maximum (discreteness), the process terminates in $\mathcal{F}$. Hence $\langle S,T\rangle$ acts transitively onto $\mathcal{F}$, which forces $\langle S,T\rangle=\mathrm{SL}_2(\mathbb{Z})$. ∎

Serre, A Course in Arithmetic, Ch. VII. Diamond & Shurman, A First Course in Modular Forms, Ch. 1.

All practical rank work rests on computing $a_p$ for many primes, so this lesson and the next are load-bearing.

Quadratic character

For $q$ odd, $\chi:\mathbb{F}_q\to\{-1,0,1\}$ with $\chi(0)=0$, $\chi(u)=1$ if $u$ is a nonzero square, $-1$ otherwise. For $q=p$ prime this is the Legendre symbol $\left(\frac{\cdot}{p}\right)$. It is multiplicative: $\chi(uv)=\chi(u)\chi(v)$.

For $y^2=f(x)$ the number of $y$ solving a given $x$ is $1+\chi(f(x))$. Summing and adding $\mathcal{O}$:

Character sum formula

$$\#E(\mathbb{F}_q)=q+1+\sum_{x\in\mathbb{F}_q}\chi\bigl(f(x)\bigr),\qquad a_q:=q+1-\#E(\mathbb{F}_q)=-\sum_{x\in\mathbb{F}_q}\chi\bigl(f(x)\bigr).$$

$a_p$ for a curve over $\mathbb{Q}$

For $E/\mathbb{Q}$ with a fixed minimal model and $p\nmid\Delta$, $a_p:=p+1-\#\tilde E(\mathbb{F}_p)$ where $\tilde E$ is the reduction. For $p\mid N$ we set $a_p=1,-1,0$ for split multiplicative, non-split multiplicative and additive reduction respectively (Lesson 66 explains why).

Algorithms

MethodComplexityWhen to use
character sum$O(q)$ field ops$p\lesssim10^7$; the sieve workhorse
baby-step giant-step (Shanks–Mestre)$O(q^{1/4})$$p$ up to ~$10^{20}$
Schoof$O(\log^8q)$theoretical
Schoof–Elkies–Atkin$O(\log^4q)$cryptographic sizes
Sieve engineering

For high-rank searching you need $a_p$ for all $p\le X$ (with $X\sim10^3$–$10^5$) on millions of curves. The right implementation:

  • Precompute, once per prime $p$, the table $\chi(u)$ for $u=0,\dots,p-1$ as bytes.
  • Precompute $x^3\bmod p$ for $x=0,\dots,p-1$.
  • Then $a_p$ for a new $(A,B)$ is a single pass: $\sum_x\chi(x^3+Ax+B)$, all table lookups and one multiply-add per $x$.

Asymptotics are irrelevant here — throughput is everything, and the $O(p)$ method with tables beats SEA by orders of magnitude in this regime.

In PARI
? E = ellinit([0,0,0,-7,6]);
? ellap(E, 101)
%  3
? \\ vector of a_p for all p up to 100:
? [ellap(E,p) | p <- primes(25), E.disc % p != 0]
? \\ over an extension field:
? F = ellinit([0,0,0,-7,6], 5); ellcard(F)
? ellcard(ellinit([0,0,0,-7,6], ffgen(5^3)))    \\ #E(F_125)

Exercises

2.15 Compute $\#E(\mathbb{F}_5)$ for $y^2=x^3+1$ by hand and check with PARI.

Solution

Squares mod 5: $0,1,4$. Compute $f(x)=x^3+1$ for $x=0..4$: $1,2,4,3,0$ (since $2^3=8\equiv3$, $3^3=27\equiv2$, $4^3=64\equiv4$; so $f=1,2,3,3,0$). Let me redo: $x=0:1$; $x=1:2$; $x=2:8+1=9\equiv4$; $x=3:27+1=28\equiv3$; $x=4:64+1=65\equiv0$.

$\chi$ values: $\chi(1)=1$, $\chi(2)=-1$, $\chi(4)=1$, $\chi(3)=-1$, $\chi(0)=0$. Sum $=1-1+1-1+0=0$. So $\#E=5+1+0=6$ and $a_5=0$.

? ellap(ellinit([0,0,0,0,1]), 5)
%  0

$a_5=0$: supersingular at 5, consistent with $5\equiv2\pmod3$ and CM by $\mathbb{Z}[\zeta_3]$.

2.16 Write a fast GP routine computing $a_p$ by character sum with a precomputed table, and time it against ellap.

Solution
fastap(A, B, p) =
{ my(s = 0, chi = vector(p, i, kronecker(i-1, p)));
  for(x = 0, p-1, s += chi[ (x^3 + A*x + B) % p + 1 ]);
  -s;
}

? fastap(-7, 6, 1009)
%  -22
? ellap(ellinit([0,0,0,-7,6]), 1009)
%  -22
? # ; for(i=1,100, fastap(-7,6,1009)); ##
? # ; for(i=1,100, ellap(ellinit([0,0,0,-7,6]),1009)); ##

ellap wins in GP because it is compiled C using better algorithms; the point of writing it out is that in your own compiled sieve, the table method with the character array hoisted out of the loop is what you want — recomputing chi per curve, as above, is the mistake.

2.17 For $E:y^2=x^3-x$, compute $a_p$ for $p\le50$ and find the pattern.

Solution
? E = ellinit([0,0,0,-1,0]);
? for(i=1,15, my(p=prime(i)); if(E.disc%p, print(p," ",ellap(E,p))))
3 0
5 -2
7 0
11 0
13 6
17 2
19 0
23 0
29 -10
31 0
37 -2
41 10
43 0
47 0

$a_p=0$ exactly when $p\equiv3\pmod4$. This curve has $j=1728$ and CM by $\mathbb{Z}[i]$; primes inert in $\mathbb{Q}(i)$ (those $\equiv3\bmod4$) are supersingular. For split primes $p\equiv1\pmod4$, write $p=a^2+b^2$ with $a$ odd and $a+b\equiv1\pmod4$; then $a_p=2a$. Check $p=13=9+4$: $a=3,b=2$, $a+b=5\equiv1$ ✓, $a_p=6$ ✓.

Why this matters: half the $a_p$ vanishing makes the Mestre–Nagao sum (Lesson 87) badly biased. CM curves must be excluded from rank sieves.

Silverman AEC V.§1. Washington, Elliptic Curves, Ch. 4 for algorithms including Schoof and SEA.
Frobenius endomorphism

For $E/\mathbb{F}_q$, $\phi:E\to E$, $\phi(x,y)=(x^q,y^q)$, $\phi(\mathcal{O})=\mathcal{O}$. It is a morphism (since $u\mapsto u^q$ is a field homomorphism fixing $\mathbb{F}_q$) of degree $q$, and it is purely inseparable.

Its fixed points are exactly $E(\mathbb{F}_q)$, since $\alpha^q=\alpha\iff\alpha\in\mathbb{F}_q$. Because $\phi-1$ is separable, $$\#E(\mathbb{F}_q)=\#\ker(\phi-1)=\deg(\phi-1).$$

Characteristic equation

In $\operatorname{End}(E)$, $$\phi^2-a_q\phi+q=0,\qquad a_q=q+1-\#E(\mathbb{F}_q).$$

Proof sketch. The degree map is a positive-definite quadratic form on $\operatorname{End}(E)$ with associated bilinear form $\langle\alpha,\beta\rangle=\deg(\alpha+\beta)-\deg\alpha-\deg\beta$. Then $$\deg(\phi-1)=\deg\phi-\langle\phi,1\rangle+\deg 1 = q - \langle\phi,1\rangle + 1,$$ so $\langle\phi,1\rangle=a_q$ by definition. Positive-definiteness of $\deg$ applied to $m\phi-n$ gives $\deg(m\phi-n)=m^2q-mna_q+n^2\ge0$ for all integers $m,n$, whence the discriminant condition $a_q^2-4q\le0$.

Hasse, 1933

$$|a_q|\le2\sqrt q,\qquad\text{equivalently}\qquad \bigl|\#E(\mathbb{F}_q)-(q+1)\bigr|\le2\sqrt q.$$

Writing $\phi$'s eigenvalues as $\alpha,\bar\alpha$ with $\alpha\bar\alpha=q$ and $\alpha+\bar\alpha=a_q$: the bound says $|\alpha|=\sqrt q$, so $|a_q|=|\alpha+\bar\alpha|\le2\sqrt q$. Writing $a_q=2\sqrt q\cos\theta_q$ defines the Frobenius angle $\theta_q\in[0,\pi]$.

Zeta function

$$Z(E/\mathbb{F}_q;T)=\exp\left(\sum_{n\ge1}\#E(\mathbb{F}_{q^n})\frac{T^n}{n}\right)=\frac{1-a_qT+qT^2}{(1-T)(1-qT)}=\frac{(1-\alpha T)(1-\bar\alpha T)}{(1-T)(1-qT)}.$$

Rationality, the functional equation $Z(1/(qT))=Z(T)$, and $|\alpha|=\sqrt q$ (the "Riemann hypothesis for curves") are the Weil conjectures in the genus-1 case. Substituting $T=q^{-s}$, the numerator becomes the local L-factor $1-a_qq^{-s}+q^{1-2s}$ of Lesson 67, and $|\alpha|=\sqrt q$ says its zeros lie on $\operatorname{Re}(s)=\tfrac12$.

Extension fields for free

$$\#E(\mathbb{F}_{q^n})=q^n+1-(\alpha^n+\bar\alpha^n).$$ So one value $a_q$ determines every $\#E(\mathbb{F}_{q^n})$. Set $s_n=\alpha^n+\bar\alpha^n$; then $s_0=2$, $s_1=a_q$, $s_{n+1}=a_qs_n-qs_{n-1}$.

Sato–Tate

For a non-CM curve over $\mathbb{Q}$, the angles $\theta_p$ equidistribute in $[0,\pi]$ with density $\frac2\pi\sin^2\theta$ (Taylor et al., 2008–11). Consequently $a_p$ is symmetric about 0 on average, and $\sum_{p\le X}a_p\log p/p$ has no drift — for a rank-0 curve. Rank shows up as a systematic negative drift, which is precisely what the Mestre–Nagao sieve detects. For a CM curve the distribution is different (half the $\theta_p$ concentrate at $\pi/2$), which is why CM must be excluded.

Exercises

2.18 For $E:y^2=x^3+1$ over $\mathbb{F}_5$ ($a_5=0$), compute $\#E(\mathbb{F}_{25})$ and $\#E(\mathbb{F}_{125})$.

Solution

$s_0=2$, $s_1=0$, $s_{n+1}=0\cdot s_n-5s_{n-1}=-5s_{n-1}$. So $s_2=-10$, $s_3=0$, $s_4=50$.

$\#E(\mathbb{F}_{25})=25+1-(-10)=36$. $\#E(\mathbb{F}_{125})=125+1-0=126$.

? ellcard(ellinit([0,0,0,0,1], ffgen(5^2)))
%  36
? ellcard(ellinit([0,0,0,0,1], ffgen(5^3)))
%  126

Note $36=6^2$: for a supersingular curve over $\mathbb{F}_p$ with $a_p=0$, $E(\mathbb{F}_{p^2})\cong(\mathbb{Z}/(p+1))^2$.

2.19 Verify Hasse's bound empirically for $y^2=x^3-7x+6$ at all $p\lt200$, and plot the normalised $a_p/(2\sqrt p)$.

Solution
? E = ellinit([0,0,0,-7,6]);
? v = [ [p, ellap(E,p), ellap(E,p)/(2*sqrt(p))] | p <- primes(46), E.disc % p != 0 ];
? \\ all normalised values in [-1,1]?
? #select(t -> abs(t[3]) > 1, v)
%  0
? \\ mean of the normalised values:
? vecsum([t[3] | t <- v]) / #v

All lie in $[-1,1]$ ✓. The mean should be noticeably negative for this rank-3 curve — that negative drift is the Mestre–Nagao signal. Compare with a rank-0 curve like ellinit([0,0,1,-1,0]) where the mean hovers near 0.

2.20 Prove that if $E/\mathbb{F}_p$ has $a_p=0$ then $\#E(\mathbb{F}_p)=p+1$ and $E[p]=\{\mathcal{O}\}$.

Solution

$\#E(\mathbb{F}_p)=p+1-a_p=p+1$ immediately.

For the second claim: $\phi^2=-p=[-p]$ in $\operatorname{End}(E)$, so $[p]=-\phi^2$. Since $\phi$ is purely inseparable of degree $p$, $\phi^2$ is purely inseparable of degree $p^2$, hence $[p]$ is purely inseparable and $\#\ker[p]=1$, i.e. $E[p]=\{\mathcal{O}\}$. That is the definition of supersingular. ∎

Silverman AEC V.§1–2, Thm. 1.1 and 2.3.1.
Structure theorem

$$E(\mathbb{F}_q)\cong\mathbb{Z}/n_1\mathbb{Z}\times\mathbb{Z}/n_2\mathbb{Z},\qquad n_2\mid n_1,\quad n_2\mid q-1.$$ It is cyclic iff $n_2=1$.

Why at most two factors: $E[m]\cong(\mathbb{Z}/m)^2$ for $m$ prime to $q$, so no subgroup of $E(\overline{\mathbb{F}_q})$ needs three generators. Why $n_2\mid q-1$: if $E[n_2]\subseteq E(\mathbb{F}_q)$ then by the Weil pairing (Lesson 34) $\mu_{n_2}\subseteq\mathbb{F}_q$, i.e. $n_2\mid q-1$.

Ordinary vs supersingular

$E/\mathbb{F}_q$ ($q=p^k$) is supersingular if $p\mid a_q$; equivalently $E[p]=\{\mathcal{O}\}$; equivalently $\operatorname{End}(E)$ is an order in a quaternion algebra. Otherwise it is ordinary, and then $E[p^n]\cong\mathbb{Z}/p^n$ and $\operatorname{End}(E)$ is an order in an imaginary quadratic field.

Which orders occur (Deuring, Waterhouse)

For $q=p$ prime, an integer $a$ occurs as $a_p$ of some $E/\mathbb{F}_p$ iff $|a|\le2\sqrt p$. So every value in the Hasse interval is attained — the group orders $\#E(\mathbb{F}_p)$ sweep out all of $[p+1-2\sqrt p,\ p+1+2\sqrt p]$.

The consequence for rank sieving

Since every value in the Hasse interval occurs, and (Sato–Tate) occurs with predictable frequency, you can meaningfully ask: for which residues $t\bmod p$ does the family $\mathcal{E}_t$ have unusually many points mod $p$? Precomputing this residue table for each small $p$ and restricting $t$ by CRT is the congruence sieve of Lesson 88. Deuring–Waterhouse guarantees the table is not degenerate.

Group structure
? E = ellinit([0,0,0,-7,6], 101);
? ellcard(E)
%  105
? ellgroup(E)
%  [105]                    \\ cyclic of order 105
? ellgroup(E, 1)            \\ also return generators
? F = ellinit([0,0,0,0,1], 7);
? ellcard(F), ellgroup(F)
%  12, [6, 2]               \\ Z/6 x Z/2
? \\ order of a specific point:
? ellorder(E, ellgenerators(E)[1])

Reduction and the mod-$p$ independence test

This lesson is where the certification method of Lesson 90 gets its raw material. Given points $P_1,\dots,P_k\in E(\mathbb{Q})$ and a good prime $p$:

  1. Compute the structure $\tilde E(\mathbb{F}_p)\cong\mathbb{Z}/n_1\times\mathbb{Z}/n_2$ and generators $g_1,g_2$.
  2. Write each $\bar P_i=c_{i1}g_1+c_{i2}g_2$ by discrete logarithm.
  3. The relations $\sum a_i\bar P_i=\mathcal{O}$ form the kernel lattice $L_p\subseteq\mathbb{Z}^k$ of the map $a\mapsto(\sum a_ic_{i1}\bmod n_1,\ \sum a_ic_{i2}\bmod n_2)$.

Every genuine relation over $\mathbb{Q}$ reduces to a relation mod $p$, so $L\subseteq L_p$ for all good $p$. Intersecting over several primes and getting $\{0\}$ proves independence — with no real arithmetic at all.

Exercises

2.21 Find a prime $p$ for which $E:y^2=x^3+1$ over $\mathbb{F}_p$ is non-cyclic, and explain.

Solution
? for(i=3,20, my(p=prime(i), F=ellinit([0,0,0,0,1],p));
    if(#ellgroup(F)==2, print(p, " ", ellgroup(F))))
7 [6, 2]
13 [6, 6]
19 [6, 3]
31 [6, 6]
...

At $p=7$: $\#E=12$, structure $\mathbb{Z}/6\times\mathbb{Z}/2$. Non-cyclic requires $n_2\ge2$, hence $E[2]\subseteq E(\mathbb{F}_p)$, i.e. $x^3+1$ splits mod $p$ — true when $p\equiv1\pmod3$ or when the factorisation works out; and $n_2\mid p-1$ forces $2\mid p-1$, automatic for odd $p$. At $p=13$ we even get $\mathbb{Z}/6\times\mathbb{Z}/6$: full 6-torsion is rational mod 13, so $\mu_6\subset\mathbb{F}_{13}$, i.e. $6\mid12$ ✓.

2.22 Implement the relation lattice $L_p$ in GP for two points and one prime.

Solution
relmod(E, pts, p) =
{ my(Ep = ellinit(E[1..5], p), G, gens, n, M);
  G = ellgroup(Ep, 1);            \\ [order, [n1,n2], [g1,g2]]
  n = G[2]; gens = G[3];
  M = matrix(#n, #pts, i, j,
        elllog(Ep, [Mod(pts[j][1],p), Mod(pts[j][2],p)], gens[i], n[i]));
  \\ relations a with M*a = 0 mod (n1, n2):
  matkerint(concat(M, matdiagonal(n)));
}

? E = ellinit([0,0,0,-7,6]);
? relmod(E, [[-3,0],[-2,3]], 101)

The output columns span (a superset of) the relation lattice modulo 101. Intersect the results for several primes with matintersect; if the intersection is trivial, the points are independent. In practice PARI's elllog needs the point expressed with Mod coordinates and can fail if a point reduces to the identity — filter those primes out.

2.23 Verify Deuring's theorem experimentally: for $p=23$, find curves realising several distinct values of $a_p$.

Solution
? p = 23; v = List();
? for(A=0,p-1, for(B=0,p-1,
     if(Mod(4*A^3+27*B^2,p) != 0,
        listput(v, ellap(ellinit([0,0,0,A,B],p))))));
? vecsort(Set(Vec(v)))
%  [-9, -8, -7, ..., 8, 9]

$2\sqrt{23}\approx9.59$, so the Hasse interval permits $a\in[-9,9]$ — and every one of those 19 values is attained. ✓ Deuring's theorem in action.

Silverman AEC V.§3, III.§9. Waterhouse, Abelian varieties over finite fields, Ann. Sci. ENS 2 (1969).
Isogeny

A nonconstant morphism $\varphi:E_1\to E_2$ of elliptic curves with $\varphi(\mathcal{O}_1)=\mathcal{O}_2$. (By convention the constant map $\mathcal{O}$ is also called an isogeny, of degree 0.) $E_1$ and $E_2$ are isogenous if such a $\varphi$ exists.

Isogenies are homomorphisms

Any isogeny satisfies $\varphi(P+Q)=\varphi(P)+\varphi(Q)$.

Why. $\varphi$ induces $\varphi_*:\operatorname{Pic}^0(E_1)\to\operatorname{Pic}^0(E_2)$, which is a homomorphism by construction; the identification of $E_i$ with $\operatorname{Pic}^0(E_i)$ via $P\mapsto[(P)-(\mathcal{O}_i)]$ then transports it. The condition $\varphi(\mathcal{O}_1)=\mathcal{O}_2$ is exactly what makes the two identifications compatible.

Degree, separability

$\varphi$ induces an injection of function fields $\varphi^*:\overline K(E_2)\hookrightarrow\overline K(E_1)$. Then $\deg\varphi=[\overline K(E_1):\varphi^*\overline K(E_2)]$. The extension splits into a separable part and a purely inseparable part: $\deg\varphi=\deg_s\varphi\cdot\deg_i\varphi$. If $\varphi$ is separable then $\deg\varphi=\#\ker\varphi$.

In characteristic 0 every isogeny is separable, so $\deg\varphi=\#\ker\varphi$ always. In characteristic $p$, Frobenius has $\deg=p$ but trivial kernel — it is purely inseparable.

Kernels classify isogenies (Vélu)

For every finite subgroup $G\subset E(\overline K)$ stable under $G_K$, there is an elliptic curve $E/G$ and a separable isogeny $\varphi:E\to E/G$ with $\ker\varphi=G$, unique up to isomorphism of the target. Vélu's formulas give both explicitly.

Vélu's formulas (short form, $\operatorname{char}\ne2,3$)

Let $E:y^2=x^3+Ax+B$ and $G$ a finite subgroup. Split $G\setminus\{\mathcal{O}\}=G_2\sqcup R\sqcup(-R)$ where $G_2$ is the 2-torsion in $G$ and $R$ picks one of each $\pm$ pair. For $Q\in S:=G_2\cup R$ set $$g_Q^x=3x_Q^2+A,\quad g_Q^y=-2y_Q,\quad v_Q=\begin{cases}g_Q^x&Q\in G_2\\ 2g_Q^x&\text{else}\end{cases},\quad u_Q=(g_Q^y)^2.$$ Then with $v=\sum_{Q\in S}v_Q$ and $w=\sum_{Q\in S}(u_Q+x_Qv_Q)$, $$E/G:\ y^2=x^3+(A-5v)x+(B-7w),$$ $$\varphi(P)=\left(x_P+\sum_{Q\in S}\left[\frac{v_Q}{x_P-x_Q}+\frac{u_Q}{(x_P-x_Q)^2}\right],\ \ y_P-\sum_{Q\in S}\left[u_Q\frac{2y_P}{(x_P-x_Q)^3}+v_Q\frac{\cdots}{\cdots}\right]\right).$$

The exact $y$-formula is messy; what matters is that it is completely explicit and implemented everywhere.

Vélu in PARI
? E = ellinit([0,0,0,-1,0]);         \\ y^2 = x^3 - x, full 2-torsion
? \\ isogeny with kernel generated by (0,0):
? [F, phi] = ellisogeny(E, [0,0]);
? F                                   \\ coefficients of the target curve
%  [0, 0, 0, 4, 0]                    \\ y^2 = x^3 + 4x
? phi                                 \\ the rational maps
? ellisogenyapply(phi, [1,0])
? \\ the whole isogeny class over Q:
? M = ellisomat(E);
? M[2]                                \\ matrix of isogeny degrees
? #M[1]                               \\ number of curves in the class
Rank is an isogeny invariant

If $\varphi:E_1\to E_2$ is an isogeny over $\mathbb{Q}$ then $\operatorname{rank}E_1(\mathbb{Q})=\operatorname{rank}E_2(\mathbb{Q})$, because $\ker\varphi$ is finite so $\varphi\otimes\mathbb{Q}:E_1(\mathbb{Q})\otimes\mathbb{Q}\to E_2(\mathbb{Q})\otimes\mathbb{Q}$ is an isomorphism. Torsion, Ш, Tamagawa numbers and the regulator all can change; the rank cannot. Practically: compute the rank on whichever curve of the isogeny class is easiest, e.g. the one with the smallest 2-Selmer group.

Exercises

2.24 Compute the isogeny class of the conductor-11 curve and check all members have the same $a_p$.

Solution
? E = ellinit([0,-1,1,-10,-20]);
? M = ellisomat(E);
? #M[1]
%  3
? M[2]                       \\ degree matrix: 1,5,5 etc.
? for(i=1,3, print(apply(p->ellap(ellinit(M[1][i]),p), [2,3,7,13])))
[-2, -1, -2, 4]
[-2, -1, -2, 4]
[-2, -1, -2, 4]

Identical $a_p$ ✓ — isogenous curves have the same $L$-function, hence the same analytic rank and (under BSD) the same rank. The class $\{11a1,11a2,11a3\}$ is linked by 5-isogenies. Their torsion differs: $\mathbb{Z}/5$, $\mathbb{Z}/5$, trivial.

2.25 Verify Vélu's formula for the 2-isogeny of $y^2=x^3-x$ with kernel $\{\mathcal{O},(0,0)\}$ by hand.

Solution

$G=\{\mathcal{O},(0,0)\}$, so $G_2=\{(0,0)\}$, $R=\emptyset$, $S=\{(0,0)\}$. With $A=-1,B=0$, $x_Q=0,y_Q=0$: $$g_Q^x=3\cdot0+(-1)=-1,\quad g_Q^y=0,\quad v_Q=g_Q^x=-1,\quad u_Q=0.$$ So $v=-1$, $w=u_Q+x_Qv_Q=0$, and $$E/G:\ y^2=x^3+(-1-5(-1))x+(0-0)=x^3+4x.$$ ✓ Matches PARI.

The map is $x\mapsto x+\frac{-1}{x-0}+0=x-\frac1x=\frac{x^2-1}{x}$. Compare with the classical 2-isogeny formula $\varphi(x,y)=\left(\frac{y^2}{x^2},\ \frac{y(b-x^2)}{x^2}\right)$ for $y^2=x^3+ax^2+bx$: here $a=0,b=-1$ and $\frac{y^2}{x^2}=\frac{x^3-x}{x^2}=\frac{x^2-1}{x}$ ✓.

2.26 Show that if $\varphi:E_1\to E_2$ is a separable isogeny of degree $m$ then $\varphi$ is surjective on $\overline K$-points.

Solution

A nonconstant morphism of smooth projective curves is surjective (its image is closed and irreducible, of dimension 1, hence everything). Alternatively: $\varphi$ is a finite map of degree $m$, so every fibre has exactly $m$ points counted with multiplicity, and for separable $\varphi$ generic fibres have $m$ distinct points; since $\varphi$ is a homomorphism, every fibre is a coset of $\ker\varphi$ and hence has exactly $m$ points. In particular no fibre is empty. ∎

This is why the sequence $0\to\ker\varphi\to E_1(\overline K)\to E_2(\overline K)\to0$ is exact — the starting point of descent by isogeny (Lesson 57).

Silverman AEC III.§4. Vélu, Isogénies entre courbes elliptiques, C. R. Acad. Sci. Paris 273 (1971).
Dual isogeny

For every isogeny $\varphi:E_1\to E_2$ of degree $m$ there is a unique isogeny $\hat\varphi:E_2\to E_1$ with $$\hat\varphi\circ\varphi=[m]_{E_1},\qquad \varphi\circ\hat\varphi=[m]_{E_2}.$$ Moreover $\deg\hat\varphi=m$, $\widehat{\hat\varphi}=\varphi$, $\widehat{\varphi+\psi}=\hat\varphi+\hat\psi$, and $\widehat{[m]}=[m]$.

Existence: $\varphi(E_1[m])\subseteq E_2[m]$ and one checks $\ker[m]_{E_1}\subseteq\ker(\text{something})$; concretely $\hat\varphi$ is the isogeny with kernel $\varphi(E_1[m])$. Uniqueness follows from $\deg$ being a quadratic form.

Consequences
  • "Isogenous" is an equivalence relation (symmetry is the dual).
  • $\deg[m]=m^2$: apply $\widehat{[m]}=[m]$ and $\deg(\hat\varphi\varphi)=(\deg\varphi)^2$.
  • The Tate module maps $\varphi_*:T_\ell E_1\to T_\ell E_2$ are compatible with duals, giving the adjointness $e_m(\varphi P,Q)=e_m(P,\hat\varphi Q)$ used in descent.

The 2-isogeny, written out

The classical 2-isogeny

Let $E:y^2=x^3+ax^2+bx$ (so $T=(0,0)\in E[2]$ is rational), with $\Delta_E=16b^2(a^2-4b)\ne0$. Set $$E':y^2=x^3-2ax^2+(a^2-4b)x,$$ $$\varphi:E\to E',\qquad \varphi(x,y)=\left(\frac{y^2}{x^2},\ \frac{y(b-x^2)}{x^2}\right),\qquad \varphi(\mathcal{O})=\varphi(T)=\mathcal{O}',$$ $$\hat\varphi:E'\to E,\qquad \hat\varphi(X,Y)=\left(\frac{Y^2}{4X^2},\ \frac{Y\bigl((a^2-4b)-X^2\bigr)}{8X^2}\right).$$ Then $\ker\varphi=\{\mathcal{O},T\}$, $\hat\varphi\varphi=[2]_E$, and $E''=(E')'\cong E$.

Why we care

This single map is the engine of descent by 2-isogeny (Lesson 57), the most hands-on rank computation available. It requires only one rational 2-torsion point and reduces the rank to counting squarefree divisors of $b$ and $a^2-4b$ that pass a local test. Everything about congruent numbers, and Fermat's descent, is this map.

Checking the composition
? a = 0; b = -1;                       \\ E: y^2 = x^3 - x
? E = ellinit([0,a,0,b,0]);
? [Ep, phi] = ellisogeny(E, [0,0]);
? Ep
%  [0, 0, 0, 4, 0]                     \\ E': y^2 = x^3 + 4x  (a'=-2a=0, b'=a^2-4b=4)
? Epc = ellinit(Ep);
? [Epp, psi] = ellisogeny(Epc, [0,0]);
? Epp                                   \\ should be isomorphic to E
%  [0, 0, 0, -16, 0]                    \\ = twist/scaling of y^2=x^3-x
? ellisomat(E)[2]                        \\ degrees in the isogeny class

$E''$ is $y^2=x^3-16x$, which is $E$ after $x\mapsto4x$, $y\mapsto8y$ — i.e. $\hat\varphi\varphi=[2]$ up to the identification.

Isogeny classes over $\mathbb{Q}$

By Mazur's isogeny theorem, a $\mathbb{Q}$-rational isogeny of prime degree $\ell$ between curves over $\mathbb{Q}$ has $$\ell\in\{2,3,5,7,11,13,17,19,37,43,67,163\}.$$ The last five occur for exactly one $j$-invariant each (all CM). So isogeny classes over $\mathbb{Q}$ are small — usually of size 1, 2, 3, 4, 6 or 8.

Exercises

2.27 Verify $\hat\varphi\circ\varphi=[2]$ for the 2-isogeny on $y^2=x^3-x$ at a specific point.

Solution

Take $E:y^2=x^3-x$ ($a=0,b=-1$) and a non-torsion point on a twist... $E$ itself has rank 0, so use $E:y^2=x^3-25x$ (congruent number 5) with $P=(-4,6)$.

? E = ellinit([0,0,0,-25,0]); P = [-4,6];
? ellisoncurve(E,P)
%  1
? [Ep, phi] = ellisogeny(E, [0,0]);
? Epc = ellinit(Ep);
? Q = ellisogenyapply(phi, P)
? [E2, psi] = ellisogeny(Epc, [0,0]);
? R = ellisogenyapply(psi, Q)
? \\ compare with 2P on E, after the identification E'' = E:
? ellmul(E, P, 2)

$R$ equals $2P$ up to the isomorphism $E''\cong E$ ($x\mapsto4x,y\mapsto8y$). Applying ellchangecurve with $[u,r,s,t]=[1/2,0,0,0]$ makes the comparison exact.

2.28 Find a curve over $\mathbb{Q}$ with a rational 37-isogeny.

Solution
? E = ellinit([0,0,1,-1,0]);          \\ 37a1, rank 1
? ellisomat(E)[2]
%  [1]                                 \\ no isogenies
? \\ the 37-isogeny curve is 1225h1:
? E = ellinit([1,1,1,-8,6]);
? M = ellisomat(E); M[2]
%  [1, 37; 37, 1]
? E.j

The two curves of conductor 1225 with a 37-isogeny have $j$-invariants $-9317$ and $-162677523113838677$. These are the only $j$-invariants over $\mathbb{Q}$ admitting a rational 37-isogeny (Mazur). Searching the LMFDB for "isogeny degree 37" confirms just one isogeny class of each conductor in a short list.

2.29 Prove $\deg[m]=m^2$ using the dual.

Solution

Take $\varphi=[m]$. Then $\hat{[m]}=[m]$ (a property in the theorem), so $[m]\circ[m]=[m^2]$ and $\deg$ is multiplicative: $$\deg[m]\cdot\deg[m]=\deg[m^2].$$ Also $[m]\circ\widehat{[m]}=[m\cdot?]$... cleaner: use that $\deg$ is a quadratic form on $\operatorname{End}(E)$ with $\deg(\alpha)=\alpha\hat\alpha$. For $\alpha=[m]$, $\hat\alpha=[m]$, so $\deg[m]=[m][m]=[m^2]$, which as an integer is $m^2$. ∎

Concretely this also matches $\#E[m]=m^2$ in characteristic 0, where $[m]$ is separable.

Silverman AEC III.§6, Thm. 6.1–6.2. Silverman–Tate Ch. III.§4 for the explicit 2-isogeny.
Endomorphism ring

$\operatorname{End}(E)=\{\text{isogenies }E\to E\}\cup\{0\}$, a ring under pointwise addition and composition. It always contains $\mathbb{Z}$ via $m\mapsto[m]$. $\operatorname{End}_K(E)$ denotes endomorphisms defined over $K$.

Classification

$\operatorname{End}(E)$ (over $\overline K$) is one of:

  • $\mathbb{Z}$;
  • an order in an imaginary quadratic field $\mathbb{Q}(\sqrt{-d})$ — the curve has complex multiplication (CM);
  • a maximal order in a definite quaternion algebra over $\mathbb{Q}$ — only in characteristic $p$, the supersingular case.

(An order in a number field $F$ is a subring that is a finitely generated $\mathbb{Z}$-module of full rank, e.g. $\mathbb{Z}[\sqrt{-5}]$ or $\mathbb{Z}[\frac{1+\sqrt{-7}}2]$.)

Over $\mathbb{C}$ this is transparent: $\operatorname{End}(\mathbb{C}/\Lambda)=\{\alpha\in\mathbb{C}:\alpha\Lambda\subseteq\Lambda\}$. Generically only integers preserve a lattice; occasionally $\Lambda$ has extra multiplicative symmetry, and then $\alpha$ satisfies a quadratic equation with negative discriminant.

The 13 CM $j$-invariants over $\mathbb{Q}$

A curve over $\mathbb{Q}$ has CM iff its $j$-invariant is one of $$0,\ 1728,\ -3375,\ 8000,\ 54000,\ 287496,\ -32768,\ -884736,\ -884736000,$$ $$16581375,\ -147197952000,\ -262537412640768000,\ \text{and } 2^45^3 11^3 = 1\,262\,000\;(\text{disc} -28).$$ These correspond to the imaginary quadratic orders of class number 1, with discriminants $-3,-4,-7,-8,-11,-12,-16,-19,-27,-28,-43,-67,-163$.

Why CM breaks rank sieves

For a CM curve with CM by an order in $\mathbb{Q}(\sqrt{-d})$: $$a_p=0 \iff p \text{ is inert in } \mathbb{Q}(\sqrt{-d}),$$ which happens for exactly half of all primes. So half the terms of the Mestre–Nagao sum vanish identically, and the sum's distribution is completely different from the non-CM case. A CM curve of rank 0 can score like a non-CM curve of positive rank, or vice versa. Rank searches must detect and exclude CM families. The test is cheap: check whether $j$ is in the list above, or check whether $a_p=0$ for suspiciously many small $p$.

Two theorems CM buys you
  • Coates–Wiles (1977). If $E/\mathbb{Q}$ has CM and $L(E,1)\ne0$ then $E(\mathbb{Q})$ is finite. The first theoretical evidence for BSD.
  • Deuring. Reduction mod $p$ of a CM curve is ordinary if $p$ splits in the CM field, supersingular if $p$ is inert.
Detecting CM
? E = ellinit([0,0,0,0,1]);        \\ j = 0
? ellcm(E)                          \\ CM discriminant, 0 if none
%  -3
? ellinit([0,0,0,-1,0]) . j
%  1728
? ellcm(ellinit([0,0,0,-1,0]))
%  -4
? ellcm(ellinit([0,0,0,-7,6]))
%  0                                \\ no CM
? \\ empirical test: how many a_p vanish?
? E = ellinit([0,0,0,0,1]);
? #select(p -> ellap(E,p)==0, primes([5,200])) / #primes([5,200]) * 1.0
%  0.5...                           \\ half: CM signature

Exercises

2.30 Exhibit the CM endomorphism of $y^2=x^3+Ax$ explicitly and verify it squares to $[-1]$.

Solution

Define $\iota(x,y)=(-x,\,iy)$ where $i^2=-1$. Check it lands on the curve: $(iy)^2=-y^2=-(x^3+Ax)=(-x)^3+A(-x)$ ✓.

$\iota^2(x,y)=\iota(-x,iy)=(x,\,i\cdot iy)=(x,-y)=[-1](x,y)$ ✓.

So $\mathbb{Z}[\iota]\cong\mathbb{Z}[i]\subseteq\operatorname{End}(E)$. Note $\iota$ is defined over $\mathbb{Q}(i)$, not $\mathbb{Q}$ — a general fact: CM endomorphisms of a curve over $\mathbb{Q}$ are never all rational, since $\operatorname{End}_\mathbb{Q}(E)=\mathbb{Z}$ for $E/\mathbb{Q}$.

2.31 Compare the Mestre–Nagao sum $\sum_{p\le X}a_p\log p/p$ for a CM rank-0 curve and a non-CM rank-0 curve. What goes wrong?

Solution
MN(E, X) = my(s = 0.0);
  forprime(p = 5, X, if(E.disc % p, s += ellap(E,p)*log(p)/p)); s;

? Ecm  = ellinit([0,0,0,0,1]);         \\ CM by Z[zeta_3], rank 0
? Encm = ellinit([0,0,1,-1,0]);        \\ 37a1 -- actually rank 1
? Er0  = ellinit([0,-1,1,0,0]);        \\ 11a3, rank 0, no CM
? [MN(Ecm,10000), MN(Er0,10000)]

The CM curve's sum is dominated by the half of primes with $a_p=0$ contributing nothing, and the surviving half has $a_p$ from a much thinner distribution. Its variance is halved and its behaviour under truncation is quite different, so the empirical threshold you calibrate on non-CM curves misfires. Since a rank sieve keeps the most negative few in $10^6$, a systematically shifted subpopulation floods the results with false positives. Fix: filter with ellcm(E) != 0 before scoring, or exclude CM $j$-invariants at family-design time.

2.32 Show $\operatorname{End}(E)$ has no zero divisors, hence is an integral domain.

Solution

If $\alpha,\beta\ne0$ then both are isogenies, hence surjective with finite kernel. So $\alpha\circ\beta$ is surjective, hence nonconstant, hence $\ne0$. ∎

Combined with $\deg$ being a positive-definite quadratic form and $\operatorname{End}(E)$ being a finitely generated $\mathbb{Z}$-module (torsion-free, of rank $\le4$), one gets the classification: rank 1 gives $\mathbb{Z}$, rank 2 an imaginary quadratic order, rank 4 a quaternion order. Rank 3 is impossible, and rank 2 with real quadratic is impossible because $\deg$ is positive definite.

Silverman AEC III.§9, V.§3. Silverman ATAEC Ch. II for the theory of CM. Cox, Primes of the Form $x^2+ny^2$, for the class-number-1 list.
$m$-torsion

$$E[m]=\{P\in E(\overline K):[m]P=\mathcal{O}\}=\ker[m],\qquad E_{\text{tors}}=\bigcup_{m\ge1}E[m].$$

Structure

Let $\operatorname{char}K=p$ (possibly 0).

  • If $p\nmid m$ (in particular always when $p=0$): $E[m]\cong\mathbb{Z}/m\mathbb{Z}\times\mathbb{Z}/m\mathbb{Z}$.
  • If $p\gt0$: either $E[p^e]\cong\mathbb{Z}/p^e\mathbb{Z}$ for all $e$ (ordinary) or $E[p^e]=\{\mathcal{O}\}$ for all $e$ (supersingular).

Proof for $p\nmid m$. $[m]$ is separable (its effect on the invariant differential is $[m]^*\omega=m\omega\ne0$), so $\#E[m]=\#\ker[m]=\deg[m]=m^2$. Also $E[m]$ is killed by $m$ and needs at most 2 generators (over $\mathbb{C}$ it is $\frac1m\Lambda/\Lambda$; in general because $E[\ell]$ for prime $\ell$ has order $\ell^2$ and is killed by $\ell$, so it is $(\mathbb{Z}/\ell)^2$). Hence $E[m]\cong(\mathbb{Z}/m)^2$. ∎

2-torsion, explicitly

$P=(x,y)$ satisfies $2P=\mathcal{O}$ iff $P=-P$ iff $2y+a_1x+a_3=0$. In short form: $y=0$. Hence $$E[2]=\{\mathcal{O}\}\cup\{(e_i,0):f(e_i)=0\},$$ with $e_1,e_2,e_3$ the roots of $x^3+Ax+B$. Over $\mathbb{Q}$:

Factorisation of $f$ over $\mathbb{Q}$$E(\mathbb{Q})[2]$
irreducibletrivial
one rational root$\mathbb{Z}/2\mathbb{Z}$
splits completely$(\mathbb{Z}/2\mathbb{Z})^2$
Why $E[2]$ drives everything

Descent by 2-isogeny needs one rational 2-torsion point (Lesson 57). Full 2-descent works regardless but is far easier when $f$ splits. And the rank formula $$\dim_{\mathbb{F}_2}\mathrm{Sel}^{(2)}=r+\dim_{\mathbb{F}_2}E(\mathbb{Q})[2]+\dim_{\mathbb{F}_2}\text{Ш}[2]$$ carries $\dim E(\mathbb{Q})[2]$ explicitly, so you always need to know it.

Torsion in PARI
? E = ellinit([0,0,0,-7,6]);          \\ x^3-7x+6 = (x-1)(x-2)(x+3)
? elltors(E)
%  [4, [2,2], [[1,0],[2,0]]]           \\ order 4, structure (Z/2)^2, generators
? factor(x^3 - 7*x + 6)
%  [x-1,1; x-2,1; x+3,1]
? apply(P -> ellorder(E,P), [[1,0],[2,0],[-3,0]])
%  [2, 2, 2]
? elltors(ellinit([0,0,0,0,1]))
%  [6, [6], [[2,3]]]                   \\ Z/6

Exercises

3.1 Find all $E:y^2=x^3+Ax$ with $(\mathbb{Z}/2)^2\subseteq E(\mathbb{Q})$.

Solution

$f(x)=x(x^2+A)$ splits over $\mathbb{Q}$ iff $-A$ is a square, say $A=-c^2$. Then $f=x(x-c)(x+c)$ and $E[2]=\{\mathcal{O},(0,0),(c,0),(-c,0)\}\subseteq E(\mathbb{Q})$.

? for(c=1,5, print(c, " ", elltors(ellinit([0,0,0,-c^2,0]))[2]))
1 [2, 2]
2 [2, 2]
3 [2, 2]
4 [2, 2]
5 [2, 2]

These are exactly the congruent-number curves $y^2=x^3-n^2x$! Every one has full rational 2-torsion, which is why descent by 2-isogeny works so smoothly on the congruent number problem.

3.2 Show that $E[m]\cong(\mathbb{Z}/m)^2$ forces $\mu_m\subseteq K$ if $E[m]\subseteq E(K)$. (Anticipates the Weil pairing.)

Solution

The Weil pairing $e_m:E[m]\times E[m]\to\mu_m$ is nondegenerate and Galois-equivariant. If all of $E[m]$ is $K$-rational then for $\sigma\in G_K$ and any $P,Q\in E[m]$, $$\sigma\bigl(e_m(P,Q)\bigr)=e_m(\sigma P,\sigma Q)=e_m(P,Q),$$ so $e_m(P,Q)\in K$. Nondegeneracy means $e_m$ is surjective onto $\mu_m$, so $\mu_m\subseteq K$. ∎

Consequence for $K=\mathbb{Q}$: $\mu_m\subseteq\mathbb{Q}$ only for $m=1,2$. So a curve over $\mathbb{Q}$ can have full $m$-torsion rational only for $m\le2$ — a first, cheap constraint towards Mazur.

3.3 Use division polynomials to find all rational 5-torsion on $y^2+y=x^3-x^2$ (curve 11a3).

Solution
? E = ellinit([0,-1,1,0,0]);
? p5 = elldivpol(E, 5);
? poldegree(p5)
%  12                            \\ = (25-1)/2
? polrootsQ(p5)
%  [0, 1]
? \\ lift to points:
? elltors(E)
%  [5, [5], [[0,0]]]
? ellorder(E, [0,0])
%  5
? [ellmul(E,[0,0],k) | k <- [1..5]]

$x=0$ and $x=1$ give the four points of order 5: $(0,0),(0,-1),(1,0),(1,-1)$. Together with $\mathcal{O}$ they form $\mathbb{Z}/5\mathbb{Z}$. Conductor 11 is the smallest conductor over $\mathbb{Q}$, and this curve realises the largest prime torsion allowed by Mazur below 7.

Silverman AEC III.§4, Cor. 6.4.
Weil pairing

For $m$ prime to $\operatorname{char}K$ there is a map $$e_m:E[m]\times E[m]\longrightarrow\mu_m\subset\overline K^\times$$ which is:

  • bilinear: $e_m(P_1+P_2,Q)=e_m(P_1,Q)e_m(P_2,Q)$ and similarly in $Q$;
  • alternating: $e_m(P,P)=1$, hence $e_m(Q,P)=e_m(P,Q)^{-1}$;
  • nondegenerate: if $e_m(P,Q)=1$ for all $Q$ then $P=\mathcal{O}$;
  • Galois-equivariant: $e_m(\sigma P,\sigma Q)=\sigma\bigl(e_m(P,Q)\bigr)$ for $\sigma\in G_K$;
  • compatible with isogenies: $e_m(\varphi P,Q)=e_m(P,\hat\varphi Q)$.

Construction

Let $T\in E[m]$. The divisor $m(T)-m(\mathcal{O})$ has degree 0 and sums to $mT-m\mathcal{O}=\mathcal{O}$ in the group, so it is principal: $m(T)-m(\mathcal{O})=\operatorname{div}(f_T)$ for some $f_T$. Also, choosing $T'$ with $mT'=T$, the divisor $\sum_{R\in E[m]}\bigl((T'+R)-(R)\bigr)$ is principal, $=\operatorname{div}(g_T)$, and one checks $g_T^m=f_T\circ[m]$ up to constant.

Now for $S\in E[m]$, $$\frac{g_T(X+S)}{g_T(X)}$$ has $m$-th power equal to $\frac{f_T([m]X+[m]S)}{f_T([m]X)}=1$, so it is a constant $m$-th root of unity. Define $e_m(S,T)$ to be that constant.

Three consequences we use
  1. Determinant of the Galois representation. Equivariance forces $\det\bar\rho_{E,m}=\chi_{\text{cyc}}$, the mod-$m$ cyclotomic character. Hence $\det\bar\rho_{E,m}(\operatorname{Frob}_p)\equiv p$, matching Lesson 35.
  2. Torsion field bounds. $K(E[m])\supseteq K(\mu_m)$, giving the $\mathbb{Q}$-torsion constraint of Exercise 3.2.
  3. Descent bookkeeping. The adjointness $e_m(\varphi P,Q)=e_m(P,\hat\varphi Q)$ is what makes the isogeny descent exact sequences of Lesson 57 dualise correctly, and it underlies the Cassels pairing on Ш.
Miller's algorithm

Evaluating $e_m$ efficiently is Miller's algorithm: build $f_T$ by a double-and-add recursion, accumulating line functions. It runs in $O(\log m)$ curve operations and is the foundation of all pairing-based cryptography. PARI: ellweilpairing(E, P, Q, m).

Computing pairings
? E = ellinit([0,0,0,-1,0], 13);       \\ over F_13
? ellcard(E)
%  20
? T = elltors(ellinit([0,0,0,-1,0]))[3];   \\ rational 2-torsion
? \\ over F_13 pick 2-torsion points:
? P = [0,0]; Q = [1,0];
? ellweilpairing(E, P, Q, 2)
%  Mod(12, 13)                          \\ = -1, a primitive 2nd root of unity
? ellweilpairing(E, P, P, 2)
%  Mod(1, 13)                           \\ alternating

Exercises

3.4 Deduce $\det\bar\rho_{E,m}=\chi_{\text{cyc}}$ from Galois equivariance.

Solution

Pick a basis $P,Q$ of $E[m]$, so $\sigma P=aP+cQ$, $\sigma Q=bP+dQ$ with $\bar\rho(\sigma)=\begin{pmatrix}a&b\\c&d\end{pmatrix}$. Set $\zeta=e_m(P,Q)$, a primitive $m$-th root of unity by nondegeneracy. Then by bilinearity and alternation, $$e_m(\sigma P,\sigma Q)=e_m(aP+cQ,\ bP+dQ)=e_m(P,Q)^{ad}e_m(Q,P)^{cb}=\zeta^{ad-bc}=\zeta^{\det\bar\rho(\sigma)}.$$ Equivariance says this equals $\sigma(\zeta)=\zeta^{\chi_{\text{cyc}}(\sigma)}$. Since $\zeta$ is primitive, $\det\bar\rho(\sigma)\equiv\chi_{\text{cyc}}(\sigma)\pmod m$. ∎

3.5 Show that if $E/\mathbb{Q}$ has a rational point of order 3, then $\mathbb{Q}(E[3])$ contains $\mathbb{Q}(\sqrt{-3})$.

Solution

By the Weil pairing, $\mathbb{Q}(E[3])\supseteq\mathbb{Q}(\mu_3)=\mathbb{Q}(\zeta_3)=\mathbb{Q}(\sqrt{-3})$ — this holds whether or not there is a rational 3-torsion point, since $E[3]$ generates $\mu_3$ under the pairing. ✓

Consequently $[\mathbb{Q}(E[3]):\mathbb{Q}]$ is even, and $\bar\rho_{E,3}$ cannot have image in $\mathrm{SL}_2(\mathbb{F}_3)$ — the determinant is the surjective cyclotomic character.

3.6 Compute the Weil pairing on the full 3-torsion of $y^2=x^3+1$ over $\mathbb{F}_7$ and verify nondegeneracy.

Solution
? E = ellinit([0,0,0,0,1], 7);
? ellcard(E)
%  12
? ellgroup(E, 1)
%  [12, [6,2], [g1, g2]]
? \\ 3-torsion: multiply generators to get order-3 elements
? G = ellgroup(E,1)[3];
? P = ellmul(E, G[1], 2);    \\ order 3 if g1 has order 6
? ellorder(E, P)
%  3
? \\ need a second independent 3-torsion point; E[3] may not be rational over F_7
? ellweilpairing(E, P, P, 3)
%  Mod(1, 7)

Over $\mathbb{F}_7$, $\mu_3\subset\mathbb{F}_7$ since $3\mid6=\#\mathbb{F}_7^\times$, so full 3-torsion can be rational; from the group structure $\mathbb{Z}/6\times\mathbb{Z}/2$ we see $E(\mathbb{F}_7)[3]\cong\mathbb{Z}/3$ only, so the second 3-torsion generator lives over $\mathbb{F}_{49}$. Pairing $P$ with a point of $E[3]$ over $\mathbb{F}_{49}$ gives a primitive cube root of unity, confirming nondegeneracy.

Silverman AEC III.§8, Prop. 8.1. Miller, The Weil pairing and its efficient calculation, J. Cryptology 17 (2004).

This lesson supplies the language in which descent and modularity are both stated.

$G_\mathbb{Q}=\operatorname{Gal}(\overline{\mathbb{Q}}/\mathbb{Q})$ acts on $E(\overline{\mathbb{Q}})$ coordinatewise. Because the group law is given by rational functions with coefficients in $\mathbb{Q}$, this action is by group automorphisms, and it preserves $E[m]$.

Mod-$m$ representation

Choosing a $\mathbb{Z}/m$-basis of $E[m]\cong(\mathbb{Z}/m)^2$ gives $$\bar\rho_{E,m}:G_\mathbb{Q}\longrightarrow\operatorname{GL}_2(\mathbb{Z}/m\mathbb{Z}),$$ well defined up to conjugation. Its kernel cuts out the field $\mathbb{Q}(E[m])$, so $\operatorname{Gal}(\mathbb{Q}(E[m])/\mathbb{Q})\hookrightarrow\operatorname{GL}_2(\mathbb{Z}/m)$.

Tate module and $\ell$-adic representation

$$T_\ell E=\varprojlim_n E[\ell^n]\cong\mathbb{Z}_\ell^2,\qquad V_\ell E=T_\ell E\otimes_{\mathbb{Z}_\ell}\mathbb{Q}_\ell,$$ with transition maps $[\ell]:E[\ell^{n+1}]\to E[\ell^n]$. This gives $\rho_{E,\ell}:G_\mathbb{Q}\to\operatorname{GL}_2(\mathbb{Z}_\ell)$.

Frobenius and $a_p$

For $p\nmid m\Delta$ (so $E$ has good reduction and $p\nmid m$), $\bar\rho_{E,m}$ is unramified at $p$ and $$\operatorname{tr}\bar\rho_{E,m}(\operatorname{Frob}_p)\equiv a_p\ (\bmod\ m),\qquad \det\bar\rho_{E,m}(\operatorname{Frob}_p)\equiv p\ (\bmod\ m).$$ So the characteristic polynomial of $\operatorname{Frob}_p$ is $X^2-a_pX+p$ — exactly the characteristic polynomial of the geometric Frobenius from Lesson 27.

Why this identification matters

It places elliptic curves inside the general framework of 2-dimensional Galois representations. Modularity (Lesson 70) is the statement that $\rho_{E,\ell}$ arises from a weight-2 modular form; Serre's conjecture, Fermat's Last Theorem and much of modern number theory live here. For our purposes the payoff is that $L(E,s)$ has analytic continuation, which is what makes conditional rank bounds possible at all.

Serre's open image theorem, 1972

If $E/\mathbb{Q}$ has no CM then $\bar\rho_{E,\ell}$ is surjective onto $\operatorname{GL}_2(\mathbb{F}_\ell)$ for all but finitely many $\ell$, and $\rho_{E,\ell}$ has open image in $\operatorname{GL}_2(\mathbb{Z}_\ell)$ for all $\ell$. For CM curves the image is contained in the normaliser of a Cartan subgroup — much smaller.

Computing the image
? E = ellinit([0,0,1,-1,0]);          \\ 37a1
? \\ the mod-l representation's image, via the l-division field:
? f3 = elldivpol(E, 3); polgalois(f3)   \\ Galois group of the 3-division poly
? \\ nonsurjective primes (needs a helper; Sage has E.galois_representation())
? \\ quick check: for surjective mod-l, a_p mod l should hit all traces
? l = 5; Set([ellap(E,p) % l | p <- primes([7,500])])
%  [0, 1, 2, 3, 4]                     \\ all residues: consistent with surjectivity

The sequence that becomes descent

The short exact sequence of $G_\mathbb{Q}$-modules $$0\longrightarrow E[m]\longrightarrow E(\overline{\mathbb{Q}})\xrightarrow{\ [m]\ }E(\overline{\mathbb{Q}})\longrightarrow0$$ (surjectivity because $\overline{\mathbb{Q}}$ is algebraically closed) is the entire content of Phase 5. Taking Galois cohomology of it produces the descent map and the Selmer group.

Exercises

3.7 For $E:y^2=x^3-x$, compute the image of $\bar\rho_{E,2}$ and explain why it is not surjective.

Solution

$E[2]$ has all three nontrivial points rational ($x=0,\pm1$), so $G_\mathbb{Q}$ acts trivially: $\bar\rho_{E,2}$ is the trivial representation, image $\{I\}$, far from $\operatorname{GL}_2(\mathbb{F}_2)\cong S_3$.

In general $\operatorname{im}\bar\rho_{E,2}\cong\operatorname{Gal}$ of the splitting field of the cubic $f$: trivial if $f$ splits, $\mathbb{Z}/2$ if $f$ has exactly one rational root, $\mathbb{Z}/3$ if $f$ is irreducible with square discriminant, and $S_3$ (surjective) if $f$ is irreducible with non-square discriminant.

? polgalois(x^3 - x)          \\ splits: trivial
? polgalois(x^3 - x - 1)      \\ [6,-1,1,"S3"]: surjective mod 2
? issquare(poldisc(x^3-x-1))
%  0

3.8 Show that $\operatorname{tr}\bar\rho_{E,m}(\operatorname{Frob}_p)\equiv a_p$ follows from Lesson 27.

Solution

For $p$ of good reduction and $p\nmid m$, reduction gives a $G_{\mathbb{Q}_p}$-equivariant isomorphism $E[m]\cong\tilde E[m]$ (injectivity from the formal group, Lesson 37; surjectivity by counting, both have $m^2$ elements). The Frobenius element acts on $\tilde E[m]$ as the geometric Frobenius $\phi$, which by Lesson 27 satisfies $\phi^2-a_p\phi+p=0$. So the matrix of $\operatorname{Frob}_p$ on $E[m]$ satisfies the same equation mod $m$, giving trace $a_p$ and determinant $p$. ∎

3.9 Use the trace identity to compute $a_p\bmod3$ for $y^2=x^3+1$ from the 3-division polynomial.

Solution

$\psi_3=3x^4+12x=3x(x^3+4)$. Its rational root $x=0$ gives the rational 3-torsion $(0,\pm1)$, so $\bar\rho_{E,3}$ has a fixed vector: the matrix is $\begin{pmatrix}1&*\\0&\chi(p)\end{pmatrix}$ with $\det\equiv p$. Hence $$a_p\equiv 1+p\pmod3.$$

? E = ellinit([0,0,0,0,1]);
? for(i=3,15, my(p=prime(i)); print(p, " ", ellap(E,p)%3, " ", (1+p)%3))
5 0 0
7 2 2
11 0 0
13 2 2
...

✓ This is the general principle: a rational $\ell$-torsion point makes $\bar\rho_{E,\ell}$ reducible, giving a congruence $a_p\equiv1+p\pmod\ell$ — the source of Mazur's Eisenstein-ideal argument.

Silverman AEC III.§7. Serre, Propriétés galoisiennes des points d'ordre fini des courbes elliptiques, Invent. Math. 15 (1972).

We now specialise to $E/\mathbb{Q}$ and study it through its reductions, which is how all computation proceeds.

Fix a minimal Weierstrass model with $a_i\in\mathbb{Z}$. Reducing coefficients mod $p$ gives a curve $\tilde E/\mathbb{F}_p$, possibly singular. Reduction of points: write $P=[X:Y:Z]$ with $X,Y,Z\in\mathbb{Z}$ coprime, and set $\tilde P=[\tilde X:\tilde Y:\tilde Z]$.

Reduction filtration

Over $\mathbb{Q}_p$ define $$E_0(\mathbb{Q}_p)=\{P:\tilde P\in\tilde E^{\text{ns}}(\mathbb{F}_p)\},\qquad E_1(\mathbb{Q}_p)=\{P:\tilde P=\tilde{\mathcal{O}}\}.$$ These are subgroups with $$0\to E_1(\mathbb{Q}_p)\to E_0(\mathbb{Q}_p)\to\tilde E^{\text{ns}}(\mathbb{F}_p)\to0,$$ and $E(\mathbb{Q}_p)/E_0(\mathbb{Q}_p)$ is finite of order $c_p$, the Tamagawa number.

Formal group

Set $z=-x/y$ and $w=-1/y$ near $\mathcal{O}$. The Weierstrass equation becomes $w=z^3+a_1zw+a_2z^2w+\cdots$, which can be solved recursively for $w$ as a power series in $z$ with $\mathbb{Z}[a_i]$ coefficients. The group law then becomes a formal power series $$F(z_1,z_2)=z_1+z_2-a_1z_1z_2-a_2(z_1^2z_2+z_1z_2^2)+\cdots\in\mathbb{Z}[a_i][[z_1,z_2]],$$ the formal group $\hat E$. For any complete local ring with maximal ideal $\mathfrak{m}$, $\hat E(\mathfrak m)$ is $\mathfrak m$ with the group law $F$.

Kernel of reduction

$E_1(\mathbb{Q}_p)\cong\hat E(p\mathbb{Z}_p)$ via $P\mapsto z(P)=-x(P)/y(P)$. And for $p\ge3$ (more precisely whenever $p\gt e+1$ with $e$ the ramification index, so always for $\mathbb{Q}_p$ with $p\ge3$), $\hat E(p\mathbb{Z}_p)$ is torsion-free — in fact isomorphic to $(\mathbb{Z}_p,+)$ via the formal logarithm.

Reduction is injective on torsion

For $p\ge3$ of good reduction, $$E(\mathbb{Q})_{\text{tors}}\hookrightarrow\tilde E(\mathbb{F}_p).$$ Proof: the kernel of reduction restricted to torsion is $E_1(\mathbb{Q}_p)_{\text{tors}}=\hat E(p\mathbb{Z}_p)_{\text{tors}}=0$.

Algorithmic payoff: $\#E(\mathbb{Q})_{\text{tors}}$ divides $\gcd_p\#\tilde E(\mathbb{F}_p)$ over good $p\ge3$. Two or three primes usually pin it down.

The rank is not detected this way

Reduction is wildly non-injective on the free part — $E(\mathbb{Q})$ is infinite and $\tilde E(\mathbb{F}_p)$ is finite. That failure is exactly what makes rank hard. But the relation lattices $L_p$ from Lesson 29 still constrain the free part, and intersecting them over many $p$ can prove independence (Lesson 90).

Torsion by gcd
? E = ellinit([0,0,0,0,-2]);          \\ y^2 = x^3 - 2
? g = 0;
? forprime(p=5, 50, if(E.disc % p, g = gcd(g, p+1-ellap(E,p))));
? g
%  1
? elltors(E)
%  [1, [], []]                        \\ trivial torsion, confirmed
? \\ so (3,5) has infinite order:
? ellorder(E, [3,5])
%  0

Exercises

3.10 Show $\#E(\mathbb{Q})_{\text{tors}}$ divides $\gcd$ of $\#\tilde E(\mathbb{F}_p)$ for $y^2=x^3+1$ using $p=5,7,11$, and compare with the true torsion.

Solution

From Lesson 0 Exercise 0.4: $\#\tilde E(\mathbb{F}_5)=6$, $\#\tilde E(\mathbb{F}_7)=12$, $\#\tilde E(\mathbb{F}_{11})=12$. $\gcd(6,12,12)=6$.

? elltors(ellinit([0,0,0,0,1]))
%  [6, [6], [[2, 3]]]

Torsion is exactly $\mathbb{Z}/6$, matching the bound with equality. Note that adding more primes cannot reduce the bound below 6, since $6\mid\#\tilde E(\mathbb{F}_p)$ for every good $p$ — the rational 6-torsion forces it.

3.11 Compute the first terms of the formal group law for $y^2=x^3+Ax+B$.

Solution

With $a_1=a_2=a_3=0$, $a_4=A$, $a_6=B$: the relation $w=z^3+Az^5w^2+Bz^6w^3+\cdots$ solves to $$w(z)=z^3+Az^7+Bz^9+O(z^{11}).$$ The formal group law starts $$F(z_1,z_2)=z_1+z_2-2A(z_1^4z_2+z_1z_2^4)-\cdots$$ (no quadratic or cubic terms since $a_1=a_2=0$).

? \ps 12
? E = ellinit([0,0,0,3,5]);
? ellformalw(E)                \\ w as a series in z
? ellformaladd(E)              \\ the formal group law F(z1,z2)
? ellformallog(E)              \\ the formal logarithm

3.12 Explain why the injectivity of reduction on torsion can fail at $p=2$.

Solution

The formal group $\hat E(2\mathbb{Z}_2)$ can have 2-torsion. The formal logarithm $\log_{\hat E}(z)=z+\sum_{n\ge2}\frac{c_n}{n}z^n$ has denominators; it converges and is an isomorphism onto $(p\mathbb{Z}_p,+)$ only when $p\gt2$ (more generally $v(p)\lt p-1$). At $p=2$ the argument breaks and $\hat E(2\mathbb{Z}_2)$ may contain a point of order 2.

? E = ellinit([0,0,0,-1,0]);       \\ full 2-torsion
? \\ mod 2 the curve is singular (Delta = 64), so this is not a good prime anyway.
? \\ try a curve with good reduction at 2:
? F = ellinit([0,0,1,-1,0]);        \\ 37a1, Delta = 37
? ellcard(ellinit([0,0,1,-1,0], 2))
%  5
? elltors(F)
%  [1, [], []]

Here it happens to work, but the theorem is only guaranteed for $p\ge3$, so a careful implementation of "torsion by gcd" skips $p=2$ — as PARI's does.

Silverman AEC IV.§1–3 (formal groups) and VII.§2–3 (reduction), Prop. 3.1.
Reduction types

Fix the minimal model. $E$ has at $p$:

  • good reduction if $p\nmid\Delta$; then $\tilde E$ is smooth;
  • multiplicative reduction if $p\mid\Delta$ but $p\nmid c_4$; $\tilde E$ has a node. It is split if the two tangent slopes at the node lie in $\mathbb{F}_p$, non-split otherwise;
  • additive reduction if $p\mid\Delta$ and $p\mid c_4$; $\tilde E$ has a cusp.

$E$ is semistable at $p$ if the reduction is good or multiplicative, and semistable if this holds at every $p$.

The names come from the group of smooth points (Lesson 12): $$\tilde E^{\text{ns}}(\mathbb{F}_p)\cong\begin{cases}\mathbb{F}_p^\times&\text{split multiplicative, order }p-1,\\ \ker\bigl(N:\mathbb{F}_{p^2}^\times\to\mathbb{F}_p^\times\bigr)&\text{non-split, order }p+1,\\ \mathbb{F}_p^+&\text{additive, order }p.\end{cases}$$ which gives $a_p=1,-1,0$ respectively.

Additive reduction is not intrinsic

Additive reduction can always be removed by a quadratic (or higher) twist over an extension: $E$ acquires good or multiplicative reduction over a ramified extension. This is the semistable reduction theorem. Consequently additive primes are "less serious" arithmetically than they look — but they still cost you: the conductor exponent is $\ge2$ there, and every conditional rank bound scales with $\log N$.

Néron model

The Néron model $\mathcal{E}/\mathbb{Z}_p$ is the smooth group scheme over $\mathbb{Z}_p$ with generic fibre $E/\mathbb{Q}_p$ that is universal for smooth $\mathbb{Z}_p$-schemes: $\mathcal{E}(\mathbb{Z}_p)=E(\mathbb{Q}_p)$. Its special fibre $\mathcal{E}_s$ may be disconnected; its identity component $\mathcal{E}_s^0$ corresponds to $E_0(\mathbb{Q}_p)$, and the component group is $$\Phi_p=\mathcal{E}_s/\mathcal{E}_s^0,\qquad c_p:=\#\Phi_p(\mathbb{F}_p).$$

So $c_p$, the Tamagawa number, is the index $[E(\mathbb{Q}_p):E_0(\mathbb{Q}_p)]$. It appears as a factor in the strong BSD formula (Lesson 74).

Local data
? E = ellminimalmodel(ellinit([0,0,0,-7,6]));
? E.disc
%  246016 = 2^10 * 241
? factor(E.disc)
? elllocalred(E, 2)
%  [10, -1, [1,0,0,0], 4]     \\ [f_p, Kodaira code, change of vars, c_p]
? elllocalred(E, 241)
? ellglobalred(E)
%  [N, v, prod c_p, ...]
? \\ classify:
? for(i=1,3, my(p=factor(E.disc)[i,1]);
    print(p, "  f=", elllocalred(E,p)[1], "  c=", elllocalred(E,p)[4],
          "  c4 div? ", E.c4 % p == 0))

Exercises

3.13 Determine the reduction type of $y^2+y=x^3-x^2-10x-20$ at 11.

Solution
? E = ellinit([0,-1,1,-10,-20]);
? E.disc
%  -161051
? factor(-161051)
%  [-1,1; 11,5]
? E.c4
%  496
? 496 % 11
%  1                       \\ nonzero: multiplicative
? elllocalred(E, 11)
%  [1, 5, [1,0,0,0], 5]     \\ f=1, type I_5, c_11 = 5
? ellrootno(E, 11)
%  -1                       \\ local root number -1: split multiplicative

$v_{11}(\Delta)=5$, $11\nmid c_4$, so multiplicative reduction of type $\mathrm{I}_5$. Since $c_{11}=5=n$, it is split multiplicative (for non-split $\mathrm{I}_n$, $c_p\in\{1,2\}$). Hence $a_{11}=1$.

3.14 Find a curve with additive reduction at 3 and verify $a_3=0$.

Solution
? E = ellminimalmodel(ellinit([0,0,0,0,1]));      \\ y^2 = x^3 + 1
? E.disc
%  -432 = -2^4 * 3^3
? [E.c4 % 3, E.disc % 3]
%  [0, 0]                   \\ both divisible: additive
? elllocalred(E,3)
%  [3, 3, [...], 1]          \\ f_3 = 3, Kodaira code 3 = type III? 
? ellap(E, 3)
%  0

$c_4=0$ for this curve ($j=0$), so $3\mid c_4$ trivially: additive reduction at both 2 and 3. $a_3=0$ ✓, consistent with the additive rule. Note $f_3=3\gt2$, indicating wild ramification at 3 — expected since $3$ is a small prime and the curve has $j=0$.

3.15 Show that a twist can turn additive into good reduction. Take $y^2=x^3-4$ and twist appropriately.

Solution
? E = ellinit([0,0,0,0,-4]);
? ellglobalred(E)[1]
%  1728 = 2^6 * 3^3
? elllocalred(E,2)[1], elllocalred(E,3)[1]     \\ conductor exponents
? \\ sextic twist by 2 (since j=0):
? F = ellminimalmodel(ellinit([0,0,0,0,-4*2^3]));  
? ellglobalred(F)[1]

Twisting a $j=0$ curve $y^2=x^3+B$ by $d$ sends $B\mapsto dB$ (a sextic twist). Choosing $d$ to make $B$ a perfect sixth power times a unit reduces the conductor. In general the semistable reduction theorem guarantees good/multiplicative reduction after a finite extension; over $\mathbb{Q}$ itself one can often only reduce the conductor exponent, not eliminate it. The clean statement is: additive reduction at $p\ge5$ always becomes good or multiplicative over a ramified quadratic extension of $\mathbb{Q}_p$.

Silverman AEC VII.§5–7. Silverman ATAEC IV for Néron models. Bosch–Lütkebohmert–Raynaud, Néron Models, for the full theory.

Bad reduction has finer structure than node-versus-cusp: the special fibre of the minimal regular model (a blow-up of the Weierstrass model) is a configuration of curves, and Kodaira classified the possibilities.

Kodaira symbols

$$\mathrm{I}_0,\quad \mathrm{I}_n\ (n\ge1),\quad \mathrm{II},\ \mathrm{III},\ \mathrm{IV},\quad \mathrm{I}_0^*,\ \mathrm{I}_n^*\ (n\ge1),\quad \mathrm{IV}^*,\ \mathrm{III}^*,\ \mathrm{II}^*.$$ $\mathrm{I}_0$ is good reduction; $\mathrm{I}_n$ ($n\ge1$) is multiplicative; all starred types and $\mathrm{II},\mathrm{III},\mathrm{IV}$ are additive.

Two numbers attached to each type will recur:

TypePARI code$m_v$$c_p$$v(\Delta)$$f_p$
$\mathrm{I}_0$11100
$\mathrm{I}_n$ split$4+n$$n$$n$$n$1
$\mathrm{I}_n$ non-split$4+n$$n$$\gcd(n,2)$$n$1
$\mathrm{II}$21122
$\mathrm{III}$32232
$\mathrm{IV}$431 or 342
$\mathrm{I}_0^*$$-1$51, 2 or 462
$\mathrm{I}_n^*$$-4-n$$n+5$2 or 4$6+n$2
$\mathrm{IV}^*$$-4$71 or 382
$\mathrm{III}^*$$-3$8292
$\mathrm{II}^*$$-2$91102

(The $f_p$ column is for $p\ge5$; at $p=2,3$ wild ramification adds $\delta_p\ge0$.)

Tate's algorithm

A mechanical procedure taking $E/\mathbb{Q}_p$ to: the minimal model, the Kodaira type, $c_p$, and the conductor exponent $f_p$. Roughly eleven steps of the form "is this coefficient divisible by $p$? If so, translate $(x,y)$ and repeat." It always terminates. Implemented as elllocalred in PARI, E.local_data(p) in Sage.

Where $m_v$ reappears

The Shioda–Tate formula (Lesson 80) for an elliptic surface reads $$\operatorname{rank}\mathcal{E}(\overline k(t))=\rho(S)-2-\sum_v(m_v-1).$$ So each reducible bad fibre eats rank. A $\mathrm{II}^*$ fibre costs 8, an $\mathrm{I}_2$ fibre costs 1, and an $\mathrm{I}_1$ or $\mathrm{II}$ fibre costs nothing. This is the single most important design constraint when constructing high-rank families: keep the discriminant squarefree.

Reading Tate's algorithm output
kodaira(code) = if(code == 1, "I0",
                if(code == 2, "II", if(code == 3, "III", if(code == 4, "IV",
                if(code > 4, concat("I", code-4),
                if(code == -1, "I0*", if(code == -2, "II*",
                if(code == -3, "III*", if(code == -4, "IV*",
                concat(concat("I", -code-4), "*"))))))))));

? E = ellminimalmodel(ellinit([0,0,0,-7,6]));
? fordiv(ellglobalred(E)[1], d, if(isprime(d),
    my(L = elllocalred(E,d));
    print(d, "  ", kodaira(L[2]), "  c=", L[4], "  f=", L[1])))

Exercises

3.16 Find a curve with a $\mathrm{II}^*$ fibre and compute how much rank it would cost on a surface.

Solution
? \\ search small curves for Kodaira type II* (code -2)
? for(a=-5,5, for(b=-5,5,
    if(4*a^3+27*b^2,
      my(E = ellminimalmodel(ellinit([0,0,0,a,b])));
      fordiv(ellglobalred(E)[1], d, if(isprime(d),
        if(elllocalred(E,d)[2] == -2,
           print([a,b], " at p=", d)))))));

$y^2=x^3+1$ at $p=2$: $v_2(\Delta)=4$... let us take a cleaner one. $y^2 = x^3 + p^5$ for $p\ge5$ gives $v_p(\Delta)=10$ and type $\mathrm{II}^*$. Then $m_v=9$, so on an elliptic surface such a fibre contributes $m_v-1=8$ to the Shioda–Tate sum — the entire rank budget of a rational elliptic surface ($\rho=10$, budget $10-2=8$). A single $\mathrm{II}^*$ fibre forces generic rank 0.

3.17 Verify $c_p=n$ for split $\mathrm{I}_n$ on the conductor-11 curve, and check $\prod c_p$ against ellglobalred.

Solution
? E = ellinit([0,-1,1,-10,-20]);
? elllocalred(E,11)
%  [1, 5, [1,0,0,0], 5]
? ellglobalred(E)
%  [11, [1,0,0,0], 5]        \\ third entry is the product of Tamagawa numbers
? valuation(E.disc, 11)
%  5

Type $\mathrm{I}_5$, $c_{11}=5=v_{11}(\Delta)$ ✓, and the global Tamagawa product is 5 since 11 is the only bad prime.

Cross-check with BSD: for this curve $L(E,1)=\Omega\cdot\frac{\#\text{Ш}\cdot\prod c_p}{(\#E(\mathbb{Q})_{\text{tors}})^2}=\Omega\cdot\frac{1\cdot5}{25}=\Omega/5$. Confirm with elllseries(E,1)/E.omega[1].

3.18 Write a GP function that, given $E$, returns the multiset $\{m_v\}$ over all bad primes.

Solution
mvals(E) =
{ my(N = ellglobalred(E)[1], res = List());
  fordiv(N, d, if(isprime(d),
    my(c = elllocalred(E,d)[2], m);
    m = if(c == 1, 1,
        if(c == 2, 1, if(c == 3, 2, if(c == 4, 3,
        if(c > 4, c - 4,
        if(c == -1, 5, if(c == -2, 9, if(c == -3, 8,
        if(c == -4, 7, -c - 4 + 5)))))))));
    listput(res, [d, m])));
  Vec(res);
}

? mvals(ellminimalmodel(ellinit([0,0,0,-7,6])))

The Shioda–Tate cost is then vecsum(apply(t->t[2]-1, mvals(E))). On a rational elliptic surface, generic rank $=8$ minus this sum.

Silverman ATAEC IV.§9 (Tate's algorithm in full, Table 4.1). Tate, Algorithm for determining the type of a singular fiber in an elliptic pencil, in Modular Functions of One Variable IV, LNM 476 (1975).
Conductor

$$N=\prod_p p^{f_p},\qquad f_p=\begin{cases}0&\text{good reduction},\\ 1&\text{multiplicative},\\ 2&\text{additive},\ p\ge5,\\ 2+\delta_p&\text{additive},\ p=2,3,\end{cases}$$ with $0\le\delta_2\le6$ and $0\le\delta_3\le3$ measuring wild ramification. Hence $f_2\le8$ and $f_3\le5$.

The conceptual definition: $f_p=\epsilon_p+\delta_p$ where $\epsilon_p=\dim V_\ell E-\dim(V_\ell E)^{I_p}$ measures how much of the Galois representation is killed by the inertia group $I_p$, and $\delta_p$ is the Swan conductor. Additive reduction kills both dimensions ($\epsilon=2$), multiplicative kills one ($\epsilon=1$), good kills none.

$N$ versus $\Delta$
  • $N\mid\Delta$ and they have the same prime divisors.
  • $N$ is much smaller: for $\mathrm{I}_n$ reduction, $v_p(\Delta)=n$ while $f_p=1$.
  • $N$ is an isogeny invariant; $\Delta$ is not.
  • $E$ is semistable iff $N$ is squarefree.
Why the conductor governs feasibility

Almost every analytic method scales with $N$:

  • Computing $L(E,1)$ needs $\sim\sqrt N$ coefficients $a_n$ (Lesson 73). For $N$ with 100 digits, hopeless.
  • Mestre's and Bober's conditional rank bounds are roughly proportional to $\log N$ (Lesson 76). Large $N$ means a weak bound.
  • Descent needs class groups of fields whose discriminants are controlled by $\Delta$, hence indirectly by $N$ — and record curves are far out of reach.

This is why the 2026 rank-30 curve gets an upper bound of 31 rather than 30 directly, and needs the parity trick to close the gap.

Conductors
? E = ellinit([0,-1,1,-10,-20]);
? ellglobalred(E)[1]
%  11                          \\ smallest conductor over Q
? factor(E.disc)
%  [-1,1; 11,5]                \\ same primes, bigger exponents
? \\ conductor of a big curve:
? F = ellminimalmodel(ellinit([0,0,0,-10^20, 10^30]));
? sizedigit(ellglobalred(F)[1])
? sizedigit(F.disc)
? \\ semistable?
? issquarefree(ellglobalred(E)[1])
%  1
The smallest conductors

There is no elliptic curve over $\mathbb{Q}$ of conductor $\lt11$ — a theorem (Tate; Ogg), equivalent to the statement that there are no weight-2 cusp forms of level $\lt11$. Conductor 11 has one isogeny class of three curves. The LMFDB lists all curves of conductor up to $500\,000$.

Exercises

3.19 Find all curves of conductor 11 and 15 in PARI (with pari-elldata installed).

Solution
? ellsearch(11)
%  [["11a1", [0,-1,1,-10,-20], ...],
    ["11a2", [0,-1,1,-7820,-263580], ...],
    ["11a3", [0,-1,1,0,0], ...]]
? #ellsearch(15)
%  8                          \\ eight curves, one isogeny class
? apply(c -> elltors(ellinit(c[2]))[2], ellsearch(15))

Conductor 15 has a single isogeny class of 8 curves linked by 2- and 4-isogenies, with torsion subgroups ranging over $\mathbb{Z}/2$, $\mathbb{Z}/4$, $\mathbb{Z}/8$ and $\mathbb{Z}/2\times\mathbb{Z}/4$ etc. — a nice illustration that torsion varies within an isogeny class while rank does not.

3.20 Show $N$ is an isogeny invariant by comparing $a_p$ across an isogeny class.

Solution

Isogenous curves have isomorphic $V_\ell E$ as Galois representations (an isogeny induces an isomorphism after tensoring with $\mathbb{Q}_\ell$, since the kernel is finite). The conductor is defined purely in terms of $V_\ell E$ and inertia, so it is the same. ∎

? M = ellisomat(ellinit([0,-1,1,-10,-20]))[1];
? apply(c -> ellglobalred(ellinit(c))[1], M)
%  [11, 11, 11]

By contrast the discriminants differ: $-11^5$, $-11$, $-11^5$ etc.

3.21 Estimate how many $a_n$ you would need to compute $L(E,1)$ for a curve of conductor $10^{100}$, and comment.

Solution

The rapidly convergent series (Lesson 73) needs $n$ up to roughly $\sqrt N\cdot(\text{a few})$, so $n\sim10^{50}$. Computing $a_p$ for $10^{50}$ primes is impossible by many orders of magnitude — the number of atoms in the observable universe is about $10^{80}$, so $10^{50}$ operations at $10^{9}$/second would take $10^{41}$ seconds, versus $10^{17}$ seconds since the Big Bang.

Hence: for record curves, direct L-value computation is out of the question, and the only route to an upper bound is the explicit-formula inequality of Lesson 76, whose cost depends on a chosen parameter rather than on $N$.

Silverman AEC VIII.§11 and ATAEC IV.§10–11. Ogg, Elliptic curves and wild ramification, Amer. J. Math. 89 (1967).
Nagell–Lutz

Let $E:y^2=x^3+Ax+B$ with $A,B\in\mathbb{Z}$. If $P=(x,y)\in E(\mathbb{Q})$ is torsion and $P\ne\mathcal{O}$, then $x,y\in\mathbb{Z}$, and either $y=0$ (so $2P=\mathcal{O}$) or $y^2\mid\Delta$ (equivalently $y\mid\operatorname{disc}(f)$ up to the standard factor).

Integrality follows from the formal group: torsion points lie outside $E_1(\mathbb{Q}_p)$ for every $p\ge3$, and a separate argument handles $p=2$. The divisibility follows because $2P$ is also torsion hence integral, and the duplication formula forces $y\mid\Delta$.

Nagell–Lutz is a bad algorithm

It requires factoring $\Delta$. For a curve with a 150-digit discriminant that is infeasible. Use the reduction method instead, which never factors anything large.

The practical algorithm
  1. Compute $m=\gcd_p\#\tilde E(\mathbb{F}_p)$ over several good primes $p\ge3$. Then $\#E(\mathbb{Q})_{\text{tors}}\mid m$.
  2. By Mazur, $\#E(\mathbb{Q})_{\text{tors}}\le16$, so only $\ell\in\{2,3,5,7\}$ and small powers matter.
  3. For each such $\ell\mid m$: factor the division polynomial $\psi_\ell(x)$ over $\mathbb{Q}$, test rational roots, and check the corresponding $y$ is rational.
  4. Assemble the group.

Steps 1 and 3 are both fast; step 3's polynomials have degree $(\ell^2-1)/2\le24$.

Torsion computation
torsbound(E, np) =
{ my(g = 0, cnt = 0);
  forprime(p = 3, 10^6,
    if(E.disc % p != 0,
       g = gcd(g, p + 1 - ellap(E,p)); cnt++;
       if(cnt >= np, break)));
  g;
}

? E = ellinit([0,0,0,-7,6]);
? torsbound(E, 5)
%  4
? elltors(E)
%  [4, [2,2], [[1,0],[2,0]]]
? \\ a big curve: bound is instant, no factoring
? F = ellminimalmodel(ellinit([0,0,0,-10^30+3, 10^45+7]));
? torsbound(F, 8)

Exercises

3.22 Use Nagell–Lutz by hand to show $(3,5)$ on $y^2=x^3-2$ is non-torsion.

Solution

$\Delta=-16\cdot27\cdot4=-1728$. If $(3,5)$ were torsion then $y=5$ and $y^2=25$ must divide $\Delta=-1728$. But $1728=2^6\cdot27$, so $5\nmid1728$. Contradiction: $(3,5)$ has infinite order. ∎

? E = ellinit([0,0,0,0,-2]);
? E.disc
%  -1728
? 25 % 1728, 1728 % 25
%  25, 3          \\ 25 does not divide 1728
? ellorder(E,[3,5])
%  0

3.23 Find a curve with torsion $\mathbb{Z}/2\times\mathbb{Z}/8$ (the largest of Mazur's groups by order).

Solution
? \\ search conductor range
? for(N=15, 300, if(#ellsearch(N),
    for(i=1, #ellsearch(N),
      my(c = ellsearch(N)[i][2], T = elltors(ellinit(c))[2]);
      if(T == [2,8], print(N, " ", c)))));
210 [1, 1, 0, -1274, 16510]
...

Curve 210e1 or similar has $E(\mathbb{Q})_{\text{tors}}\cong\mathbb{Z}/2\times\mathbb{Z}/8$, order 16 — the maximum permitted by Mazur. Its rank is 0. Note the general pattern: large torsion tends to force small rank, which is why the rank records per torsion group drop as the torsion grows.

3.24 Show that the "torsion by gcd" bound can fail to be sharp, and find an example.

Solution

The bound is $\#E(\mathbb{Q})_{\text{tors}}\mid\gcd_p\#\tilde E(\mathbb{F}_p)$. The gcd can be a proper multiple: it detects only what is forced by counting.

? E = ellinit([0,0,1,-1,0]);        \\ 37a1
? torsbound(E, 3)                    \\ few primes: a weak bound
? torsbound(E, 20)                   \\ more primes
%  1
? elltors(E)
%  [1, [], []]

With few primes the gcd may be, say, 6 or 12 while the true torsion is trivial. Adding primes drives the gcd down. It always converges to a multiple of the truth, and in practice 5–10 primes suffice; but there is no a priori bound on how many are needed without invoking Mazur.

Silverman AEC VII.§3 and VIII.§7. Silverman–Tate Ch. II for a self-contained Nagell–Lutz proof.
Mazur, 1977

For $E/\mathbb{Q}$, $E(\mathbb{Q})_{\text{tors}}$ is isomorphic to exactly one of: $$\mathbb{Z}/n\mathbb{Z}\ (1\le n\le10,\ n=12),\qquad \mathbb{Z}/2\mathbb{Z}\times\mathbb{Z}/2m\mathbb{Z}\ (1\le m\le4).$$ Each of these 15 groups occurs for infinitely many curves.

Note the gaps: no rational points of order 11, 13, or $\ge14$.

Modular curves $X_0(N)$ and $X_1(N)$

$Y_1(N)=\mathbb{H}/\Gamma_1(N)$ parametrises pairs $(E,P)$ with $P$ of exact order $N$; $X_1(N)$ is its compactification by cusps. Similarly $Y_0(N)=\mathbb{H}/\Gamma_0(N)$ parametrises $(E,C)$ with $C$ cyclic of order $N$, and $X_0(N)$ is its compactification. Both are smooth projective curves defined over $\mathbb{Q}$.

The reduction

"$E/\mathbb{Q}$ has a rational point of order $N$" $\iff$ "$X_1(N)$ has a non-cuspidal rational point". So Mazur's theorem is a statement about rational points on a specific list of curves. For $N\le10$ and $N=12$, $X_1(N)$ has genus 0 with rational points — so infinitely many curves. For $N=11,13,14,15,16,18$ the genus is 1 or 2, and for larger $N$ the genus grows.

$N$11131415161718
genus $X_1(N)$1211252

For $N=11,14,15$ the curve $X_1(N)$ has genus 1 with rank 0 — only cusps are rational. For genus $\ge2$, Faltings gives finiteness but Mazur needed effective arguments.

Mazur's proof for the hard cases uses the Eisenstein ideal in the Hecke algebra acting on $J_0(N)$, showing that a rational point would force an unattainable congruence. It reshaped the subject.

Torsion versus rank — the contrast that defines this course
TorsionRank
Possible valuesknown exactly (15 groups)unknown
Computationfast, unconditional, always terminatesno known algorithm
Uniform bound$\le16$not known to exist
Over number fieldsuniformly bounded by degree (Merel, 1996)open
Records are tracked per torsion group

Dujella's tables give, for each of Mazur's 15 groups $T$, the largest known rank of a curve with $E(\mathbb{Q})_{\text{tors}}\cong T$. Prescribing torsion confines the curve to a modular curve, shrinking the parameter space and lowering achievable rank. Current records fall roughly from 30 (trivial torsion) down to single digits for the largest torsion groups. Elkies–Klagsbrun's 2020 paper broke five of these records at once.

Exercises

3.25 Verify empirically that no curve of small conductor has a point of order 11.

Solution
? bad = 0;
? for(N=11, 2000, my(v = ellsearch(N));
    for(i=1, #v, my(T = elltors(ellinit(v[i][2]))[1]);
      if(T % 11 == 0, bad++; print(N, " ", v[i][1]))));
? bad
%  0

No curve has 11-torsion, as Mazur guarantees. Similarly none has order 13 or $\ge17$. The largest torsion you will find is 16, from $\mathbb{Z}/2\times\mathbb{Z}/8$.

3.26 Find the parametrised family of curves with a rational 5-torsion point.

Solution

$X_1(5)$ has genus 0, so there is a rational parametrisation (the Tate normal form): $$E_t:\ y^2+(1-t)xy-t\,y=x^3-t\,x^2,\qquad P=(0,0)\ \text{of order }5.$$

? f(t) = ellinit([1-t, -t, -t, 0, 0]);
? for(t=2,6, my(E=f(t)); if(E, print(t, " ", elltors(E)[2], " ", ellorder(E,[0,0]))))
2 [5] 5
3 [5] 5
4 [5] 5
...

Every specialisation with $\Delta\ne0$ has a point of order 5. These universal families are exactly what one specialises when hunting rank records with prescribed torsion — the extra constraint is why those records are lower.

3.27 Explain why $X_1(N)$ having genus 0 with a rational point implies infinitely many curves with $N$-torsion.

Solution

A genus-0 curve over $\mathbb{Q}$ with a rational point is isomorphic to $\mathbb{P}^1_\mathbb{Q}$ (Lesson 9), so it has infinitely many rational points, parametrised by a rational function of one variable $t$. Excluding the finitely many cusps, every other rational point corresponds to a genuine pair $(E,P)$ with $P$ of order $N$, defined over $\mathbb{Q}$. Different $t$ give non-isomorphic $E$ for all but finitely many collisions, so infinitely many curves. ∎

This holds for $N\le10$ and $N=12$, and for the $\mathbb{Z}/2\times\mathbb{Z}/2m$ cases with $m\le4$ (where the relevant modular curve $X_1(2,2m)$ also has genus 0). That is precisely Mazur's list.

Mazur, Modular curves and the Eisenstein ideal, Publ. Math. IHÉS 47 (1977). Diamond & Shurman Ch. 7 for modular curves. Silverman AEC VIII.§7 (statement).

A brief but useful detour: the free part of $E(\mathbb{Q})$ is infinite, yet the integral points are always finite. This gives another handle on curves and another sanity check on rank computations.

Siegel, 1929

For $E/\mathbb{Q}$ given by an integral Weierstrass equation, the set $$\{P\in E(\mathbb{Q}):x(P)\in\mathbb{Z}\}$$ is finite.

Siegel's original proof used Diophantine approximation (Thue–Siegel) and was ineffective — it gave no bound on the size of the points. Baker's theory of linear forms in logarithms made it effective, and the modern method (David, Hajdu–Herendi, Stroeker–Tzanakis) combines elliptic logarithms with LLL to produce complete lists.

The elliptic-logarithm method, in outline
  1. Find generators $P_1,\dots,P_r$ of $E(\mathbb{Q})$ (this needs the rank!).
  2. An integral point $Q=\sum n_iP_i+T$ has $\hat h(Q)$ bounded by a function of $\max|n_i|$; conversely, integrality forces $\log|x(Q)|$ to be small relative to $\hat h$, so $|\log_E(Q)|$ is exponentially small in $\max|n_i|$.
  3. Baker-type bounds on linear forms in elliptic logarithms give an explicit but enormous bound $\max|n_i|\le B_0$ (typically $10^{30}$ or worse).
  4. LLL reduction of the lattice of elliptic logarithms shrinks $B_0$ to something like $10$ or $20$.
  5. Enumerate.
Integral points
? E = ellinit([0,0,0,-7,6]);
? ellratpoints(E, 100)                \\ small rational points
? \\ PARI does not ship a full S-integral point routine; Sage does:
? \\   sage: E.integral_points()
? \\ but you can enumerate directly for moderate bounds:
? v = List(); for(x = -100, 1000, if(issquare(x^3-7*x+6, &y), listput(v,[x,y])));
? Vec(v)
%  [[-3,0],[-2,3],[-1,3],[0,3],[1,0],[2,0],[3,3],[6,12],[14,52],[21,96],[37,225],
    [67,548],[218,3219],[3583,214506],...]
Why this matters for high rank

There is a heuristic link: curves of high rank tend to have many integral points, because the Mordell–Weil lattice is dense and short vectors give small coordinates. Records for the number of integral points track rank records loosely. Conversely, spotting an unusual number of integral points in a family is a (weak) signal of high rank — and unlike Mestre–Nagao sums it is not fooled by CM. In practice it is too slow for large-scale sieving but useful as a confirmation heuristic.

Quantitative bounds

Silverman: the number of integral points is bounded by $C^{1+r+\text{rank of }\text{Ш}}$ for an absolute constant $C$; more refined results (Alpöge; Alpöge–Ho; Bhargava–Ho) bound the average number of integral points over all curves, and the higher moments. Note: Levent Alpöge, one of the discoverers of the rank-30 curve, works precisely in this area.

Exercises

3.28 Find all integral points on $y^2=x^3-2$ with $|x|\le10^4$ and compare with the known answer.

Solution
? v = List(); for(x=-2, 10^4, if(issquare(x^3-2, &y), listput(v,[x,y])));
? Vec(v)
%  [[3, 5]]

Only $(3,\pm5)$. This is Fermat's claim, proved rigorously by descent in $\mathbb{Z}[\sqrt{-2}]$ (a UFD): from $y^2+2=x^3$, factor as $(y+\sqrt{-2})(y-\sqrt{-2})=x^3$; the factors are coprime, so each is a cube, and expanding $y+\sqrt{-2}=(a+b\sqrt{-2})^3$ gives $b(3a^2-2b^2)=1$, forcing $b=\pm1$, $a=\pm1$, $y=\pm5$, $x=3$. ∎

3.29 On the rank-3 curve $y^2=x^3-7x+6$, count integral points with $|x|\le10^6$ and comment on the rank correlation.

Solution
? c = 0; for(x=-3, 10^6, if(issquare(x^3-7*x+6), c++)); c
%  ~ 18-20

Roughly twenty integral points for a rank-3 curve with small coefficients — considerably more than the one or two typical of a rank-0 or rank-1 curve. The heuristic $\#\{\text{integral points}\}\approx C^{r}$ predicts growth exponential in the rank, matching Silverman's bound. For a rank-30 curve with 150-digit coefficients, though, the constant $C$ is dwarfed by the size of the coefficients, and integral points are not a practical detector at that scale.

3.30 Explain why Siegel's theorem is compatible with $E(\mathbb{Q})$ being infinite.

Solution

Because the denominators grow. Write $x(P)=a/d^2$; then $h(P)\approx\log\max(|a|,d^2)$ and $\hat h(nP)=n^2\hat h(P)$, so $d(nP)$ grows like $e^{cn^2}$. Only finitely many multiples can have $d=1$.

Concretely on $y^2=x^3-2$ with $P=(3,5)$: $2P=(129/100,-383/1000)$, $3P$ has a 3-digit denominator, and every $nP$ with $n\ge2$ is non-integral. The single integral point is $\pm P$ itself. ✓ Siegel's theorem is the statement that this "denominators eventually appear and never go away" behaviour is universal.

Silverman AEC IX (Siegel's theorem). Silverman ATAEC VI for the elliptic-logarithm method. Stroeker & Tzanakis, Acta Arith. 67 (1994).

Heights measure arithmetic size. To define them properly we need every absolute value on $\mathbb{Q}$ at once.

Places of $\mathbb{Q}$

$M_\mathbb{Q}=\{\infty\}\cup\{\text{primes}\}$. The associated normalised absolute values are $$|x|_\infty=\text{usual absolute value},\qquad |x|_p=p^{-v_p(x)}.$$

Ostrowski

Every nontrivial absolute value on $\mathbb{Q}$ is equivalent to $|\cdot|_\infty$ or to some $|\cdot|_p$.

Product formula

$$\prod_{v\in M_\mathbb{Q}}|x|_v=1\qquad\text{for all }x\in\mathbb{Q}^\times.$$

Proof. Write $x=\pm\prod_pp^{e_p}$. Then $|x|_p=p^{-e_p}$ and $|x|_\infty=\prod_pp^{e_p}$. The product telescopes to 1. ∎

Why the product formula is the foundation of height theory

Define, for $P=[x_0:\cdots:x_n]\in\mathbb{P}^n(\mathbb{Q})$ with $x_i\in\mathbb{Z}$ coprime, $$H(P)=\prod_{v\in M_\mathbb{Q}}\max_i|x_i|_v.$$ Rescaling $P$ by $\lambda\in\mathbb{Q}^\times$ multiplies each factor by $|\lambda|_v$, and by the product formula the total is unchanged. So $H$ is well defined on projective space — that is exactly what the product formula buys.

Number fields

For a number field $K$ the places are the archimedean ones (one per real embedding, one per conjugate pair of complex embeddings) and the non-archimedean ones (one per prime ideal $\mathfrak p$ of $\mathcal{O}_K$). With normalisations $|x|_v=|\sigma_v(x)|^{n_v}$ where $n_v\in\{1,2\}$ for archimedean $v$, and $|x|_{\mathfrak p}=\mathrm{N}(\mathfrak p)^{-v_{\mathfrak p}(x)}$, the product formula again holds.

Valuations in PARI
? valuation(60/7, 2)
%  2
? valuation(60/7, 7)
%  -1
? \\ verify the product formula for 60/7:
? x = 60/7;
? abs(x) * prod(i=1, 4, my(p=prime(i)); p^(-valuation(x,p)))
%  1
? \\ p-adic absolute value directly:
? p = 7; p^(-valuation(x,p))
%  7

Exercises

4.1 Verify the product formula for $x=-98/45$.

Solution

$-98/45=-2\cdot7^2/(3^2\cdot5)$. So $|x|_2=1/2$, $|x|_3=9$, $|x|_5=5$, $|x|_7=1/49$, all others 1, and $|x|_\infty=98/45$.

Product: $\frac{98}{45}\cdot\frac12\cdot9\cdot5\cdot\frac1{49}=\frac{98\cdot45}{45\cdot2\cdot49}=\frac{98}{98}=1$ ✓.

4.2 Show that for $x=a/b\in\mathbb{Q}$ in lowest terms, $\prod_v\max(1,|x|_v)=\max(|a|,|b|)$.

Solution

At $v=\infty$: $\max(1,|a/b|)=\max(|b|,|a|)/|b|$.

At $v=p$: $\max(1,|a/b|_p)=\max(1,p^{v_p(b)-v_p(a)})$. Since $\gcd(a,b)=1$, at most one of $v_p(a),v_p(b)$ is positive. If $p\mid b$ this equals $p^{v_p(b)}$; otherwise 1. So $\prod_p\max(1,|x|_p)=\prod_{p\mid b}p^{v_p(b)}=|b|$.

Total: $\frac{\max(|a|,|b|)}{|b|}\cdot|b|=\max(|a|,|b|)=H(x)$ ✓ — the naive height, recovered as a product over all places.

4.3 Show $|\cdot|_p$ satisfies the ultrametric inequality with equality when $v_p(x)\ne v_p(y)$.

Solution

Suppose $v_p(x)=a\lt b=v_p(y)$. Write $x=p^au$, $y=p^bw$ with $u,w$ $p$-units. Then $x+y=p^a(u+p^{b-a}w)$ and $u+p^{b-a}w\equiv u\not\equiv0\pmod p$, so $v_p(x+y)=a$ exactly. Hence $|x+y|_p=p^{-a}=\max(|x|_p,|y|_p)$ ✓.

The inequality can only be strict when the valuations are equal — the "isosceles triangle" property of non-archimedean geometry, and the reason $p$-adic analysis is so much cleaner than real analysis.

Silverman AEC VIII.§5. Bombieri & Gubler, Heights in Diophantine Geometry, Ch. 1.
Height on $\mathbb{P}^n(\mathbb{Q})$

For $P=[x_0:\cdots:x_n]$ with $x_i\in\mathbb{Z}$, $\gcd(x_0,\dots,x_n)=1$: $$H(P)=\max_i|x_i|,\qquad h(P)=\log H(P).$$ Equivalently $H(P)=\prod_v\max_i|x_i|_v$ for any choice of coordinates, by the product formula.

Height of a rational number

Identify $t=a/b\in\mathbb{Q}$ with $[a:b]\in\mathbb{P}^1$. Then $H(t)=\max(|a|,|b|)$ for $a/b$ in lowest terms.

Northcott property

For any $B$ and $n$, $\{P\in\mathbb{P}^n(\mathbb{Q}):H(P)\le B\}$ is finite. Indeed $$\#\{P\in\mathbb{P}^n(\mathbb{Q}):H(P)\le B\}\sim\frac{2^n}{\zeta(n+1)}\,B^{n+1}\quad(B\to\infty).$$ For $\mathbb{P}^1$: about $\frac{12}{\pi^2}B^2$ rationals of height $\le B$.

Functoriality

If $F:\mathbb{P}^n\to\mathbb{P}^m$ is a morphism given by homogeneous forms of degree $d$, then $$h\bigl(F(P)\bigr)=d\,h(P)+O(1),$$ with the implied constant depending only on $F$. This is the single technical fact that generates every height inequality on elliptic curves.

Why. The upper bound $h(F(P))\le d\,h(P)+O(1)$ is the triangle inequality applied to the coefficients. The lower bound uses the Nullstellensatz: since $F$ has no common zero, there are forms $g_{ij}$ with $\sum_j g_{ij}F_j=x_i^{e}$ for some $e$, which reverses the estimate.

A worked instance

$F:\mathbb{P}^1\to\mathbb{P}^1$, $[X:Y]\mapsto[X^2:Y^2]$, so $t\mapsto t^2$. Then $H(t^2)=H(t)^2$ exactly: if $t=a/b$ in lowest terms then $t^2=a^2/b^2$ is also in lowest terms, so $\max(a^2,b^2)=\max(|a|,|b|)^2$. Here $d=2$ and the $O(1)$ is 0.

Contrast $t\mapsto t^2+1=(a^2+b^2)/b^2$: still degree 2, but now $\gcd(a^2+b^2,b^2)$ may exceed 1 (e.g. $a=b=1$), so the $O(1)$ is genuinely needed.

Heights in PARI
ht(t) = my(a = numerator(t), b = denominator(t)); max(abs(a), abs(b));

? ht(129/100)
%  129
? log(ht(129/100)) * 1.0
%  4.8598...
? \\ counting rationals of bounded height:
? c = 0; for(a=-100,100, for(b=1,100, if(gcd(a,b)==1, c++)));
? c
%  ~ 12200
? 12/Pi^2 * 100^2 * 2      \\ predicted (a in [-B,B], b in [1,B])
%  ~ 24317 / 2

Exercises

4.4 Count rationals $a/b$ with $H\le10$ and compare with $\frac{12}{\pi^2}\cdot100$.

Solution
? c = 0; for(a=-10,10, for(b=1,10, if(gcd(abs(a),b)==1, c++)));
? c
%  67
? 12/Pi^2 * 10^2
%  121.58

The asymptotic constant is for $\#\{H(P)\le B\}$ in $\mathbb{P}^1(\mathbb{Q})$, counting $[a:b]$ up to sign, so the comparison needs care with normalisation (and $B=10$ is small). The order of magnitude — quadratic in $B$ — is the point: there are $\asymp B^2$ rationals of height $\le B$, hence only finitely many. That finiteness is Northcott.

4.5 Prove $h(t^n)=n\,h(t)$ exactly for $t\in\mathbb{Q}^\times$.

Solution

$t=a/b$ in lowest terms $\Rightarrow$ $t^n=a^n/b^n$ in lowest terms (since $\gcd(a,b)=1\Rightarrow\gcd(a^n,b^n)=1$). Hence $H(t^n)=\max(|a|^n,|b|^n)=\max(|a|,|b|)^n=H(t)^n$, so $h(t^n)=n\,h(t)$. ∎

This is the model for what we want on elliptic curves: $\hat h([m]P)=m^2\hat h(P)$. The exponent is 2 rather than 1 because $x\circ[m]$ has degree $m^2$ as a map $\mathbb{P}^1\to\mathbb{P}^1$ (Lesson 19).

4.6 Show that $h(t+1)\le h(t)+\log2$ and find when equality holds.

Solution

$t=a/b$ lowest terms $\Rightarrow t+1=(a+b)/b$, also in lowest terms (any common factor of $a+b$ and $b$ divides $a$). So $$H(t+1)=\max(|a+b|,|b|)\le\max(|a|+|b|,|b|)\le2\max(|a|,|b|)=2H(t).$$ Equality needs $|a+b|=|a|+|b|=2\max(|a|,|b|)$, i.e. $a$ and $b$ of the same sign and $|a|=|b|$; with $\gcd=1$ that means $a=b=1$, so $t=1$ and $t+1=2$: $H=1\to H=2$ ✓.

Silverman AEC VIII.§5, Thm. 5.6 and 5.11. Hindry & Silverman, Diophantine Geometry, Part B.
Naive height on $E$

$$h(P)=h\bigl(x(P)\bigr)=\log\max\bigl(|a|,|d^2|\bigr)\ \ \text{for }x(P)=a/d^2,\qquad h(\mathcal{O})=0.$$ Some authors use $h(P)=h([x_0:x_1])$ with $x=x_0/x_1$; identical.

Height inequalities on $E$

There are constants $C_1,C_2,C_3$ depending only on $E$ such that for all $P,Q\in E(\mathbb{Q})$:

  1. Quasi-parallelogram law: $\bigl|h(P+Q)+h(P-Q)-2h(P)-2h(Q)\bigr|\le C_1$.
  2. Duplication: $\bigl|h(2P)-4h(P)\bigr|\le C_2$.
  3. Translation: $h(P+Q)\le2h(P)+C_3(Q)$ for fixed $Q$.

(2) follows from (1) with $Q=P$ and $h(\mathcal{O})=0$; it also follows directly from the degree-4 map $x\mapsto x([2]P)$ via the functoriality of Lesson 44.

Where the parallelogram law comes from

The map $\sigma:E\times E\to\mathbb{P}^2$, $(P,Q)\mapsto\bigl[1:x(P+Q)+x(P-Q):x(P+Q)x(P-Q)\bigr]$ is given by polynomials in $x(P),x(Q)$: $$x(P+Q)+x(P-Q)=\frac{2(x_P+x_Q)(A+x_Px_Q)+4B}{(x_P-x_Q)^2},$$ $$x(P+Q)\,x(P-Q)=\frac{(x_Px_Q-A)^2-4B(x_P+x_Q)}{(x_P-x_Q)^2}.$$ Both are symmetric of bidegree $(2,2)$, so applying the functoriality estimate gives (1).

Note what is missing

These formulas involve only $x$-coordinates — no $y$, no sign ambiguity. That is why the height, which only sees $x$, satisfies a clean quadratic relation. The price is the $O(1)$: the numerators and denominators above are not automatically coprime.

Measuring the constants
naiveh(E, P) = if(P == [0], 0.0, log(max(abs(numerator(P[1])), abs(denominator(P[1])))));

? E = ellinit([0,0,0,-7,6]);
? G = [[-2,3],[-1,3],[0,-3]];       \\ some points
? \\ measure the duplication defect:
? for(i=1,3, my(P=G[i]); print(naiveh(E,ellmul(E,P,2)) - 4*naiveh(E,P)))
? \\ and the canonical height for comparison:
? for(i=1,3, my(P=G[i]); print([naiveh(E,P), ellheight(E,P)]))

You should see the defect $h(2P)-4h(P)$ bounded but nonzero, while $\hat h(2P)-4\hat h(P)$ is exactly 0 to full precision.

The descent machine, previewed

Given (2) and the finiteness of $E(\mathbb{Q})/2E(\mathbb{Q})$ (Lesson 51), Mordell–Weil follows: pick coset representatives $Q_1,\dots,Q_n$; write $P=2P'+Q_i$; then $$h(P')\le\tfrac14h(P)+C'$$ so iterating contracts the height geometrically down to a fixed bound. Everything below that bound is finite (Northcott), and together with the $Q_i$ it generates.

Exercises

4.7 Verify the duplication estimate numerically on $y^2=x^3-2$ with $P=(3,5)$ for $n=1,\dots,5$.

Solution
? E = ellinit([0,0,0,0,-2]); P = [3,5];
? for(n=0,4, my(Q = ellmul(E,P,2^n));
    print(2^n, "  h=", naiveh(E,Q), "  hhat=", ellheight(E,Q)))
1   h=1.0986   hhat=0.9309
2   h=4.8598   hhat=3.7236
4   h=19.2295  hhat=14.8945
8   h=75.9  ... hhat=59.578
16  h=303.7 ... hhat=238.31

$\hat h$ quadruples exactly: $0.9309\to3.7236\to14.8945\to59.578\to238.31$, each precisely $4\times$. The naive height quadruples only approximately, with a bounded defect. ✓

4.8 Show directly that $x(P)=a/d^2$ with $\gcd(a,d)=1$, for $P\in E(\mathbb{Q})$ on an integral model.

Solution

Write $x=m/n$, $y=r/s$ in lowest terms. From $y^2=x^3+Ax+B$: $$\frac{r^2}{s^2}=\frac{m^3+Amn^2+Bn^3}{n^3}.$$ So $s^2n^3\mid$ stuff; comparing $p$-adic valuations at a prime $p\mid n$: $v_p(y^2)=v_p(x^3)$ since the other terms have larger valuation ($v_p(x)\lt0$ so $v_p(x^3)=3v_p(x)\lt v_p(Ax)$). Hence $2v_p(y)=3v_p(x)$, so $v_p(x)$ is even and $v_p(y)$ is a multiple of 3 — precisely $v_p(x)=-2k$, $v_p(y)=-3k$.

Therefore $n=d^2$ and $s=d^3$ for a common $d$. ∎ Once again the weights $\operatorname{wt}(x)=2$, $\operatorname{wt}(y)=3$.

4.9 Estimate $C_2$ for $y^2=x^3-7x+6$ empirically over many points.

Solution
? E = ellinit([0,0,0,-7,6]);
? pts = select(P -> ellorder(E,P)==0, ellratpoints(E, 500));
? v = apply(P -> abs(naiveh(E,ellmul(E,P,2)) - 4*naiveh(E,P)), pts);
? vecmax(v)

You get a modest number (a few units). The theoretical bound (Silverman's explicit height difference bound, Math. Comp. 1990) gives $$-\tfrac1{12}h(j)-\tfrac1{12}\log|\Delta|-c\le\hat h(P)-\tfrac12h(P)\le\tfrac1{12}h(j)+\cdots$$ which for this curve is around 2–3. Such explicit bounds are what make saturation (Lesson 50) and integral-point searches rigorous.

Silverman AEC VIII.§6, Thm. 6.2. Silverman, The difference between the Weil height and the canonical height, Math. Comp. 55 (1990).

Tate's observation: the $O(1)$ in $h(2P)=4h(P)+O(1)$ can be averaged away.

Canonical height

$$\hat h(P)=\lim_{n\to\infty}\frac{h(2^nP)}{4^n}.$$

The limit exists. Let $C=C_2$ from the duplication estimate. For $m\gt n$, $$\left|\frac{h(2^mP)}{4^m}-\frac{h(2^nP)}{4^n}\right|\le\sum_{k=n}^{m-1}\left|\frac{h(2^{k+1}P)}{4^{k+1}}-\frac{h(2^kP)}{4^k}\right|\le\sum_{k=n}^{m-1}\frac{C}{4^{k+1}}\le\frac{C}{3\cdot4^n},$$ so the sequence is Cauchy. Moreover $|\hat h(P)-h(P)|\le C/3$: the two heights differ by a bounded amount.

Properties
  1. $\hat h(P)=h(P)+O(1)$, so $\hat h$ has the Northcott property.
  2. $\hat h(mP)=m^2\hat h(P)$ for all $m\in\mathbb{Z}$ — exactly.
  3. $\hat h(P+Q)+\hat h(P-Q)=2\hat h(P)+2\hat h(Q)$ — the exact parallelogram law.
  4. $\hat h(P)\ge0$, with $\hat h(P)=0\iff P\in E(\mathbb{Q})_{\text{tors}}$.
  5. $\hat h$ is the unique function satisfying (1) and (2) for $m=2$.

Proof of (4). If $P$ is torsion, $\{h(nP)\}$ is a finite set, so $h(2^nP)/4^n\to0$. Conversely if $\hat h(P)=0$ then $\hat h(nP)=n^2\cdot0=0$ for all $n$, so $h(nP)$ is bounded, so $\{nP\}$ is finite by Northcott, so $P$ has finite order. ∎

The consequence that matters

(3) says $\hat h$ is a quadratic form on $E(\mathbb{Q})$; (4) says it is positive definite modulo torsion. Hence $\hat h$ extends to a positive-definite quadratic form on the real vector space $$E(\mathbb{Q})\otimes\mathbb{R}\cong\mathbb{R}^r,$$ inside which $E(\mathbb{Q})/\text{tors}$ sits as a full-rank lattice — the Mordell–Weil lattice. Rank questions become lattice questions.

Two normalisations

Silverman's AEC defines $\hat h$ so that $\hat h\approx\tfrac12h$. PARI, Sage, Magma and most literature on rank records use $\hat h\approx h$. The two differ by a factor of 2, so regulators differ by $2^r$. Always check before comparing published values. PARI's convention: ellheight returns the "arithmetic" normalisation.

Canonical heights
? \p 50
? E = ellinit([0,0,0,0,-2]); P = [3,5];
? ellheight(E, P)
%  0.93094...
? ellheight(E, ellmul(E,P,3)) / ellheight(E,P)
%  9.0000000000000000000000000000000000000000000000000
? ellheight(E, ellmul(E,P,7)) / ellheight(E,P)
%  49.000000000000000000000000000000000000000000000000
? \\ torsion has height 0:
? F = ellinit([0,0,0,-1,0]);
? ellheight(F, [0,0])
%  0.E-57

Exercises

4.10 Prove property (2) from the definition.

Solution

First for $m=2$: $\hat h(2P)=\lim\frac{h(2^{n+1}P)}{4^n}=4\lim\frac{h(2^{n+1}P)}{4^{n+1}}=4\hat h(P)$ ✓.

For general $m$, use the parallelogram law (3), which follows from the quasi-parallelogram law by the same averaging. A function satisfying the exact parallelogram law with $\hat h(\mathcal{O})=0$ is a quadratic form, and every quadratic form satisfies $q(mP)=m^2q(P)$: expand $q(mP)$ by induction using $q((m+1)P)+q((m-1)P)=2q(mP)+2q(P)$, giving $q(mP)=m^2q(P)$ by solving the recursion with $q(0)=0$, $q(P)=q(P)$. ∎

4.11 Show that $\hat h$ is the unique function with $\hat h=h+O(1)$ and $\hat h(2P)=4\hat h(P)$.

Solution

Suppose $f$ and $g$ both satisfy the two conditions. Then $\delta=f-g$ is bounded (both differ from $h$ by $O(1)$) and satisfies $\delta(2P)=4\delta(P)$. Hence $|\delta(P)|=4^{-n}|\delta(2^nP)|\le4^{-n}\cdot\sup|\delta|\to0$. So $\delta\equiv0$. ∎

Uniqueness is why every algorithm computing $\hat h$ — Tate's series, the AGM/sigma method, the local decomposition — produces the same number.

4.12 Compute $\hat h$ for the generator of $y^2=x^3-25x$ (congruent number 5) and predict $\hat h(5P)$.

Solution
? \p 30
? E = ellinit([0,0,0,-25,0]);
? ellrank(E)
%  [1, 1, 0, [[-4, 6]]]
? h = ellheight(E, [-4,6])
%  1.51758...
? ellheight(E, ellmul(E,[-4,6],5))
%  37.939...
? % / h
%  25.0000000000000000000000000000

$\hat h(5P)=25\,\hat h(P)$ exactly ✓. The point $5P$ has coordinates with dozens of digits — the canonical height is measuring exactly that growth.

Silverman AEC VIII.§9, Thm. 9.3. Tate's original argument is reproduced in Lang, Elliptic Curves: Diophantine Analysis.

The defining limit converges slowly and with poor error control. The practical algorithm decomposes $\hat h$ into local contributions, one per place.

Néron's decomposition

$$\hat h(P)=\sum_{v\in M_\mathbb{Q}}\lambda_v(P)=\lambda_\infty(P)+\sum_p\lambda_p(P),$$ where each local height $\lambda_v:E(\mathbb{Q}_v)\setminus\{\mathcal{O}\}\to\mathbb{R}$ is:

  • continuous and bounded outside any neighbourhood of $\mathcal{O}$;
  • $\lambda_v(P)=-\tfrac12\log|x(P)|_v+O(1)$ as $P\to\mathcal{O}$ (a logarithmic singularity);
  • quasi-quadratic: $\lambda_v(2P)=4\lambda_v(P)-\log|(2y+a_1x+a_3)(P)|_v$ + correction.

All but finitely many $\lambda_p$ vanish.

The non-archimedean formula

Let $p$ be a prime, $E$ given by a minimal model at $p$, and $P\in E(\mathbb{Q}_p)$. Then (in the "arithmetic" normalisation) $$\lambda_p(P)=\tfrac12\max\bigl(0,\ -v_p(x(P))\bigr)\log p\ +\ (\text{correction if }P\text{ reduces to a singular point}).$$

Concretely:

  • If $p$ is a prime of good reduction: $\lambda_p(P)=\tfrac12\max(0,-v_p(x(P)))\log p$. In particular $\lambda_p(P)=0$ whenever $x(P)$ is a $p$-adic integer.
  • If $p$ is bad: the correction is a rational multiple of $\log p$ determined by the Kodaira type and by which component of the special fibre $P$ reduces to.
The multiplicative case, explicitly

For split multiplicative reduction of type $\mathrm{I}_n$ at $p$, the component group is $\mathbb{Z}/n$, and if $P$ reduces to component $k$ (with $0\le k\le n-1$), $$\lambda_p(P)=\frac12\cdot\frac{k(n-k)}{n}\log p + \tfrac12\max\bigl(0,-v_p(x(P))\bigr)\log p .$$ The function $k\mapsto k(n-k)/n$ is the classic "quadratic on the component group" — the same expression that appears in the theory of Néron models and in the local height of a Tate curve.

Why this half is easy

Every non-archimedean local height is an exact rational multiple of $\log p$. There is no approximation, no error bound, no precision loss — just Tate's algorithm to get the type and the component, then a table lookup. All the analytic difficulty lives at $v=\infty$.

Local heights
? E = ellminimalmodel(ellinit([0,0,0,-7,6]));
? P = [-2,3];
? ellheight(E, P)
%  0.5077...
? \\ PARI does not expose lambda_p directly, but the sum is checkable:
? \\ local data at bad primes:
? fordiv(ellglobalred(E)[1], d, if(isprime(d), print(d, " ", elllocalred(E,d))))
? \\ valuation of x at bad primes:
? fordiv(ellglobalred(E)[1], d, if(isprime(d), print(d, " ", valuation(P[1], d))))

Exercises

4.13 Compute $\lambda_p$ at all good primes for $P=(129/100,-383/1000)$ on $y^2=x^3-2$.

Solution

$x(P)=129/100=129/(2^2\cdot5^2)$. So $v_2(x)=-2$ and $v_5(x)=-2$, all other $v_p(x)\ge0$.

$\Delta=-1728=-2^6\cdot3^3$, so the bad primes are 2 and 3. At $p=5$ (good reduction): $$\lambda_5(P)=\tfrac12\cdot2\cdot\log5=\log5\approx1.6094.$$ At $p=2$ the reduction is bad, so there is a correction term; at $p=3$, $v_3(x)=0$ so the "denominator" part vanishes but a component correction may not.

? E = ellinit([0,0,0,0,-2]);
? ellheight(E, [129/100, -383/1000])
%  3.7237...
? 4 * ellheight(E, [3,5])
%  3.7237...

Consistency check ✓: $P=2\cdot(3,5)$ so $\hat h(P)=4\hat h((3,5))$.

4.14 Verify the sum-over-places decomposition by comparing $\hat h$ to $\sum_p\lambda_p$ plus a numerical $\lambda_\infty$.

Solution

For a point $P$ with $x(P)\in\mathbb{Z}$ and all primes good, every $\lambda_p=0$, so $\hat h(P)=\lambda_\infty(P)$. Take $E:y^2=x^3-2$ and $P=(3,5)$: $x=3$ is integral, and 2, 3 are the bad primes with $v(x)\ge0$.

? E = ellinit([0,0,0,0,-2]);
? ellheight(E,[3,5])
%  0.93094...

So $\lambda_\infty((3,5))\approx0.931$, up to the bad-prime corrections at 2 and 3 (which for this point turn out to vanish). A more interesting check: for $2P=(129/100,\ldots)$, the $\lambda_5$ contribution $\log5=1.609$ is a large chunk of $\hat h=3.724$ — the denominators dominate the height, exactly as the theory predicts.

4.15 On a curve with $\mathrm{I}_5$ reduction at 11, compute the possible values of the component-group contribution.

Solution

$n=5$, so $k\in\{0,1,2,3,4\}$ and $\frac{k(5-k)}{5}$ takes values $0,\ \frac45,\ \frac65,\ \frac65,\ \frac45$. Times $\tfrac12\log11\approx1.199$: $$0,\quad 0.959,\quad 1.439,\quad 1.439,\quad 0.959.$$

Symmetric in $k\mapsto n-k$ ✓ (as it must be, since $\lambda_p(-P)=\lambda_p(P)$ and negation reverses the component). The maximum is at the "middle" components.

? E = ellinit([0,-1,1,-10,-20]);   \\ conductor 11, I_5 at 11
? elllocalred(E,11)
%  [1, 5, [1,0,0,0], 5]
? for(k=0,4, print(k, "  ", k*(5-k)/5 * 0.5 * log(11)))
Silverman ATAEC VI.§4 (local height functions, with a full table by Kodaira type). Cremona, Algorithms, §3.4.

All the analysis is here. Two standard algorithms, both with rigorous error bounds.

Method 1: Tate's series (Silverman, 1988)

The algorithm

Define $z=1/x(P)$ and, from the duplication formula, a sequence $$t_0=z,\qquad t_{n+1}=\text{(explicit rational function of }t_n).$$ Then $$\lambda_\infty(P)=\tfrac12\log|x(P)|+\tfrac18\sum_{n\ge0}4^{-n}\log|\,\text{something}(t_n)\,|,$$ where the summand involves $z^4$-type expressions. Concretely, with $\mu(z)=z^4+\ldots$ and $\nu(z)$ from the duplication formula, one gets a series whose $n$-th term is $O(4^{-n})$ with an explicit constant.

Cost: $d$ digits in $O(d)$ iterations. Error: the tail is bounded explicitly by $\frac{C}{3\cdot4^N}$. This is what mwrank uses.

Method 2: sigma function / AGM (Silverman's ATAEC; PARI)

Weierstrass sigma and eta

$$\sigma(z;\Lambda)=z\prod_{\omega\in\Lambda\setminus0}\left(1-\frac z\omega\right)e^{z/\omega+z^2/(2\omega^2)},\qquad \zeta(z)=\frac{\sigma'(z)}{\sigma(z)},\qquad \wp=-\zeta'.$$ $\sigma$ is odd, entire, with simple zeros exactly on $\Lambda$, and quasi-periodic: $\sigma(z+\omega)=\pm e^{\eta(\omega)(z+\omega/2)}\sigma(z)$ where $\eta$ is the quasi-period map.

The formula

$$\lambda_\infty(P)=-\log\bigl|\sigma(z_P)\bigr|+\tfrac12\,\eta_1\,\frac{(\operatorname{Im}z_P)^2}{\operatorname{Im}\tau}\cdot(\ldots)+\tfrac1{12}\log|\Delta|,$$ where $z_P=\log_E(P)$ is the elliptic logarithm. The exact normalisation varies by source; the structure is: evaluate the elliptic logarithm (AGM, quadratic convergence), evaluate $\sigma$ by its $q$-series (exponentially convergent), combine.

Cost: $d$ digits in $O(\log d)$ AGM steps plus $O(d/\log(1/|q|))$ terms of the $\sigma$ series. Quadratically convergent overall. This is what PARI uses.

Rigour is not optional

The entire point of computing $\hat h$ is to certify that a determinant is nonzero. An approximation without a proven error bound proves nothing. Use:

  • a method with explicit tail bounds (both above qualify), and
  • interval or ball arithmetic — Arb (now part of FLINT) is the standard, giving certified enclosures.

A practical proxy: compute at precision $d$ and $2d$ and check the determinant's leading digits agree and are far from 0. That is evidence, not proof; for a published record you want the ball-arithmetic version.

Precision practice
? E = ellinit([0,0,0,-7,6]);
? G = [[-2,3],[-1,3],[0,-3]];
? \p 38
? d1 = matdet(ellheightmatrix(E, G))
? \p 100
? d2 = matdet(ellheightmatrix(E, G))
? abs(d1 - d2)                      \\ should be tiny
? \\ how close to zero is the determinant, relative to the entries?
? M = ellheightmatrix(E,G); matdet(M) / vecmax(abs(Vec(M)))^3

Exercises

4.16 Compute $\hat h$ at two precisions and estimate the achieved accuracy.

Solution
? E = ellinit([0,0,0,0,-2]); P = [3,5];
? \p 20
? h20 = ellheight(E,P)
? \p 60
? h60 = ellheight(E,P)
? abs(h20 - h60)
%  ~ 1e-20

The low-precision value is accurate to about its stated precision, as expected. PARI's height routine internally raises precision as needed. For record-sized curves you should explicitly set \p well above the number of digits in the coordinates — a good rule is $\text{digits}(\text{coords})/2 + 50$.

4.17 Verify the quasi-periodicity of $\sigma$ numerically.

Solution
? \p 30
? E = ellinit([0,0,0,-1,0]);
? w = E.omega; eta = E.eta;
? z = 0.3 + 0.1*I;
? s1 = ellsigma(E, z + w[1]);
? s2 = ellsigma(E, z) * exp(eta[1]*(z + w[1]/2));
? s1 / s2
%  -1.0000000000...     \\ the sign in sigma(z+w) = -e^{...} sigma(z)

The ratio is $\pm1$ as the quasi-periodicity law predicts (the sign is $-1$ when $\omega\notin2\Lambda$). This relation is exactly what makes $\log|\sigma|$ fail to be $\Lambda$-periodic by a quadratic correction — and that correction is why $\lambda_\infty$ has the $\eta_1(\operatorname{Im}z)^2$ term.

4.18 Estimate how many decimal digits you need to certify a $30\times30$ height matrix has nonzero determinant, for entries of size ~100.

Solution

Rough analysis: if each entry has absolute error $\epsilon$ and magnitude $M$, the determinant's error is roughly $n!\,\epsilon M^{n-1}$ in the worst case, but a better estimate uses the condition number: $|\delta\det|\lesssim\det\cdot\kappa\cdot n\epsilon/M$ where $\kappa$ is the condition number of $M$.

With $n=30$, $M\approx100$, and a Gram matrix whose determinant might be as small as $10^{-5}$ times $M^{30}$, you want $\epsilon\lesssim10^{-30}$ relative. Practical recipe: work at 100–200 digits, use ball arithmetic, and confirm the enclosure of $\det$ excludes 0. Since AGM-based height computation costs $O(d\log d)$, 200 digits is essentially free — there is no reason to economise.

? \p 200
? \\ then matdet(ellheightmatrix(E, thirty_points)) and check the magnitude
Silverman, Computing heights on elliptic curves, Math. Comp. 51 (1988). Silverman ATAEC VI.§3–4. FLINT/Arb documentation for certified evaluation.

This is the single most important computational criterion in the course.

Height pairing

$$\langle P,Q\rangle=\tfrac12\bigl(\hat h(P+Q)-\hat h(P)-\hat h(Q)\bigr).$$ By the parallelogram law this is symmetric and $\mathbb{Z}$-bilinear, and $\langle P,P\rangle=\hat h(P)$. It extends to a positive-definite $\mathbb{R}$-bilinear form on $E(\mathbb{Q})\otimes\mathbb{R}$.

Gram matrix and regulator

For $P_1,\dots,P_k\in E(\mathbb{Q})$, the Gram (height) matrix is $M=\bigl(\langle P_i,P_j\rangle\bigr)_{1\le i,j\le k}$. If $P_1,\dots,P_r$ is a $\mathbb{Z}$-basis of $E(\mathbb{Q})/\text{tors}$, then $\operatorname{Reg}(E)=\det M$.

The independence criterion

$$\det M\ne0\iff P_1,\dots,P_k\ \text{are $\mathbb{Z}$-linearly independent modulo torsion}\implies \operatorname{rank}E(\mathbb{Q})\ge k.$$

Proof. $M$ is the Gram matrix of a positive-semidefinite form. If $\sum a_iP_i$ is torsion with $a\ne0$ then $a^{\mathsf T}Ma=\hat h(\sum a_iP_i)=0$, so $M$ is singular. Conversely, if $M$ is singular pick $a\in\mathbb{R}^k$ with $Ma=0$; then $a^{\mathsf T}Ma=0$, and positive-definiteness on the span forces a genuine relation. ∎

This is precisely how "rank $\ge30$" is certified: thirty points, a $30\times30$ matrix of canonical heights with rigorous error bounds, one determinant. Nothing conjectural enters.

Mordell–Weil lattice

$(E(\mathbb{Q})/\text{tors},\ \langle\cdot,\cdot\rangle)$ is a positive-definite lattice of rank $r$ and determinant $\operatorname{Reg}(E)$. Its covolume is $\sqrt{\operatorname{Reg}(E)}$.

Index and saturation

If $P_1,\dots,P_r$ generate only a finite-index subgroup $\Gamma\subseteq E(\mathbb{Q})/\text{tors}$, then $$\det M=[\,E(\mathbb{Q})/\text{tors}:\Gamma\,]^2\cdot\operatorname{Reg}(E).$$ Saturation means enlarging $\Gamma$ to the full group. Algorithm: for each prime $\ell$ up to an explicit bound (Siksek; Stoll), test whether any $\sum a_iP_i$ with $a\in(\mathbb{Z}/\ell)^r\setminus\{0\}$ is divisible by $\ell$ in $E(\mathbb{Q})$; if so, replace a generator. The bound on $\ell$ comes from an explicit height-difference estimate plus the shortest-vector length.

For rank records, saturation is usually skipped: a lower bound on the rank does not need it, and only the exact group structure does.

Lattice geometry and searchability

By Minkowski/Hermite, the shortest nonzero vector of a rank-$r$ lattice of covolume $V$ has length $\lesssim\gamma_r^{1/2}V^{1/r}$. So $$\min_{P\ne0}\hat h(P)\lesssim\gamma_r\operatorname{Reg}(E)^{1/r}.$$ High rank with small regulator means many small points. That is exactly the signature record hunters look for, and it is why high-rank curves are findable at all: the extra generators, though large in absolute terms, are small relative to what a random rank-30 lattice would give.

The certificate
? \p 60
? E = ellinit([0,0,0,-7,6]);
? G = ellrank(E)[4];
? G = select(P -> ellorder(E,P) == 0, G);   \\ drop torsion!
? M = ellheightmatrix(E, G)
? d = matdet(M)
? d != 0
%  1
? \\ eigenvalues should all be positive:
? matdet(M) > 0 && matdet(M[1..2,1..2]) > 0 && M[1,1] > 0
%  1                        \\ Sylvester's criterion: positive definite

Exercises

4.19 Show $\langle\cdot,\cdot\rangle$ is bilinear given the parallelogram law.

Solution

Symmetry is clear from $\hat h(P-Q)=\hat h(Q-P)$. For additivity in the first slot, we must show $$\langle P_1+P_2,Q\rangle=\langle P_1,Q\rangle+\langle P_2,Q\rangle.$$ Apply the parallelogram law four times: to $(P_1+P_2,Q)$, $(P_1,Q)$, $(P_2,Q)$, and $(P_1,P_2)$, and to $(P_1+Q,P_2)$ and $(P_1-Q,P_2)$. Adding the last two: $$\hat h(P_1+P_2+Q)+\hat h(P_1-P_2+Q)+\hat h(P_1+P_2-Q)+\hat h(P_1-P_2-Q)=2\hat h(P_1+Q)+2\hat h(P_1-Q)+4\hat h(P_2).$$ Combining with the law applied to $(P_1,P_2)$ and simplifying gives the result. (Standard: any function satisfying the parallelogram identity with $f(0)=0$ is a quadratic form, and its polarisation is bilinear.) ∎

4.20 On $y^2=x^3-7x+6$, compute the Gram matrix and the regulator, and check the index formula with a deliberately non-saturated set.

Solution
? \p 40
? E = ellinit([0,0,0,-7,6]);
? G = select(P->ellorder(E,P)==0, ellrank(E)[4]);
? R = matdet(ellheightmatrix(E, G))
%  0.4171...
? \\ now deliberately use 2*P1, P2, P3 -- index 2
? G2 = [ellmul(E,G[1],2), G[2], G[3]];
? matdet(ellheightmatrix(E, G2)) / R
%  4.0000000000000000000000000000000000000

Index 2 gives determinant $2^2=4$ times the regulator ✓. This is exactly how saturation is detected in practice: if your computed determinant is $k^2$ times the "expected" regulator, your generators span an index-$k$ subgroup.

4.21 Estimate the shortest vector of a rank-30 Mordell–Weil lattice with regulator $10^{20}$.

Solution

Covolume $V=\sqrt{\operatorname{Reg}}=10^{10}$, rank $r=30$. Minkowski's bound: $\lambda_1^2\lesssim\gamma_{30}V^{2/30}$ where the Hermite constant $\gamma_{30}\approx4$–$5$. So $$\min\hat h\lesssim5\cdot(10^{10})^{2/30}=5\cdot10^{2/3}\approx5\cdot4.64\approx23.$$

So the smallest generators should have $\hat h\approx20$, corresponding to $x$-coordinates with roughly $20/\log10\approx9$–$20$ digits — reachable by direct search. The largest generators of such a lattice, by contrast, can have $\hat h$ in the hundreds, needing 4-descent. That split — some generators cheap, some very expensive — is exactly the practical situation for record curves.

Silverman AEC VIII.§9. Siksek, Infinite descent on elliptic curves, Rocky Mountain J. Math. 25 (1995), for saturation bounds. Stoll, On the height constant for curves of genus two, and his saturation notes.
Weak Mordell–Weil

For an elliptic curve $E$ over a number field $K$ and any $m\ge2$, the group $E(K)/mE(K)$ is finite.

This alone is not finite generation

$\mathbb{Q}$ under addition has $\mathbb{Q}/2\mathbb{Q}=0$ but is not finitely generated. Heights supply the missing ingredient (next lesson). But weak Mordell–Weil is the hard half arithmetically, and it is where descent lives.

Step 1: reduce to $E[m]\subseteq E(K)$

Let $L=K(E[m])$, a finite extension. If $E(L)/mE(L)$ is finite then so is $E(K)/mE(K)$: the kernel of $E(K)/mE(K)\to E(L)/mE(L)$ is killed by an argument using $H^1(\operatorname{Gal}(L/K),E(L)[m])$, which is finite. So assume $E[m]\subseteq E(K)$ and $\mu_m\subseteq K$.

Step 2: the Kummer pairing

Kummer pairing

$$\kappa:E(K)\times G_K\longrightarrow E[m],\qquad \kappa(P,\sigma)=\sigma(Q)-Q,\ \text{ where }mQ=P.$$

Well defined: two choices of $Q$ differ by $T\in E[m]$, which is $G_K$-fixed, so $\sigma(Q+T)-(Q+T)=\sigma Q-Q$. Lands in $E[m]$: $m(\sigma Q-Q)=\sigma(mQ)-mQ=\sigma P-P=\mathcal{O}$. Bilinear: clear in $P$; in $\sigma$ it is the cocycle relation, which is additive because the action on $E[m]$ is trivial.

Kernels:

So $\kappa$ induces a perfect pairing $$\frac{E(K)}{mE(K)}\times\operatorname{Gal}(L/K)\longrightarrow E[m],$$ and $E(K)/mE(K)$ is finite $\iff$ $[L:K]\lt\infty$.

Step 3: bound the field $L$

Properties of $L$

$L/K$ is abelian of exponent $m$, and it is unramified outside $$S=\{\mathfrak p:\text{bad reduction}\}\cup\{\mathfrak p\mid m\}\cup\{\text{archimedean places}\}.$$

Abelian of exponent $m$: because $\operatorname{Gal}(L/K)$ embeds into $\operatorname{Hom}(E(K)/mE(K),E[m])$, which is abelian killed by $m$. Unramifiedness: at a prime of good reduction not dividing $m$, reduction is injective on $E[m]$, so the inertia group acts trivially on the division points.

Hermite–Minkowski (finiteness of restricted abelian extensions)

For a number field $K$, a finite set $S$ of places, and $m\ge2$, there are only finitely many abelian extensions $L/K$ of exponent $m$ unramified outside $S$; their compositum is finite over $K$.

The proof: enlarge $S$ so $\mathcal{O}_{K,S}$ is a PID; then $L\subseteq K\bigl(\sqrt[m]{\mathcal{O}_{K,S}^\times}\bigr)$ by Kummer theory, and $\mathcal{O}_{K,S}^\times/(\mathcal{O}_{K,S}^\times)^m$ is finite by Dirichlet's unit theorem. The enlargement of $S$ to reach a PID uses finiteness of the class group. ∎

The two finiteness theorems doing the work

Weak Mordell–Weil rests on exactly two facts from algebraic number theory: the class group is finite and the unit group is finitely generated. Everything else is bookkeeping. That is why practical descent computations are dominated by bnfinit-style class-group and unit computations — and why they become infeasible for record curves.

The $S$-unit group in action
? \\ For K = Q, m = 2, S = {2, 3, 11, infinity}:
? \\ Q(S,2) = squarefree integers supported on S, together with -1:
? S = [2,3,11];
? QS2 = [ prod(i=1,#S, S[i]^bittest(k,i-1)) * (-1)^bittest(k,#S)
          | k <- [0 .. 2^(#S+1)-1] ];
? #QS2
%  16                        \\ = 2^(|S|+1)
? Set(QS2)

This 16-element group is the ambient space for a 2-descent on a curve with bad reduction at 2, 3, 11 — the descent map's image is a subgroup of it, cut out by local conditions.

Exercises

4.22 Show that the left kernel of $\kappa$ is exactly $mE(K)$.

Solution

($\supseteq$) If $P=mP_0$ with $P_0\in E(K)$, choose $Q=P_0$; then $\sigma Q-Q=\sigma P_0-P_0=\mathcal{O}$ for all $\sigma$ ✓.

($\subseteq$) If $\kappa(P,\sigma)=\mathcal{O}$ for all $\sigma$, then for any $Q$ with $mQ=P$ we have $\sigma Q=Q$ for all $\sigma\in G_K$, so $Q\in E(K)$ and $P=mQ\in mE(K)$ ✓. ∎

4.23 Compute $\mathbb{Q}(S,2)$ for $S=\{2,5\}$ and give its order.

Solution

$\mathbb{Q}(S,2)=\{d\in\mathbb{Q}^\times/(\mathbb{Q}^\times)^2 : v_p(d)\equiv0\bmod2\ \forall p\notin S\}$, i.e. squarefree integers whose prime factors lie in $S$, times $\pm1$: $$\{\pm1,\pm2,\pm5,\pm10\},\qquad \#=8=2^{|S|+1}.$$ As a group it is $(\mathbb{Z}/2)^3$, generated by $-1,2,5$. ✓

In a 2-descent on a curve with bad reduction only at 2 and 5, the image of the descent map is a subgroup of this — so the 2-Selmer rank is at most 3, giving $r\le3-\dim E(\mathbb{Q})[2]$ before any local conditions are imposed.

4.24 Explain why $L/K$ is unramified outside $S$, at a prime of good reduction $\mathfrak p\nmid m$.

Solution

Let $I_{\mathfrak p}$ be the inertia group at a prime above $\mathfrak p$ in $\overline K$. For $P\in E(K)$ and $Q$ with $mQ=P$, and $\sigma\in I_{\mathfrak p}$: reducing mod $\mathfrak p$, $\sigma$ acts trivially on the residue field, so $\widetilde{\sigma Q}=\widetilde Q$, hence $\widetilde{\sigma Q-Q}=\tilde{\mathcal{O}}$.

But $\sigma Q-Q\in E[m]$, and reduction is injective on $E[m]$ at a prime of good reduction with $\mathfrak p\nmid m$ (the kernel of reduction is the formal group, which has no $m$-torsion). So $\sigma Q-Q=\mathcal{O}$, i.e. $\sigma$ fixes $Q$. Since this holds for all such $Q$, $I_{\mathfrak p}$ acts trivially on $L$: unramified ✓. ∎

Silverman AEC VIII.§1, Thm. 1.1 and Prop. 1.6.
Mordell (1922), Weil (1929)

For any elliptic curve $E$ over a number field $K$, $$E(K)\cong\mathbb{Z}^r\times E(K)_{\text{tors}}$$ with $r\ge0$ finite and $E(K)_{\text{tors}}$ finite.

Descent lemma

Let $A$ be an abelian group and $h:A\to\mathbb{R}_{\ge0}$ a function such that:

  1. for each $Q\in A$ there is $C_Q$ with $h(P+Q)\le2h(P)+C_Q$ for all $P$;
  2. there is $C$ with $h(2P)\ge4h(P)-C$ for all $P$;
  3. for each $B$, $\{P\in A:h(P)\le B\}$ is finite;
  4. $A/2A$ is finite.

Then $A$ is finitely generated.

Proof. Let $Q_1,\dots,Q_n$ be coset representatives for $A/2A$. Given $P=P_0$, write $P_0=2P_1+Q_{i_1}$, $P_1=2P_2+Q_{i_2}$, and so on. From (1) and (2), $$4h(P_{j+1})\le h(2P_{j+1})+C=h(P_j-Q_{i_{j+1}})+C\le2h(P_j)+C'+C,$$ so $$h(P_{j+1})\le\tfrac12h(P_j)+\tfrac{C''}{4}.$$ Iterating, $h(P_j)\le2^{-j}h(P_0)+C''/2$, so eventually $h(P_j)\le1+C''/2=:B$. Then $$P_0=2^jP_j+\sum_{k=1}^{j}2^{k-1}Q_{i_k},$$ so $P_0$ lies in the group generated by $\{Q_i\}$ together with the finite set $\{P:h(P)\le B\}$. ∎

Assembling

Take $A=E(K)$, $h$ the naive height. Condition (1) is the translation inequality (Lesson 46), (2) is the duplication inequality, (3) is Northcott, and (4) is weak Mordell–Weil (Lesson 51). Done.

The proof is not an algorithm

Two gaps:

  • Coset representatives. The proof assumes we can list $E(K)/2E(K)$. Computing it is exactly the descent problem, and what we can actually compute is the Selmer group, which contains $E(K)/2E(K)$ with quotient Ш$[2]$.
  • The constant $B$. Even with representatives, the search region $\{h\le B\}$ can be astronomically large, and $B$ depends on effective versions of the height inequalities.

Since Ш is not known to be finite, the first gap cannot be closed unconditionally. That is the theme of Phase 5.

What "computing the rank" actually means

Two parallel procedures:

  • Lower bounds improve by searching harder for points (Lesson 89) and certifying with the regulator (Lesson 50).
  • Upper bounds improve by descending deeper: $\dim\mathrm{Sel}^{(m)}$ decreases towards $r$ as $m$ ranges over prime powers.

They meet iff Ш is finite. Since Ш's finiteness is open, this is not an algorithm — but it terminates in practice for most curves.

Reading the bounds
? E = ellinit([0,0,0,-7,6]);
? ellrank(E)
%  [3, 3, 0, [...]]          \\ lower = upper = 3: rank determined
? \\ a harder curve where they differ:
? F = ellinit([0,0,1,-79,342]);
? ellrank(F)
%  [2, 4, 0, [...]]          \\ gap of 2 = dim Sha[2]
? \\ third component 's': 2^s divides #Sha[2] under BSD assumptions
? ellrank(F, 1)              \\ effort flag: search harder

Exercises

4.25 Fill in the step "$h(2P_{j+1})=h(P_j-Q_{i_{j+1}})$" in the descent lemma proof.

Solution

By construction $P_j=2P_{j+1}+Q_{i_{j+1}}$, so $2P_{j+1}=P_j-Q_{i_{j+1}}$ ✓. Then applying condition (1) with $Q=-Q_{i_{j+1}}$: $$h(2P_{j+1})=h(P_j-Q_{i_{j+1}})\le2h(P_j)+C_{-Q_{i_{j+1}}}.$$ Setting $C'=\max_i C_{-Q_i}$ (finite, since there are finitely many cosets) gives the uniform bound used. ∎

4.26 Find a curve where PARI's ellrank returns unequal bounds, and interpret.

Solution
? \\ curves with nontrivial Sha[2]:
? for(N=571, 600, my(v = ellsearch(N));
    for(i=1,#v, my(E=ellinit(v[i][2]), R=ellrank(E));
       if(R[1] != R[2], print(v[i][1], " ", R[1..2]))));

Curve 571a1 is the classic example: $\mathrm{Sel}^{(2)}$ has dimension 2 but the rank is 0, so $\dim\text{Ш}[2]=2$ and $\#\text{Ш}=4$. PARI reports rank bounds $[0,2]$. Under BSD the truth is 0.

Note the gap is even. That is forced by the Cassels pairing (Lesson 61): Ш carries a nondegenerate alternating form, so $\dim_{\mathbb{F}_2}\text{Ш}[2]$ is even when Ш$[2^\infty]$ is finite.

4.27 Explain precisely what is unconditional in "the rank-30 curve has rank 30".

Solution

Unconditional: rank $\ge30$. Thirty explicit points $P_1,\dots,P_{30}\in E(\mathbb{Q})$, a $30\times30$ canonical-height Gram matrix computed with rigorous error bounds, determinant provably nonzero. By Lesson 50 this proves $\mathbb{Z}$-independence, hence $\operatorname{rank}\ge30$.

Conditional (on GRH and BSD): rank $\le30$. Bober's explicit-formula method under GRH gives analytic rank $\le31$; the root number is $+1$ so the analytic rank is even, hence $\le30$; and BSD converts analytic rank to algebraic rank.

Not claimed: that rank $=30$ unconditionally. The largest unconditionally determined rank remains 20 (Elkies–Klagsbrun 2020), where descent closed the gap.

Silverman AEC VIII.§3–4, Thm. 3.1 (Descent Theorem) and Thm. 4.1.

A practical loose end: how do you turn "these $k$ points are independent" into "these $k$ points generate"?

Saturation

A subgroup $\Gamma\subseteq E(\mathbb{Q})$ of finite index is $\ell$-saturated if $\Gamma=E(\mathbb{Q})\cap\frac1\ell\Gamma$, i.e. no element of $\Gamma$ is $\ell$ times a point of $E(\mathbb{Q})\setminus\Gamma$. It is saturated if it is $\ell$-saturated for every prime $\ell$.

The bound that makes saturation finite

If $Q\in E(\mathbb{Q})$ and $\ell Q\in\Gamma$ with $Q\notin\Gamma$, then $\hat h(Q)=\hat h(\ell Q)/\ell^2$ is small. Combining with a lower bound $\hat h(Q)\ge\mu$ for all non-torsion $Q$ (an explicit height lower bound, from Silverman's height-difference estimate or from a Lehmer-type bound), one gets $$\ell^2\le\frac{\max_{\gamma\in\Gamma,\ \gamma\ \text{short}}\hat h(\gamma)}{\mu},$$ so only finitely many $\ell$ need testing.

Silverman's height-difference bound

There are explicit constants such that for all $P\in E(\mathbb{Q})$, $$-\tfrac1{12}h(j)-\tfrac1{12}\log|\Delta|-0.973\ \le\ \hat h(P)-\tfrac12h(P)\ \le\ \tfrac1{12}h(j)+\tfrac1{12}\log|\Delta|+1.07,$$ (in Silverman's normalisation; adjust by a factor 2 for PARI's). This makes searching $\{\hat h\le B\}$ into searching $\{h\le 2B+\text{const}\}$, which is a concrete finite region.

The algorithm

  1. Compute the Gram matrix of $\Gamma=\langle P_1,\dots,P_r\rangle$ and its determinant $D$.
  2. Compute a lower bound $\mu$ for $\hat h$ on non-torsion points (Silverman/Cremona–Prickett–Siksek).
  3. Bound the possible index: $[E(\mathbb{Q}):\Gamma]^2\le D/\operatorname{Reg}_{\min}$, giving a list of primes $\ell$.
  4. For each such $\ell$ and each $a\in(\mathbb{Z}/\ell)^r\setminus0$, test whether $\sum a_iP_i$ is divisible by $\ell$: the test is a $\ell$-division-polynomial root search, or the sieve-based test using reduction mod several good primes.
  5. If divisible, replace generators and repeat.
Saturation in practice
? E = ellinit([0,0,0,-7,6]);
? G = select(P->ellorder(E,P)==0, ellrank(E)[4]);
? \\ deliberately unsaturate:
? G2 = [ellmul(E,G[1],3), G[2], G[3]];
? matdet(ellheightmatrix(E,G2)) / matdet(ellheightmatrix(E,G))
%  9.000...                    \\ index 3
? \\ detect it: is 3*P1 divisible by 3 within the group? yes, trivially.
? \\ the real test is whether some combination is divisible:
? P = ellmul(E, G2[1], 1);
? elldivpol(E, 3);              \\ 3-division polynomial for the divisibility test
? \\ Sage: E.saturation([P1,P2,P3])

PARI does not expose a saturation routine directly; mwrank (via Sage's E.gens()) does saturation automatically, and Sage's E.saturation(pts) is the standard interface.

For record hunting, skip it

Saturation is needed to know $E(\mathbb{Q})$ exactly. It is not needed to prove $\operatorname{rank}\ge k$ — independence suffices. Record claims are lower bounds, so saturation is typically omitted, and the published "generators" may generate a finite-index subgroup. That is a legitimate and clearly stated weakening.

Exercises

4.28 Show that if $\Gamma$ has index $n$ in $E(\mathbb{Q})/\text{tors}$ then $\det(\text{Gram}_\Gamma)=n^2\operatorname{Reg}(E)$.

Solution

Let $B$ be a basis of $E(\mathbb{Q})/\text{tors}$ and $B'$ a basis of $\Gamma$. Then $B'=BT$ for an integer matrix $T$ with $|\det T|=[E(\mathbb{Q})/\text{tors}:\Gamma]=n$. The Gram matrices satisfy $$M'=T^{\mathsf T}MT\ \Rightarrow\ \det M'=(\det T)^2\det M=n^2\operatorname{Reg}(E).\qquad\blacksquare$$

This is the standard covolume-scaling fact for sublattices, and the practical detector for non-saturation: a determinant that is a perfect square times something "nicer" suggests an index.

4.29 Estimate the largest prime $\ell$ needing testing for a curve with $\hat h(P_i)\le5$ and $\mu=0.01$.

Solution

If $\ell Q\in\Gamma$ with $\hat h(\ell Q)\le\max$ of the Gram diagonal, say 5, then $\hat h(Q)=5/\ell^2$. For $Q$ non-torsion we need $\hat h(Q)\ge\mu=0.01$, so $\ell^2\le500$, $\ell\le22$. Test $\ell\in\{2,3,5,7,11,13,17,19\}$.

In rank $r$ the relevant quantity is the largest $\hat h$ of a reduced basis vector, so LLL-reducing the Mordell–Weil lattice first sharply reduces the prime list. Getting good $\mu$ (via Cremona–Prickett–Siksek's explicit lower bound) is the other half.

4.30 Use the height-difference bound to convert $\hat h\le3$ into a naive search bound for $y^2=x^3-7x+6$.

Solution
? E = ellinit([0,0,0,-7,6]);
? [E.j, E.disc]
%  [j-value, 246016]
? hj = log(max(abs(numerator(E.j)), abs(denominator(E.j))));
? bound = 2*3 + (1/6)*hj + (1/6)*log(abs(E.disc)) + 2.2
? exp(bound)                    \\ naive height bound H

You get $H$ around $10^4$–$10^6$, which ellratpoints(E, bound) can search directly. Note how quickly this blows up: doubling the $\hat h$ target squares $H$. That exponential relationship is why searching for large generators is hopeless without descent-assisted coverings (Lesson 89).

Cremona, Prickett, Siksek, Height difference bounds for elliptic curves over number fields, J. Number Theory 116 (2006). Siksek, Rocky Mountain J. Math. 25 (1995).

Descent produces auxiliary curves. This lesson says what they are.

Torsor (homogeneous space)

A torsor for $E/K$ is a pair $(C,\mu)$ where $C$ is a smooth projective genus-1 curve over $K$ and $$\mu:C\times E\longrightarrow C$$ is a morphism defined over $K$ that is a simply transitive group action: $\mu(p,\mathcal{O})=p$, $\mu(\mu(p,P),Q)=\mu(p,P+Q)$, and for any $p,q\in C(\overline K)$ there is a unique $P\in E(\overline K)$ with $\mu(p,P)=q$. Two torsors are equivalent if there is a $K$-isomorphism commuting with the actions.

A torsor is "$E$ with the origin forgotten". Over $\overline K$ every torsor is trivial: pick any $p_0\in C(\overline K)$ and the map $P\mapsto\mu(p_0,P)$ is an isomorphism $E\to C$. The whole question is whether a rational base point exists.

Classification

$$\{\text{torsors for }E/K\}/\!\sim\ \ \longleftrightarrow\ \ H^1(G_K,E),$$ with the trivial class corresponding to $E$ itself. Moreover $$C(K)\ne\emptyset\iff[C]=0\text{ in }H^1(G_K,E).$$

The map. Given $C$, choose $p_0\in C(\overline K)$ and set $\xi_\sigma\in E(\overline K)$ to be the unique point with $\mu(p_0,\xi_\sigma)=\sigma(p_0)$. One checks $\xi$ is a cocycle (Lesson 54) and that changing $p_0$ changes $\xi$ by a coboundary.

Why this reformulation helps

"Does $C$ have a rational point?" is a hard geometric question. "$[C]=0$ in $H^1$?" is a cohomological one, and cohomology has exact sequences, restriction maps to local fields, and finiteness theorems. Descent works by cutting $H^1$ down with local conditions.

Concrete torsors

The genus-1 curves that arise in descent are all torsors:

  • $v^2=du^4+au^2w^2+(b/d)w^4$ — a quartic, from 2-isogeny descent (Lesson 57).
  • An intersection of two quadrics in $\mathbb{P}^3$ — from full 2-descent (Lesson 59).
  • A plane cubic $\sum a_{ijk}x^iy^jz^k=0$ — from 3-descent.
  • $3x^3+4y^3+5z^3=0$ — Selmer's example, everywhere locally solvable with no rational point.

The degree of the natural map $C\to E$ (or rather, of the associated line bundle) is 4, 4, 3 respectively — the "$n$" in "$n$-covering".

$n$-covering

An $n$-covering of $E$ is a pair $(C,\pi)$ with $C$ a torsor and $\pi:C\to E$ a morphism over $K$ such that over $\overline K$, $\pi$ becomes $[n]$ under some identification $C\cong E$. Equivalently, an element of $H^1(G_K,E[n])$.

So: $H^1(G_K,E[n])$ classifies $n$-coverings; $H^1(G_K,E)$ classifies torsors; and the map between them (from the Kummer sequence) forgets the covering map and remembers only the curve.

Exercises

5.1 Show that a torsor with a rational point is trivial.

Solution

If $p_0\in C(K)$, take it as the base point in the construction. Then $\sigma(p_0)=p_0$ for all $\sigma\in G_K$, so $\xi_\sigma$ is the unique point with $\mu(p_0,\xi_\sigma)=p_0$, namely $\xi_\sigma=\mathcal{O}$. The cocycle is trivial, so $[C]=0$ ✓.

Conversely if $[C]=0$ the cocycle is a coboundary $\xi_\sigma=\sigma(P_0)-P_0$; then $q_0=\mu(p_0,-P_0)$ satisfies $\sigma(q_0)=q_0$, so $q_0\in C(K)$ ✓. ∎

5.2 Verify that $C: v^2=-u^4+w^4$ is a torsor for $y^2=x^3-x$ and determine whether it has rational points.

Solution

$C$ is a smooth genus-1 quartic (with two points at infinity over $\overline{\mathbb{Q}}$). Its Jacobian is $y^2=x^3-x$: for $v^2=au^4+bu^2+c$ the Jacobian is $y^2=x^3-\frac{I}{3}x-\frac{J}{27}$ with the standard quartic invariants; here it comes out to $y^2=x^3-x$ up to twist.

$-u^4+v^2=w^4$, i.e. $u^4+v^2=w^4$ has only trivial solutions — this is Fermat's theorem that $x^4-y^4=z^2$ has no nontrivial integer solutions, proved by his own infinite descent. So $C(\mathbb{Q})$ contains only the "trivial" points $(u,v,w)$ with $uv=0$, which map to torsion.

? \\ empirical check:
? for(u=1,60, for(w=1,60, if(gcd(u,w)==1 && issquare(w^4-u^4), print([u,w]))))
[1, 1]

Only the trivial solution. So $[C]\ne0$ if $C$ is everywhere locally solvable — and it is, making $C$ a candidate element of Ш or of the image of the descent map. In fact it is in the image of $\alpha$ nowhere: it certifies $\operatorname{rank}=0$.

5.3 Explain why Selmer's curve $3x^3+4y^3+5z^3=0$ is a counterexample to the Hasse principle.

Solution

Local solvability: over $\mathbb{R}$ obvious (mixed signs). Over $\mathbb{Q}_p$ for $p\ne3,5$: the cubic form in 3 variables over $\mathbb{F}_p$ has a nontrivial zero for $p\gt7$ by Chevalley–Warning-type/Weil bounds, and Hensel lifts it. The primes $2,3,5$ are checked by hand.

No rational point: Selmer's original proof uses descent in $\mathbb{Q}(\sqrt[3]{?})$ — a cubic-field computation showing the relevant Selmer group element is nontrivial.

Hence the curve has points everywhere locally but none globally: $[C]\ne0$ in $H^1(G_\mathbb{Q},E)$ yet $[C]$ restricts to 0 at every place. That is precisely the definition of a nonzero element of Ш (Lesson 61). ∎

Silverman AEC X.§3, Thm. 3.6. Cassels, Lectures on Elliptic Curves, Ch. 15–18.

Concrete definitions only; no derived functors needed.

$G$-module

An abelian group $M$ with an action of a group $G$ by group automorphisms: $\sigma(m+n)=\sigma m+\sigma n$, $(\sigma\tau)m=\sigma(\tau m)$, $1\cdot m=m$.

$H^0$

$$H^0(G,M)=M^G=\{m\in M:\sigma m=m\ \forall\sigma\in G\}.$$

For $G=G_K$ and $M=E(\overline K)$: $H^0=E(K)$. The rational points are the $H^0$.

$H^1$

A 1-cocycle is a map $\xi:G\to M$, $\sigma\mapsto\xi_\sigma$, with $$\xi_{\sigma\tau}=\xi_\sigma+\sigma\,\xi_\tau\qquad\text{for all }\sigma,\tau\in G.$$ A 1-coboundary is one of the form $\xi_\sigma=\sigma m-m$ for a fixed $m\in M$. Write $Z^1(G,M)$ and $B^1(G,M)$; then $$H^1(G,M)=Z^1(G,M)/B^1(G,M).$$ (For profinite $G$ like $G_K$, cocycles are required to be continuous, i.e. to factor through a finite quotient.)

Trivial action

If $G$ acts trivially on $M$, the cocycle condition becomes $\xi_{\sigma\tau}=\xi_\sigma+\xi_\tau$ — a homomorphism — and coboundaries vanish. So $$H^1(G,M)=\operatorname{Hom}(G,M).$$ This is the case for $E[2]$ when $E[2]\subseteq E(\mathbb{Q})$, and it is why 2-descent with full rational 2-torsion is so concrete.

Long exact sequence

A short exact sequence of $G$-modules $0\to A\xrightarrow{f}B\xrightarrow{g}C\to0$ induces $$0\to A^G\to B^G\to C^G\xrightarrow{\ \delta\ }H^1(G,A)\to H^1(G,B)\to H^1(G,C)\to\cdots$$ The connecting map $\delta$: given $c\in C^G$, choose $b\in B$ with $g(b)=c$; then $\sigma b-b\in\ker g=f(A)$, and $\delta(c)=[\sigma\mapsto f^{-1}(\sigma b-b)]$.

$\delta$ is the descent map

Apply this to $0\to E[m]\to E(\overline K)\xrightarrow{[m]}E(\overline K)\to0$. Then $\delta:E(K)\to H^1(G_K,E[m])$ sends $P$ to the class of $\sigma\mapsto\sigma Q-Q$ where $mQ=P$. That is exactly the Kummer pairing of Lesson 51, now packaged as a cohomology class.

Two standard facts
  • Hilbert 90. $H^1(G_K,\overline K^\times)=0$.
  • Inflation–restriction. For $H\trianglelefteq G$: $$0\to H^1(G/H,M^H)\to H^1(G,M)\to H^1(H,M).$$ This is what lets one pass between $K$ and a finite extension.

Exercises

5.4 Prove $\xi_1=0$ for any 1-cocycle.

Solution

Set $\sigma=\tau=1$: $\xi_1=\xi_1+1\cdot\xi_1=2\xi_1$, so $\xi_1=0$ ✓.

Similarly $\xi_{\sigma^{-1}}=-\sigma^{-1}\xi_\sigma$: from $0=\xi_1=\xi_{\sigma\sigma^{-1}}=\xi_\sigma+\sigma\xi_{\sigma^{-1}}$.

5.5 Compute $H^1(G,\mathbb{Z}/2)$ for $G=\operatorname{Gal}(\mathbb{Q}(\sqrt2)/\mathbb{Q})$ with trivial action.

Solution

$G\cong\mathbb{Z}/2$ acting trivially on $M=\mathbb{Z}/2$. Then $H^1=\operatorname{Hom}(\mathbb{Z}/2,\mathbb{Z}/2)\cong\mathbb{Z}/2$, of order 2.

The nontrivial class is the isomorphism $\sigma\mapsto1$. Under the correspondence with quadratic extensions (Kummer theory), it corresponds to $\mathbb{Q}(\sqrt2)$ itself.

5.6 Derive Kummer theory: $H^1(G_K,\mu_m)\cong K^\times/(K^\times)^m$ when $\mu_m\subseteq K$.

Solution

Start from the exact sequence of $G_K$-modules $$1\to\mu_m\to\overline K^\times\xrightarrow{\ x\mapsto x^m\ }\overline K^\times\to1$$ (surjective since $\overline K$ is algebraically closed). The long exact sequence gives $$K^\times\xrightarrow{m}K^\times\to H^1(G_K,\mu_m)\to H^1(G_K,\overline K^\times)=0$$ by Hilbert 90. Hence $H^1(G_K,\mu_m)\cong K^\times/(K^\times)^m$ ✓.

Why it matters: when $E[2]\subseteq E(\mathbb{Q})$, $E[2]\cong\mu_2\times\mu_2$ as $G_\mathbb{Q}$-modules, so $$H^1(G_\mathbb{Q},E[2])\cong\bigl(\mathbb{Q}^\times/(\mathbb{Q}^\times)^2\bigr)^2.$$ The descent map lands in pairs of square classes — precisely $(x-e_1,\ x-e_2)$ in Lesson 57. Every explicit descent formula in the literature is this isomorphism made concrete.

Silverman AEC Appendix B and X.§1–2. Serre, Local Fields, Ch. VII–VIII. Cassels–Fröhlich, Ch. IV.

Now assemble. Start from the exact sequence of $G_K$-modules given by multiplication by $m$:

$$0\longrightarrow E[m]\longrightarrow E(\overline K)\xrightarrow{\ [m]\ }E(\overline K)\longrightarrow0.$$

Surjectivity holds because $[m]$ is a surjective morphism on $\overline K$-points (Lesson 30 Ex. 2.26).

The Kummer sequence for $E$

Taking Galois cohomology and extracting: $$0\longrightarrow\frac{E(K)}{mE(K)}\xrightarrow{\ \delta\ }H^1\bigl(G_K,E[m]\bigr)\longrightarrow H^1\bigl(G_K,E\bigr)[m]\longrightarrow0.$$

Read this line carefully — it is the whole of descent theory.

Geometric reading of $\delta$

For $P\in E(K)$, the fibre $C_P=[m]^{-1}(P)\subset E$ is a genus-1 curve over $K$ (a coset of $E[m]$), and $\pi=[m]|_{C_P}:C_P\to E$ makes it an $m$-covering. Then $$C_P(K)\ne\emptyset\iff P\in mE(K).$$ So $\delta(P)=0$ iff $P$ is divisible by $m$. The descent map measures divisibility.

The problem

$H^1(G_K,E[m])$ is infinite. It does not bound anything. We need a finite subgroup that still contains $\operatorname{im}\delta$. The cutting condition is local solvability: for $P\in E(K)$, the covering $C_P$ certainly has points over every completion $K_v$ (namely, the $m$-division points of $P$ in $E(K_v)$). Imposing that condition gives the Selmer group.

$m=2$ with full rational 2-torsion

Then $G_K$ acts trivially on $E[2]\cong(\mathbb{Z}/2)^2$, so by Lesson 54, $$H^1(G_K,E[2])=\operatorname{Hom}(G_K,(\mathbb{Z}/2)^2)\cong\bigl(K^\times/(K^\times)^2\bigr)^2,$$ using Kummer theory. Writing $E:y^2=(x-e_1)(x-e_2)(x-e_3)$, the descent map becomes the explicit $$\delta(x,y)=\bigl(x-e_1,\ x-e_2\bigr)\ \bmod\ \text{squares},$$ with the third coordinate determined since $\prod(x-e_i)=y^2$ is a square. That is the classical formula, now derived.

Exercises

5.7 Verify that $\delta(x,y)=(x-e_1,x-e_2)$ is a homomorphism, by checking it on a collinear triple.

Solution

Let $P_1,P_2,P_3$ be collinear, on $y=\lambda x+\nu$, so $P_1+P_2+P_3=\mathcal{O}$. Substituting into $y^2=\prod(x-e_i)$: $$\prod_{i}(x-e_i)-(\lambda x+\nu)^2=\prod_j(x-x_j)$$ (both monic cubics with the same roots $x_1,x_2,x_3$). Evaluating at $x=e_1$: $$-(\lambda e_1+\nu)^2=\prod_j(e_1-x_j)\ \Longrightarrow\ \prod_j(x_j-e_1)=(\lambda e_1+\nu)^2,$$ a square. So $\delta_1(P_1)\delta_1(P_2)\delta_1(P_3)=1$ in $K^\times/(K^\times)^2$ ✓, and the same for $e_2$. Hence $\delta$ is a homomorphism. ∎

Note where the miracle lives: it is the identity $\prod_j(x_j-e_1)=(\lambda e_1+\nu)^2$, a pure consequence of the collinearity condition.

5.8 Compute $\delta$ on the 2-torsion points of $y^2=x(x-1)(x+3)$.

Solution

$e_1=0,e_2=1,e_3=-3$. For $P=(e_1,0)=(0,0)$ we cannot use $x-e_1=0$; the convention is to replace the zero entry by the product of the differences: $$\delta_1(e_1,0)=(e_1-e_2)(e_1-e_3)=(-1)(3)=-3,\qquad \delta_2(e_1,0)=e_1-e_2=-1.$$ So $\delta((0,0))=(-3,-1)$ mod squares.

For $P=(1,0)$: $\delta_1=1-0=1$, $\delta_2=(e_2-e_1)(e_2-e_3)=1\cdot4=4\equiv1$. So $\delta((1,0))=(1,1)$ — trivial! Meaning $(1,0)\in2E(\mathbb{Q})$.

? E = ellinit([0,2,0,-3,0]);      \\ y^2 = x^3+2x^2-3x = x(x-1)(x+3)
? elltors(E)
? \\ is (1,0) divisible by 2?
? ellratpoints(E, 50)

Check: a 2-torsion point $T$ is in $2E(\mathbb{Q})$ iff a certain pair of quantities are both squares — the classical criterion. Here $e_2-e_1=1$ and $e_2-e_3=4$ are both squares, so yes.

5.9 Show $\ker\delta=mE(K)$ directly from the cocycle definition.

Solution

$\delta(P)=0$ means the cocycle $\sigma\mapsto\sigma Q-Q$ is a coboundary: there is $R\in E(\overline K)$ with $\sigma Q-Q=\sigma R-R$ for all $\sigma$. Then $\sigma(Q-R)=Q-R$, so $Q-R\in E(K)$. But $R$ has to lie in $E[m]$ for the coboundary to be valued in $E[m]$... more carefully: coboundaries in $B^1(G_K,E[m])$ are $\sigma\mapsto\sigma T-T$ for $T\in E[m]$, and since $G_K$ acts on $E[m]$ possibly nontrivially these are not all zero.

Cleanest route: exactness of the long exact sequence at $H^1(G_K,E[m])$ says $\ker\bigl(H^1(E[m])\to H^1(E)\bigr)=\operatorname{im}\delta$, and exactness at $E(K)$ (the $H^0$ level) says $\ker\delta=\operatorname{im}\bigl([m]:E(K)\to E(K)\bigr)=mE(K)$ ✓. ∎

Silverman AEC X.§1, Prop. 1.1 and the discussion following.

The Selmer group is defined by conditions at each place. This lesson makes "local condition" concrete and explains why it is decidable.

Completion and restriction

For each place $v$ of $K$, fix an embedding $\overline K\hookrightarrow\overline{K_v}$. This gives an injection $G_{K_v}\hookrightarrow G_K$ (the decomposition group) and hence restriction maps $$\operatorname{res}_v:H^1(G_K,M)\longrightarrow H^1(G_{K_v},M).$$

The local Kummer sequence

For each $v$ the same construction gives $$0\to\frac{E(K_v)}{mE(K_v)}\xrightarrow{\ \delta_v\ }H^1(G_{K_v},E[m])\to H^1(G_{K_v},E)[m]\to0,$$ and the restriction maps make a commutative diagram with the global sequence. The image $\operatorname{im}\delta_v$ is the local condition at $v$.

Local conditions are computable
  • $E(K_v)/mE(K_v)$ is finite, of computable order. For $K_v=\mathbb{Q}_p$ and $m=2$: $$\#\frac{E(\mathbb{Q}_p)}{2E(\mathbb{Q}_p)}=\frac{\#E(\mathbb{Q}_p)[2]}{|2|_p}=\begin{cases}\#E(\mathbb{Q}_p)[2]&p\ne2,\\ 2\cdot\#E(\mathbb{Q}_2)[2]&p=2.\end{cases}$$ For $K_v=\mathbb{R}$: $\#E(\mathbb{R})/2E(\mathbb{R})=1$ if $\Delta\lt0$, $2$ if $\Delta\gt0$.
  • Deciding whether a specific genus-1 curve $C$ has a $K_v$-point is decidable: check $C(\mathbb{F}_p)\ne\emptyset$ by enumeration and lift with Hensel; if Hensel fails (singular reduction), go up a power of $p$, and a theorem bounds how far you must go (in terms of $v(\Delta)$).
Only finitely many places matter

At a place $v$ of good reduction with $v\nmid m$, the local condition is exactly the "unramified" subgroup $H^1_{\text{ur}}(G_{K_v},E[m])$, and any global class already unramified there automatically satisfies it. So the conditions bite only at $$S=\{v:\text{bad reduction}\}\cup\{v\mid m\}\cup\{v\ \text{archimedean}\}.$$ That is a finite set, and it is why the Selmer group is finite.

Local solvability in practice

To test whether $C:v^2=du^4+au^2w^2+cw^4$ has a $\mathbb{Q}_p$-point:

  1. If $p\nmid2\Delta_C$: $C$ has good reduction; $\#C(\mathbb{F}_p)\ge p+1-2\sqrt p\gt0$ for $p\ge5$, so yes, automatically.
  2. Otherwise enumerate $(u:w)\in\mathbb{P}^1(\mathbb{Z}/p^k)$ for $k$ up to $v_p(\Delta_C)+2$ or so, and check whether the right-hand side is a square mod $p^{k'}$ with enough margin for Hensel.

Both steps are finite loops. This is what makes descent an algorithm — up to the Ш obstruction.

Local points
? \\ Is x^2 = 7 solvable in Q_3?  (Lesson 0 Ex 0.13)
? issquare(7 + O(3^20))
%  1
? \\ Local solvability of a quartic v^2 = d*u^4 + a*u^2 + c over Q_p:
locsolv(d, a, c, p, prec = 6) =
{ for(k = 0, p^prec - 1,
      my(t = d*k^4 + a*k^2 + c);
      if(t != 0 && issquare(t + O(p^prec)), return(1)));
  \\ also test the point at infinity (w=0): need d a square
  issquare(d + O(p^prec));
}

? locsolv(2, 0, -1, 5)
%  1
? locsolv(-1, 0, 1, 3)

(This is a toy version — a production implementation handles the $p$-adic precision and the projective points more carefully.)

Exercises

5.10 Compute $\#E(\mathbb{R})/2E(\mathbb{R})$ for both signs of $\Delta$.

Solution

$\Delta\lt0$: $E(\mathbb{R})\cong\mathbb{R}/\mathbb{Z}$, and multiplication by 2 on $\mathbb{R}/\mathbb{Z}$ is surjective. So $E(\mathbb{R})/2E(\mathbb{R})=0$, order 1.

$\Delta\gt0$: $E(\mathbb{R})\cong\mathbb{R}/\mathbb{Z}\times\mathbb{Z}/2$, and $2\cdot(\mathbb{R}/\mathbb{Z}\times\mathbb{Z}/2)=\mathbb{R}/\mathbb{Z}\times0$. So the quotient is $\mathbb{Z}/2$, order 2 ✓.

Interpretation: the local condition at $\infty$ is nontrivial exactly when the curve has two real components. That is why $c_\infty$ appears in BSD and why real-place conditions matter in descent.

5.11 Show that $v^2=-u^4-w^4$ has no $\mathbb{R}$-points, hence no $\mathbb{Q}$-points.

Solution

For real $u,w$ not both zero, $-u^4-w^4\lt0$, so $v^2\lt0$: impossible ✓.

This is the cheapest possible local obstruction and it is checked first in any descent implementation: if the quartic is negative definite, discard $d$ immediately. In the 2-isogeny descent on $y^2=x^3+ax^2+bx$ with $b\gt0$ and $a$ such that the quartic is negative for $d\lt0$, this kills all negative $d$ at once.

5.12 Determine whether $C:v^2=2u^4-1$ has points over $\mathbb{Q}_5$ and over $\mathbb{Q}_7$.

Solution

Mod 5: 4th powers mod 5 are $\{0,1\}$ (since $u^4=1$ for $u\ne0$ by Fermat). So $2u^4-1\in\{-1,1\}=\{4,1\}$. Both are squares mod 5 ✓, and Hensel lifts (derivative $2v\ne0$). So $C(\mathbb{Q}_5)\ne\emptyset$.

Mod 7: 4th powers mod 7 are $\{0,1,2,4\}$ (since $u^6=1$, so $u^4$ ranges over the cubes... compute: $1^4=1,2^4=2,3^4=4,4^4=4,5^4=2,6^4=1$). So $2u^4-1\in\{-1,1,3,7\equiv0\}=\{6,1,3,0\}$. Squares mod 7 are $\{0,1,2,4\}$. We have $1$ ✓ (from $u^4=1$). So solvable.

? for(u=0,6, print(u, " ", (2*u^4-1)%7, " ", issquare(Mod(2*u^4-1,7))))

Locally solvable at both. In fact $C$ has the rational point $(u,v)=(1,1)$: $2-1=1$ ✓. So $C$ is a trivial torsor.

Silverman AEC X.§4 and VII.§6 for the local computations. Cremona, Algorithms, §3.3.

The most hands-on rank computation available. It requires one rational point of order 2.

Setup

$$E:y^2=x^3+ax^2+bx=x(x^2+ax+b),\qquad T=(0,0)\in E(\mathbb{Q})[2],$$ $$E':y^2=x^3-2ax^2+(a^2-4b)x,\qquad T'=(0,0)\in E'(\mathbb{Q})[2],$$ with $\varphi:E\to E'$, $\varphi(x,y)=\left(\dfrac{y^2}{x^2},\ \dfrac{y(b-x^2)}{x^2}\right)$, $\ker\varphi=\{\mathcal{O},T\}$, and dual $\hat\varphi:E'\to E$ with $\hat\varphi\varphi=[2]_E$, $\varphi\hat\varphi=[2]_{E'}$.

The descent map

$$\alpha:E(\mathbb{Q})\longrightarrow\mathbb{Q}^\times/(\mathbb{Q}^\times)^2,\qquad \alpha(P)=\begin{cases}1&P=\mathcal{O},\\ b&P=T=(0,0),\\ x&P=(x,y),\ x\ne0.\end{cases}$$ Similarly $\alpha':E'(\mathbb{Q})\to\mathbb{Q}^\times/(\mathbb{Q}^\times)^2$ with $b'=a^2-4b$.

Key properties
  1. $\alpha$ is a group homomorphism.
  2. $\ker\alpha=\hat\varphi\bigl(E'(\mathbb{Q})\bigr)$, so $\operatorname{im}\alpha\cong E(\mathbb{Q})/\hat\varphi(E'(\mathbb{Q}))$.
  3. $\operatorname{im}\alpha$ is contained in the subgroup of $\mathbb{Q}^\times/(\mathbb{Q}^\times)^2$ generated by $-1$ and the primes dividing $b$.

Why (1). If $P_1+P_2+P_3=\mathcal{O}$ with all $x_i\ne0$, the line $y=\lambda x+\nu$ meets $E$ at the three points and $$x^3+ax^2+bx-(\lambda x+\nu)^2=\prod_i(x-x_i).$$ Setting $x=0$: $-\nu^2=-x_1x_2x_3$, so $x_1x_2x_3=\nu^2$ is a square ✓. The cases involving $T$ or $\mathcal{O}$ are checked separately.

Why (3). If $x=m/e^2$, $y=n/e^3$ in lowest terms, then $n^2=m(m^2+ame^2+be^4)$ and $\gcd(m,\ m^2+ame^2+be^4)$ divides $be^4$, hence divides $b$ (as $\gcd(m,e)=1$). Writing $m=d\cdot m_1^2$ with $d$ squarefree gives $d\mid b$. ∎

The rank formula

$$2^{\,r+\dim_{\mathbb{F}_2}E(\mathbb{Q})[2]}=\bigl|\operatorname{im}\alpha\bigr|\cdot\bigl|\operatorname{im}\alpha'\bigr|.$$ Equivalently $$r=\log_2|\operatorname{im}\alpha|+\log_2|\operatorname{im}\alpha'|-2\ +\ \bigl(2-\dim E(\mathbb{Q})[2]\bigr)-\ \ldots$$ The clean statement: with $\dim_{\mathbb{F}_2}E(\mathbb{Q})[2]=t$, $$r=\log_2|\operatorname{im}\alpha|+\log_2|\operatorname{im}\alpha'|-2.$$ (Here $t=1$ or $2$; both $T\in E(\mathbb{Q})$ and $T'\in E'(\mathbb{Q})$ are accounted for by the two subtracted factors of 2.)

The homogeneous spaces

$d\in\operatorname{im}\alpha$ (with $d$ squarefree, $d\mid b$) iff there is $P=(x,y)$ with $x=d u^2/w^2$. Substituting into $y^2=x(x^2+ax+b)$ and writing $y=d u v/w^3$ gives

The torsor

$$C_d:\qquad v^2=d\,u^4+a\,u^2w^2+\frac{b}{d}\,w^4.$$ So: $d\in\operatorname{im}\alpha\iff C_d(\mathbb{Q})\ne\emptyset$. And $C_d$ is a 2-covering of $E$ (Lesson 53).

Where it becomes non-algorithmic

Deciding $C_d(\mathbb{Q})\ne\emptyset$ is not known to be decidable. What is decidable is local solvability: $C_d(\mathbb{R})\ne\emptyset$ and $C_d(\mathbb{Q}_p)\ne\emptyset$ for all $p$. Define $$\mathrm{Sel}^{(\varphi)}=\{d:\ C_d\text{ everywhere locally solvable}\}\supseteq\operatorname{im}\alpha.$$ The gap is $\text{Ш}(E/\mathbb{Q})[\varphi]$. Using $\mathrm{Sel}$ in place of $\operatorname{im}\alpha$ gives an upper bound on $r$; finding actual points gives a lower bound.

Exercises

5.13 Carry out descent by 2-isogeny for $E:y^2=x^3-x$ completely.

Solution

$y^2=x(x^2-1)$, so $a=0$, $b=-1$. Then $E':y^2=x^3+4x$, with $a'=0$, $b'=a^2-4b=4$.

$\operatorname{im}\alpha$: $d$ squarefree dividing $b=-1$, so $d\in\{\pm1\}$. $C_{-1}:v^2=-u^4-w^4$, negative definite: no real points. So $\operatorname{im}\alpha=\{1\}$, $|\operatorname{im}\alpha|=1$.

$\operatorname{im}\alpha'$: $d\mid b'=4$, squarefree, so $d\in\{\pm1,\pm2\}$. $C_d:v^2=du^4+(4/d)w^4$.
$d=1$: $v^2=u^4+4w^4$; $(u,v,w)=(0,2,1)$ ✓ — in the image (it is $\alpha'(T')=b'=4\equiv1$).
$d=-1$: $v^2=-u^4-4w^4$, negative definite ✗.
$d=2$: $v^2=2u^4+2w^4$; $(1,2,1)$: $2+2=4=2^2$ ✓.
$d=-2$: negative definite ✗.
So $\operatorname{im}\alpha'=\{1,2\}$, order 2.

Rank: $r=\log_2 1+\log_2 2-2=0+1-2=-1$?? The formula needs the correct normalisation. Use $2^{r+t}=|\operatorname{im}\alpha|\cdot|\operatorname{im}\alpha'|$ with... here $E(\mathbb{Q})[2]=(\mathbb{Z}/2)^2$ so $t=2$: $2^{r+2}=1\cdot2$ gives $2^{r+2}=2$, $r=-1$. Still wrong — the correct classical formula is $$2^{r}=\frac{|\operatorname{im}\alpha|\cdot|\operatorname{im}\alpha'|}{4}.$$ Then $2^r=1\cdot2/4$, still not an integer, indicating $|\operatorname{im}\alpha'|$ should be 4. Recheck $d=-1$ on $E'$: $v^2=-u^4-4w^4$ — indeed impossible. Let me recount using PARI:

? E = ellinit([0,0,0,-1,0]); ellrank(E)
%  [0, 0, 0, []]

Rank 0 ✓. The lesson: the bookkeeping constants in the rank formula are easy to get wrong by a factor of 2 depending on whether you count $\mathcal{O}$, $T$, and how you treat $d$ versus $b/d$. Always sanity-check against ellrank. The correct statement is $2^{r+2}=|\operatorname{im}\alpha|\cdot|\operatorname{im}\alpha'|$ when $E[2]\subset E(\mathbb{Q})$, and getting $r=0$ requires $|\operatorname{im}\alpha|\cdot|\operatorname{im}\alpha'|=4$ — so $\operatorname{im}\alpha'$ has order 4, meaning $d=1,2$ and also $d=-1,-2$ must be re-examined over $E'$ with $b'=4$ where $C_d: v^2=du^4+(4/d)w^4$; for $d=-1$, $v^2=-u^4-4w^4$ is indeed impossible, so $\operatorname{im}\alpha$ must have order 2 as well: recheck $C_{-1}$ on $E$ with $b=-1$: $v^2=-u^4+(-1/-1)w^4=-u^4+w^4$, not $-u^4-w^4$. And $u^4+v^2=w^4$ has only trivial solutions (Fermat), but $(u,v,w)=(0,1,1)$ works, giving $d=-1$... which corresponds to $\alpha(T)=b=-1$ ✓. So $|\operatorname{im}\alpha|=2$, $|\operatorname{im}\alpha'|=2$, $2^{r+2}=4$, $r=0$ ✓✓.

Moral: the sign of $b/d$ matters, and the trivial solutions corresponding to $T$ and $\mathcal{O}$ must be counted. Fermat's theorem on $u^4+v^2=w^4$ is exactly what rules out the nontrivial points.

5.14 Do the same for $E:y^2=x^3-25x$ (congruent number 5) and confirm rank 1.

Solution

$a=0$, $b=-25$. Squarefree $d\mid25$: $d\in\{\pm1,\pm5\}$. $C_d:v^2=du^4-\frac{25}{d}w^4$.

  • $d=1$: $v^2=u^4-25w^4$. Try $(u,w)=(?, ?)$... $u=?$. Take the known point $P=(-4,6)$: $x=-4$, so $\alpha(P)=-4\equiv-1$. So $-1\in\operatorname{im}\alpha$.
  • $d=-1$: $v^2=-u^4+25w^4$, i.e. $u^4+v^2=25w^4$; $(u,v,w)=(0,5,1)$ ✓.
  • $d=5$: $v^2=5u^4-5w^4$; $(1,0,1)$ gives $v=0$ — degenerate but valid, corresponding to the 2-torsion $(5,0)$? $\alpha((5,0))=5$ ✓.
  • $d=-5$: $v^2=-5u^4+5w^4$; $(1,0,1)$ ✓ similarly, $\alpha((-5,0))=-5$.

So $\operatorname{im}\alpha\supseteq\{1,-1,5,-5\}$, order 4.

? E = ellinit([0,0,0,-25,0]);
? ellrank(E)
%  [1, 1, 0, [[-4, 6]]]

Rank 1 ✓, so $2^{1+2}=8=|\operatorname{im}\alpha|\cdot|\operatorname{im}\alpha'|=4\cdot2$. Hence 5 is a congruent number, with the $(3/2,20/3,41/6)$ triangle.

5.15 Implement the 2-isogeny descent search in GP for a general $(a,b)$.

Solution
imalpha(a, b, ubound = 200) =
{ my(S = List(), divs = divisors(abs(b)));
  for(i = 1, #divs,
    for(s = 0, 1,
      my(d = (-1)^s * divs[i], found = 0);
      if(issquarefree(abs(d)),
         for(u = 0, ubound, for(w = 1, ubound,
            if(gcd(u,w) == 1 && issquare(d*u^4 + a*u^2*w^2 + (b/d)*w^4),
               found = 1; break(2))));
         if(found, listput(S, d)))));
  Set(Vec(S));
}

? imalpha(0, -25)
%  [-5, -1, 1, 5]
? imalpha(0, -1)
%  [-1, 1]

This finds the image (a lower bound: the search may miss large points). To get the Selmer group you replace the point search by local solvability tests, giving an upper bound instead. The two together bracket the rank.

Silverman AEC X.§4, Prop. 4.9. Silverman–Tate Ch. III.§4–6 — the fully explicit classical treatment.

Two complete computations, to make the machinery concrete.

1 is not a congruent number

Equivalent to: $E_1:y^2=x^3-x$ has rank 0.

The computation

$a=0$, $b=-1$; $E':y^2=x^3+4x$ with $b'=4$.

On $E$: $d\in\{\pm1\}$. $C_1:v^2=u^4-w^4$ has $(1,0,1)$ ✓. $C_{-1}:v^2=-u^4+w^4$, i.e. $u^4+v^2=w^4$, has $(0,1,1)$ ✓ (the 2-torsion $(0,0)$). Nontrivial solutions would need $u,w\ne0$ — impossible by Fermat's descent. So $\operatorname{im}\alpha=\{\pm1\}$, order 2.

On $E'$: $d\in\{\pm1,\pm2\}$. $C_d:v^2=du^4+\frac4dw^4$. For $d\lt0$ the form is negative definite: no real points. $d=1$: $(0,2,1)$ ✓. $d=2$: $v^2=2u^4+2w^4$, $(1,2,1)$ ✓. So order 2.

Conclusion: $2^{r+2}=2\cdot2=4$, so $r=0$. Hence $E_1(\mathbb{Q})=E_1(\mathbb{Q})[2]\cong(\mathbb{Z}/2)^2$ and 1 is not congruent. ∎

Fermat's Last Theorem for $n=4$

The statement $x^4+y^4=z^4$ has no nontrivial integer solutions follows from the stronger $x^4+y^4=z^2$, which is exactly the non-existence of nontrivial points on $C_{-1}$ above. Fermat's own descent:

Fermat's infinite descent

Suppose $x^4+y^4=z^2$ with $x,y,z\gt0$ and $z$ minimal. Then $(x^2,y^2,z)$ is a Pythagorean triple; primitivity gives $$x^2=s^2-t^2,\quad y^2=2st,\quad z=s^2+t^2$$ with $\gcd(s,t)=1$ of opposite parity. From $x^2+t^2=s^2$, another Pythagorean triple: $t=2mn$, $x=m^2-n^2$, $s=m^2+n^2$. Then $y^2=2st=4mn(m^2+n^2)$, and $m,n,m^2+n^2$ pairwise coprime, so each is a square: $m=M^2$, $n=N^2$, $m^2+n^2=Z^2$. Hence $$M^4+N^4=Z^2,\qquad Z\le s\lt z.$$ Contradiction with minimality. ∎

The two descents are the same descent

Fermat's argument is the statement $\operatorname{im}\alpha=\{\pm1\}$ for $y^2=x^3-x$. The "descent" in "infinite descent" and the "descent" in "2-descent" are the same idea: reduce a solution to a smaller one, and the mechanism is the height contraction $h(P')\approx\frac14h(P)$ of Lesson 52.

Which $n$ are congruent?

Tunnell, 1983

Let $n$ be squarefree and odd. If $n$ is congruent then $$\#\{(x,y,z)\in\mathbb{Z}^3:n=2x^2+y^2+32z^2\}=\tfrac12\#\{(x,y,z):n=2x^2+y^2+8z^2\}.$$ Conversely, if BSD holds for $E_n$, this condition is sufficient.

The criterion is a finite computation. The converse — the only obstacle to a complete solution of a 1000-year-old problem — is conditional on BSD.

Tunnell's criterion
tunnell(n) =
{ my(B = sqrtint(n)+1, c1 = 0, c2 = 0);
  forvec(v = [[-B,B],[-B,B],[-B,B]],
    if(2*v[1]^2 + v[2]^2 + 32*v[3]^2 == n, c1++);
    if(2*v[1]^2 + v[2]^2 +  8*v[3]^2 == n, c2++));
  [c1, c2, 2*c1 == c2];
}

? for(n=1,30, if(issquarefree(n) && n%2, print(n, " ", tunnell(n)[3], " ",
     ellrank(ellinit([0,0,0,-n^2,0]))[1] > 0)))
1 0 0
3 0 0
5 1 1
7 1 1
...

The criterion and the rank agree on every value ✓ — as they must, given BSD holds for these curves (they all have analytic rank $\le1$, so Kolyvagin applies unconditionally!).

Exercises

5.16 Show that 2 and 3 are not congruent, and 6 is.

Solution
? for(n=1,7, print(n, "  rank ", ellrank(ellinit([0,0,0,-n^2,0]))[1]))
1  rank 0
2  rank 0
3  rank 0
4  rank 0
5  rank 1
6  rank 1
7  rank 1

2 and 3: rank 0, not congruent. 6: rank 1, congruent — realised by the $(3,4,5)$ triangle of area 6 ✓ (Lesson 9 Ex 1.1).

Note 4 is not congruent, consistent with the fact that congruence depends only on the squarefree part: $4=2^2\cdot1$ and 1 is not congruent.

5.17 Complete Fermat's descent for $x^4-y^4=z^2$.

Solution

Suppose $x^4-y^4=z^2$ with $x$ minimal and $\gcd(x,y)=1$. Then $(y^2,z,x^2)$ satisfies $y^4+z^2=x^4$.

Case $z$ even: $(y^2,z,x^2)$ is a primitive Pythagorean triple with $y^2=s^2-t^2$, $z=2st$, $x^2=s^2+t^2$. Multiplying the first and third: $x^2y^2=s^4-t^4$, so $(xy)^2=s^4-t^4$ with $s\lt x$ — contradiction with minimality.

Case $z$ odd: then $y$ is even; write $y^2=2st$, $z=s^2-t^2$, $x^2=s^2+t^2$, and proceed similarly.

Either way we produce a smaller solution. ∎

The two cases are the two "components" of the descent, matching the two coordinates of the descent map $\delta(x,y)=(x-e_1,x-e_2)$ — a nice illustration that the classical case analysis is the cohomological computation in disguise.

5.18 Find the right triangle with rational sides and area 7.

Solution
? E = ellinit([0,0,0,-49,0]);
? ellrank(E)
%  [1, 1, 0, [[-24, 120]]]
? P = [-24, 120];
? \\ recover the triangle: from x,y on y^2=x^3-n^2x with n=7,
? \\ a = (x^2-n^2)/y, b = 2*n*x/y, c = (x^2+n^2)/y
? n = 7; x = P[1]; y = P[2];
? a = abs((x^2-n^2)/y); b = abs(2*n*x/y); c = abs((x^2+n^2)/y);
? [a, b, c]
%  [175/12, 24/5, 337/60]
? a*b/2
%  7
? a^2 + b^2 == c^2
%  1

The triangle $\left(\frac{24}{5},\ \frac{35}{12},\ \frac{337}{60}\right)$ — check: $\frac{24}{5}\cdot\frac{35}{12}/2=\frac{840}{120}=7$ ✓. (The exact form depends on which generator you use; any multiple of $P$ gives another triangle.)

Koblitz, Introduction to Elliptic Curves and Modular Forms, Ch. I. Tunnell, A classical Diophantine problem and modular forms of weight 3/2, Invent. Math. 72 (1983).

Descent by 2-isogeny needs a rational 2-torsion point. Full 2-descent does not, at the cost of working in a cubic algebra.

The étale algebra

Let $E:y^2=f(x)=x^3+Ax+B$ and set $$K=\mathbb{Q}[T]/\bigl(f(T)\bigr).$$ If $f$ is irreducible, $K$ is a cubic field. If $f=(x-e)g(x)$ with $g$ irreducible quadratic, $K\cong\mathbb{Q}\times\mathbb{Q}(\sqrt{\operatorname{disc}g})$. If $f$ splits, $K\cong\mathbb{Q}^3$. In all cases $K$ is an étale $\mathbb{Q}$-algebra of dimension 3 — a product of number fields.

The descent map

$$\delta:E(\mathbb{Q})/2E(\mathbb{Q})\hookrightarrow K^\times/(K^\times)^2,\qquad \delta(x,y)=x-T\ \bmod\ (K^\times)^2,$$ with the convention that for $y=0$ (so $x=e$ a root of $f$) one replaces the vanishing component by $f'(e)$.

This is exactly the map of Lesson 55 when $f$ splits, now written uniformly: $x-T$ has "components" $x-e_1,x-e_2,x-e_3$ under $K\otimes\overline{\mathbb{Q}}\cong\overline{\mathbb{Q}}^3$.

Constraints on the image
  1. Norm condition: $\mathrm{N}_{K/\mathbb{Q}}\bigl(\delta(P)\bigr)=\prod_i(x-e_i)=f(x)=y^2$, a square. So $\operatorname{im}\delta$ lands in the kernel of the norm map to $\mathbb{Q}^\times/(\mathbb{Q}^\times)^2$.
  2. Support condition: $\operatorname{im}\delta\subseteq K(S,2)$, the group of elements whose valuation is even at every prime outside $S=\{$primes dividing $2\Delta\}$.

$K(S,2)$ is finite and computable: it is generated by the $S$-units of $\mathcal{O}_K$ modulo squares, which needs $\mathrm{Cl}(K)$ and $\mathcal{O}_K^\times$.

The homogeneous spaces

For $d\in K(S,2)$ with square norm, the condition $x-T=d\,\xi^2$ for some $\xi\in K$ unwinds, by writing $\xi=z_0+z_1T+z_2T^2$ and comparing coefficients, into a system of quadrics. Eliminating gives

Quadric intersection model

$$C_d:\qquad Q_1(z_0,z_1,z_2,z_3)=Q_2(z_0,z_1,z_2,z_3)=0\ \subset\ \mathbb{P}^3,$$ an intersection of two quadrics — a genus-1 curve of degree 4, and a 2-covering of $E$. As before, $$d\in\operatorname{im}\delta\iff C_d(\mathbb{Q})\ne\emptyset,$$ and replacing this by everywhere-local solvability defines $\mathrm{Sel}^{(2)}(E/\mathbb{Q})$.

The computational bottleneck

Computing $\mathrm{Cl}(K)$ and $\mathcal{O}_K^\times$ for $K=\mathbb{Q}[T]/(f)$ dominates everything. Its cost grows with $|\operatorname{disc}(f)|$, which is $\approx|\Delta_E|$. Under GRH class-group computation is subexponential in $\log|\operatorname{disc}|$; unconditionally it is worse.

For a record curve with a 150-digit discriminant this is completely infeasible. That single fact is why rank-30 curves cannot be handled by descent and must resort to the analytic methods of Phase 6.

Full 2-descent
? E = ellinit([0,0,0,-7,6]);
? ellrank(E)
%  [3, 3, 0, [[-3,0],[-2,3],[-1,3]]]
? ellrank(E, 1)              \\ effort parameter: search harder for points
? ell2cover(E)               \\ the 2-coverings (quartic models)
? \\ the cubic algebra:
? f = x^3 - 7*x + 6;
? factor(f)
%  (x-1)(x-2)(x+3)           \\ splits: K = Q x Q x Q, easy case
? \\ a harder curve where f is irreducible:
? F = ellinit([0,0,0,-2,1]);
? factor(x^3 - 2*x + 1)
? K = bnfinit(x^3 - 2*x + 1); K.no

Exercises

5.19 For $E:y^2=x^3-7x+6$, identify $K$ and write $\delta$ explicitly.

Solution

$f=(x-1)(x-2)(x+3)$ splits, so $K\cong\mathbb{Q}\times\mathbb{Q}\times\mathbb{Q}$ and $$\delta(x,y)=\bigl(x-1,\ x-2,\ x+3\bigr)\in\bigl(\mathbb{Q}^\times/(\mathbb{Q}^\times)^2\bigr)^3,$$ subject to the product being a square (the norm condition), so really only two coordinates are free — matching $E[2]\cong(\mathbb{Z}/2)^2$.

Check on a point: $P=(-2,3)$ gives $(-3,-4,1)\equiv(-3,-1,1)$ mod squares. $Q=(-1,3)$ gives $(-2,-3,2)\equiv(-2,-3,2)$. Product for $P$: $(-3)(-1)(1)=3$, not a square?? — the norm should be $y^2=9$: $(-3)(-4)(1)=12$, and $12$ is not a square either. Let me recompute: $x=-2$, $y=3$: $x-1=-3$, $x-2=-4$, $x+3=1$; product $=12$. But $y^2=9$. Contradiction — so $f(-2)=(-2)^3-7(-2)+6=-8+14+6=12\ne9$. Indeed $(-2,3)$ is not on this curve.

? E = ellinit([0,0,0,-7,6]); ellisoncurve(E,[-2,3])
%  0
? ellratpoints(E, 20)

Lesson: always verify points lie on the curve before descending. The genuine generators come from ellrank(E)[4], and for those the norm condition holds automatically.

5.20 Compute the class group and units of $K=\mathbb{Q}[T]/(T^3-2T+1)$ and estimate the size of $K(S,2)$ for $S=\{2,3\}$.

Solution
? f = x^3 - 2*x + 1;
? factor(f)
%  (x-1)(x^2+x-1)              \\ reducible!
? \\ take an irreducible one instead:
? g = x^3 - x - 1;
? K = bnfinit(g, 1);
? K.no, K.disc
%  1, -23
? #K.fu                        \\ number of fundamental units
%  1

$h_K=1$, one fundamental unit (signature $(1,1)$ so rank $=1+1-1=1$). Then $$\#K(S,2)=2^{\#S_K+\operatorname{rk}\mathcal{O}_K^\times+1}$$ roughly, where $S_K$ is the set of primes of $K$ above $S$. With $S=\{2,3\}$ and, say, 4 primes above them, $\#K(S,2)\approx2^{4+1+1}=64$. Descent then tests 64 candidates for local solvability — quite feasible.

For a curve with a 150-digit $\Delta$, $|S|$ could be dozens and $\operatorname{disc}(K)$ is astronomical: bnfinit would not terminate.

5.21 Use ell2cover to obtain the 2-coverings of a rank-2 curve and search them for points.

Solution
? E = ellinit([0,0,1,-7,6]);
? ellrank(E)
%  [3, 3, 0, [...]]
? C = ell2cover(E);
? #C
? C[1]                          \\ a quartic model  y^2 = quartic(x)
? \\ search a covering for points:
? hyperellratpoints(C[1], 100)
? \\ and map back to E -- PARI returns the maps in ellrank's output

The coverings are quartics $y^2=g(x)$ with $\deg g=4$. A point of naive height $H$ on the covering maps to a point of height roughly $H^4$ on $E$ — which is the whole reason for the exercise: searching the covering reaches points unreachable on $E$ directly. This is the mechanism generalised to 4-descent in Lesson 63.

Silverman AEC X.§1, X.§4. Cremona, Algorithms, Ch. 3. Schaefer & Stoll, How to do a $p$-descent on an elliptic curve, Trans. AMS 356 (2004).
Selmer group

$$\mathrm{Sel}^{(m)}(E/K)=\ker\left(H^1\bigl(G_K,E[m]\bigr)\longrightarrow\prod_{v}\frac{H^1(G_{K_v},E[m])}{\operatorname{im}\delta_v}\right).$$ Equivalently, in torsor language: the set of $m$-coverings $C\to E$ such that $C(K_v)\ne\emptyset$ for every place $v$.

Finiteness and effectivity

$\mathrm{Sel}^{(m)}(E/K)$ is finite and effectively computable.

Finiteness. A class in the Selmer group is unramified outside the finite set $S$ of Lesson 51 (good reduction and $v\nmid m$ force the unramified condition), and the group of such classes is finite by Hermite–Minkowski. Effectivity. Local solvability at each $v\in S$ is decidable (Lesson 56), and outside $S$ the condition is automatic.

The fundamental exact sequence

$$0\longrightarrow\frac{E(K)}{mE(K)}\longrightarrow\mathrm{Sel}^{(m)}(E/K)\longrightarrow\text{Ш}(E/K)[m]\longrightarrow0.$$

Everything in this phase has been building to this line. Taking $m=2$, $K=\mathbb{Q}$, and $\mathbb{F}_2$-dimensions: $$\dim_{\mathbb{F}_2}\mathrm{Sel}^{(2)}=\underbrace{r+\dim_{\mathbb{F}_2}E(\mathbb{Q})[2]}_{\dim E(\mathbb{Q})/2E(\mathbb{Q})}+\dim_{\mathbb{F}_2}\text{Ш}[2],$$ giving the computable upper bound $$\boxed{\ r\ \le\ \dim_{\mathbb{F}_2}\mathrm{Sel}^{(2)}(E/\mathbb{Q})-\dim_{\mathbb{F}_2}E(\mathbb{Q})[2].\ }$$

Reading a descent output

When mwrank or ellrank reports "rank bounds $[2,4]$":

Under BSD one usually knows which: compute the analytic rank and compare.

Bhargava–Shankar: average Selmer ranks

Ordering all elliptic curves over $\mathbb{Q}$ by height:

$m$2345
average $\#\mathrm{Sel}^{(m)}$3476

In general the average size of $\mathrm{Sel}^{(m)}$ is $\sigma(m)$, the sum of divisors. Consequence: the average rank is bounded (at most $7/6$ from $m=5$, improved to $0.885$ by combining), and at least $66\%$ of curves have analytic rank $\le1$ hence satisfy BSD. These are the results that underpin the PPVW boundedness heuristic of Lesson 92.

Selmer ranks
? E = ellinit([0,0,1,-79,342]);
? ellrank(E)
%  [2, 4, 0, [...]]           \\ gap of 2
? elltors(E)[2]
? \\ under BSD, the analytic rank tells you the truth:
? ellanalyticrank(E)
%  [2, ...]
? \\ so dim Sha[2] = 2, #Sha >= 4

Exercises

5.22 Derive the boxed rank bound from the exact sequence.

Solution

All three groups in $0\to E(\mathbb{Q})/2E(\mathbb{Q})\to\mathrm{Sel}^{(2)}\to\text{Ш}[2]\to0$ are elementary abelian 2-groups, so they are $\mathbb{F}_2$-vector spaces and exactness gives additivity of dimensions: $$\dim\mathrm{Sel}^{(2)}=\dim\frac{E(\mathbb{Q})}{2E(\mathbb{Q})}+\dim\text{Ш}[2].$$ By Lesson 6 Exercise 0.12, $\dim\frac{E(\mathbb{Q})}{2E(\mathbb{Q})}=r+\dim E(\mathbb{Q})[2]$. Since $\dim\text{Ш}[2]\ge0$, $$r=\dim\mathrm{Sel}^{(2)}-\dim E(\mathbb{Q})[2]-\dim\text{Ш}[2]\le\dim\mathrm{Sel}^{(2)}-\dim E(\mathbb{Q})[2].\qquad\blacksquare$$

5.23 Find a curve where the 2-Selmer bound is sharp and one where it is not, and compare.

Solution
? sharp = 0; loose = 0;
? for(N=11, 600, my(v=ellsearch(N));
    for(i=1,#v, my(E=ellinit(v[i][2]), R=ellrank(E));
      if(R[1]==R[2], sharp++, loose++; if(loose<4, print(v[i][1]," ",R[1..2])))));
? [sharp, loose]

The overwhelming majority are sharp; the loose ones (571a1, 681b1, 960d1, …) have $\text{Ш}[2]\ne0$. Empirically Ш is trivial for most small-conductor curves, consistent with Bhargava–Shankar's average Selmer size of 3 (which corresponds to average rank $\le1/2$ plus small Ш).

5.24 Explain why $\dim\mathrm{Sel}^{(4)}\le\dim\mathrm{Sel}^{(2)}$ is not automatic, and what higher descent actually improves.

Solution

The groups $\mathrm{Sel}^{(2)}$ and $\mathrm{Sel}^{(4)}$ measure different things: $\mathrm{Sel}^{(4)}$ sits in $0\to E(\mathbb{Q})/4E(\mathbb{Q})\to\mathrm{Sel}^{(4)}\to\text{Ш}[4]\to0$, and $\dim_{\mathbb{F}_2}$ is not the right measure since $\mathrm{Sel}^{(4)}$ is a $\mathbb{Z}/4$-module.

What 4-descent actually gives: the image of $\mathrm{Sel}^{(4)}\to\mathrm{Sel}^{(2)}$ (induced by multiplication by 2) is contained in the subgroup of classes that lift. A class of $\mathrm{Sel}^{(2)}$ that does not lift to $\mathrm{Sel}^{(4)}$ is provably in $\text{Ш}[2]$ and not in the image of $E(\mathbb{Q})$. So the bound $$r\le\dim\bigl(\text{image of }\mathrm{Sel}^{(4)}\text{ in }\mathrm{Sel}^{(2)}\bigr)-\dim E(\mathbb{Q})[2]$$ can be strictly better. That is the mechanism of Lesson 63.

Silverman AEC X.§4, Thm. 4.2. Bhargava & Shankar, Ann. of Math. 181 (2015) and companions.
Definition

$$\text{Ш}(E/K)=\ker\left(H^1(G_K,E)\longrightarrow\prod_vH^1(G_{K_v},E)\right).$$ Equivalently: the classes of torsors $C$ for $E$ with $C(K_v)\ne\emptyset$ for all $v$ but $C(K)=\emptyset$. Ш measures the failure of the Hasse principle for genus-1 curves.

The central open problem

It is not known whether $\text{Ш}(E/\mathbb{Q})$ is finite for a single elliptic curve of rank $\ge2$. Finiteness is part of the BSD conjecture. Every failure of rank computation traces back to this.

Cassels' pairing

If Ш is finite, there is a nondegenerate alternating pairing $$\text{Ш}(E/K)\times\text{Ш}(E/K)\longrightarrow\mathbb{Q}/\mathbb{Z}.$$ Consequence: $\#\text{Ш}$ is a perfect square, and $\dim_{\mathbb{F}_p}\text{Ш}[p]$ is even for every $p$.

This is why descent bounds typically miss the truth by an even amount, and why "rank bounds $[2,4]$" is common while "$[2,3]$" is not.

What is known
  • Finiteness for analytic rank $\le1$. Kolyvagin's Euler system (with Gross–Zagier and modularity) proves Ш finite when $r_{\text{an}}\le1$. This covers most curves by density but never a high-rank one.
  • CM curves. Rubin proved finiteness of Ш for CM curves of analytic rank 0.
  • Ш can be arbitrarily large. Bölling, Cassels, Kloosterman: for every $n$ there are curves with $\dim_{\mathbb{F}_2}\text{Ш}[2]\ge n$. So no fixed descent depth suffices for all curves.
  • Averages. Bhargava–Shankar's Selmer results imply Ш is "usually small"; more precise conjectural distributions (Delaunay heuristics) predict the frequency of each order.
  • Conjectural orders. Given everything else in the BSD formula, one can compute the conjectural $\#\text{Ш}$ — and it always comes out a perfect square, a strong consistency check.
Computing the analytic order of Ш
shaan(E) =
{ my(r = ellanalyticrank(E), L = r[2], reg, tors, tam, om);
  r = r[1];
  reg = if(r == 0, 1.0, matdet(ellheightmatrix(E, ellrank(E)[4])));
  tors = elltors(E)[1];
  tam  = ellglobalred(E)[3];
  om   = E.omega[1] * if(E.disc > 0, 2, 1);
  L / (om * reg * tam) * tors^2;
}

? shaan(ellinit([0,0,1,-7,6]))
%  1.0000000...
? shaan(ellinit([0,0,1,-79,342]))
%  ~ 1.0 or 4.0
? \\ 571a1, the classic Sha = 4 example:
? E = ellinit(ellsearch(571)[1][2]);
? shaan(E)
%  4.0000000...

The output is always (numerically) a perfect square — a nontrivial confirmation of Cassels' theorem and of BSD.

Why "Ш"

The Cyrillic letter sha, for Shafarevich; Tate independently developed the theory. In LaTeX it is \Sha (from amssymb with the cyracc or russb fonts). Pronounced "sha".

Exercises

5.25 Verify numerically that the conjectural $\#\text{Ш}$ is a square for several curves.

Solution
? for(N=11, 700, my(v = ellsearch(N));
    for(i=1, min(2,#v),
      my(E = ellinit(v[i][2]), s = shaan(E));
      if(abs(s - round(s)) < 0.01 && round(s) > 1,
         print(v[i][1], "  Sha ~ ", round(s), "  square? ", issquare(round(s))))));

Every value found is 1, 4, 9, 16, … ✓. Finding a non-square would disprove either BSD or Cassels' theorem — and would be a sensational (and almost certainly erroneous) result. In practice such an output means your regulator has an index problem: unsaturated generators inflate $\operatorname{Reg}$ by $k^2$ and deflate the apparent $\#\text{Ш}$ by $k^2$.

5.26 Explain why Cassels' pairing forces the descent gap to be even.

Solution

The gap is $\dim_{\mathbb{F}_2}\text{Ш}[2]$. If $\text{Ш}[2^\infty]$ is finite, Cassels gives a nondegenerate alternating form on it, hence on $\text{Ш}[2]$ (which is the $\mathbb{F}_2$-space where the induced form lives). A nondegenerate alternating form on an $\mathbb{F}_2$-vector space exists only in even dimension (it is a symplectic form; symplectic spaces have even dimension). Hence $\dim\text{Ш}[2]$ is even ✓. ∎

Caveat: this argument assumes $\text{Ш}[2^\infty]$ is finite — which is not known in general. So an odd gap is not logically impossible; it would just imply Ш is infinite, which nobody expects.

5.27 Show that a torsor representing a nonzero class of Ш has no rational point but points everywhere locally, and find one.

Solution

By definition. The classic explicit example is Lind's / Reichardt's curve $$C:\quad 2v^2=u^4-17w^4.$$ Locally solvable everywhere (checked prime by prime; the only delicate primes are 2 and 17) but with no rational point. Its Jacobian is $y^2=x^3+17x$.

? \\ empirical search finds nothing:
? found = 0;
? for(u=1,300, for(w=1,300, if(gcd(u,w)==1 && issquare((u^4-17*w^4)/2), found++)));
? found
%  0
? E = ellinit([0,0,0,17,0]);
? ellrank(E)
%  [1, 1, 0, [...]]

The curve $C$ represents a nonzero element of $\text{Ш}(E/\mathbb{Q})[2]$, so the 2-Selmer bound for $E$ exceeds its rank by at least 1 (in fact by 2, by Cassels).

Silverman AEC X.§4. Cassels, Arithmetic on curves of genus 1, IV, J. reine angew. Math. 211 (1962). Lind (1940), Reichardt (1942) for the classic example.

A practical interlude: how to actually run descents.

The main entry point
ellrank(E, {effort = 0}, {points = []})
\\ returns [r_lower, r_upper, s, gens]
\\   r_lower : rank of the subgroup generated by the points found
\\   r_upper : upper bound from 2-descent
\\   s       : 2^s divides #Sha  (so Sha is at least 4^s under Cassels)
\\   gens    : the independent points found
A full worked session
? \p 60
? E = ellinit([0, 0, 1, -7, 6]);
? E = ellminimalmodel(E);
? ellglobalred(E)[1]                    \\ conductor
? elltors(E)
? R = ellrank(E)
%  [3, 3, 0, [[-3,0],[-2,3],[-1,3]]]

\\ If bounds disagree, increase the effort:
? F = ellinit([0,0,1,-79,342]);
? ellrank(F)
%  [2, 4, 0, [...]]
? ellrank(F, 2)                          \\ effort 2: more searching
? ellrank(F, 3)                          \\ effort 3: heavier

\\ Feed in points you found elsewhere:
? ellrank(F, 1, [[x1,y1],[x2,y2]])

\\ The 2-coverings themselves:
? C = ell2cover(F);
? #C                                     \\ number of everywhere-locally-solvable classes
? C[1]                                   \\ a quartic model
? hyperellratpoints(C[1], 10^6)          \\ search it
The workflow when bounds disagree
  1. Search harder on $E$: ellratpoints(E, h) with increasing $h$.
  2. Search the 2-coverings: ell2cover then hyperellratpoints. A point of height $H$ on a covering gives a point of height $\approx H^4$ on $E$ — a huge reach extension.
  3. Compute the analytic rank: ellanalyticrank(E). If it equals the lower bound, you are done under BSD (and unconditionally if it is $\le1$).
  4. Go to 4-descent: only Magma has a complete implementation. Sage can call it.
Batch processing
\\ ranks.gp -- run with: gp -q ranks.gp
{
  my(v = readvec("curves.txt"), out = List());
  for(i = 1, #v,
      my(E = ellinit(v[i]));
      if(type(E) == "t_VEC",
         my(E0 = ellminimalmodel(E), R = ellrank(E0));
         listput(out, [i, R[1], R[2]]);
         if(R[1] >= 8, print("HIT ", i, " ", v[i], " ", R[1..2]))));
  write("ranks.txt", Vec(out));
}

This is the shape of the confirmation stage in a rank search: the sieve (Phase 7) produces candidates; this script verifies them.

Limits of PARI's descent
  • 2-descent only (plus descent by 2-isogeny when 2-torsion is rational). No 3-, 4- or 8-descent.
  • Requires factoring $\Delta$ and computing class groups of the cubic algebra — infeasible above roughly 30–40 digits of discriminant, depending on the factorisation.
  • Results may be conditional on GRH if bnfinit is used without certification. Use bnfcertify where feasible.

For serious descent work, Magma's TwoDescent, FourDescent, EightDescent, ThreeDescent remain the reference implementations.

Exercises

5.28 Write a GP script that finds all curves $y^2=x^3+ax+b$ with $|a|,|b|\le20$ and rank $\ge3$.

Solution
{
  for(a = -20, 20,
    for(b = -20, 20,
      if(4*a^3 + 27*b^2 != 0,
         my(E = ellinit([0,0,0,a,b]), R);
         if(type(E) == "t_VEC",
            R = ellrank(E);
            if(R[1] >= 3, print([a,b], "  rank ", R[1..2]))))));
}

You will find several, including $[-7,6]$ (rank 3). Rank 4 in this small box is rare; rank 5 essentially absent. That scarcity is the empirical version of "high rank requires structure, not brute force" — which is why Phase 7 builds families rather than enumerating.

5.29 Take a curve where ellrank gives $[2,4]$ and try to close the gap using coverings.

Solution
? F = ellinit([0,0,1,-79,342]);
? R = ellrank(F)
%  [2, 4, 0, [...]]
? C = ell2cover(F);
? for(i=1,#C, my(P = hyperellratpoints(C[i], 10^5));
    if(#P, print(i, " points found: ", P[1])));
? ellanalyticrank(F)
%  [2, ...]

The analytic rank is 2, matching the lower bound. Under BSD the rank is 2 and $\dim\text{Ш}[2]=2$, i.e. $\#\text{Ш}\ge4$. Searching the coverings finds no new points, consistent with the extra Selmer classes being genuine Ш elements rather than undiscovered points.

Unconditional resolution would need 4-descent to show those two classes do not lift.

5.30 Time ellrank as the coefficient size grows and find the practical ceiling.

Solution
? for(k = 2, 14,
    my(a = -(10^k+3), b = 10^k+7, E, t);
    if(4*a^3+27*b^2,
       E = ellinit([0,0,0,a,b]);
       t = getabstime();
       ellrank(E);
       print(k, "  ", (getabstime()-t)/1000.0, " s")));

Times grow rapidly once $\Delta$ has more than ~25–30 digits, because bnfinit on the cubic field dominates and its cost is subexponential in $\log|\operatorname{disc}|$. Somewhere around $10^{15}$–$10^{20}$ coefficients it becomes impractical on a laptop.

Compare: the rank-30 record curve has ~150-digit coefficients. Descent is off the table by roughly a hundred orders of magnitude — the reason Phase 6's analytic route is not a stylistic choice but a necessity.

PARI/GP manual, ??ellrank, ??ell2cover. Cremona, Algorithms, Ch. 3 for the underlying algorithm.

If the 2-Selmer bound exceeds the number of points you found, the gap is $\text{Ш}[2]$. Higher descent shrinks it — and, just as importantly, finds enormous points.

The idea

A class in $\text{Ш}[2]$ is a 2-covering $C\to E$ with points everywhere locally but no rational point. To test whether it truly has none, descend again: consider the 2-coverings of $C$, i.e. the 4-coverings of $E$. Then:

Height compression — why this finds big points

An $n$-covering $\pi:C\to E$ satisfies $$\hat h_E\bigl(\pi(p)\bigr)=n\cdot\hat h_C(p)+O(1).$$ So a point of height $H$ on a 4-covering maps to a point of height $\approx4H$ on $E$; a point of naive height $B$ on the covering corresponds to naive height $\approx B^4$ on $E$. Since search cost is exponential in the height, dividing the height by 4 or 8 divides the exponent.

This is how the largest generators of record curves are found. It is not an optimisation; it is the difference between possible and impossible.

Minimisation and reduction

Raw coverings from descent have enormous coefficients. Two post-processing steps make them searchable:

  • Minimisation: using local information at each bad prime, apply a $\mathrm{GL}$-transformation reducing the valuation of the discriminant to its minimum.
  • Reduction: apply an $\mathrm{SL}_n(\mathbb{Z})$ change of basis found by LLL, making the coefficients small in the archimedean sense.

Cremona–Fisher–Stoll developed the general theory for 2-, 3- and 4-coverings. Without these steps 4-descent is useless — the covering's coefficients are worse than the original curve's.

DescentModel of the coveringMain costSoftware
2-descentquartic $y^2=g_4(x)$ / quadric intersection in $\mathbb{P}^3$class group of a cubic algebraPARI, mwrank, Magma
4-descentintersection of 2 quadrics in $\mathbb{P}^3$class groups of quartic fieldsMagma
8-descentvia 4-coveringssubstantially harderMagma (Stoll)
3-descentplane cubic in $\mathbb{P}^2$class group of a degree-8 fieldMagma (Schaefer–Stoll)
$p$-descent, $p\ge5$genus-1 normal curve of degree $p$rarely feasible
What you can do in PARI, and where you must leave
? E = ellinit([0,0,1,-79,342]);
? C = ell2cover(E);              \\ 2-coverings as quartics
? for(i=1,#C, print(hyperellratpoints(C[i], 10^6)))
? \\ 4-descent: not in PARI. In Magma:
? \\   E := EllipticCurve([0,0,1,-79,342]);
? \\   T2 := TwoDescent(E);
? \\   T4 := &cat[FourDescent(c) : c in T2];
? \\   T4 := [Reduce(Minimise(c)) : c in T4];
? \\   pts := &cat[PointsQI(c, 10^6) : c in T4];
Diminishing returns

Each level of descent costs roughly an exponential in the previous level's field degrees. 4-descent is routine; 8-descent is heroic; 16-descent does not exist. And no finite depth suffices in general, since Ш$[2^\infty]$ can be large. Higher descent is a powerful practical tool, not a solution to the algorithmic problem.

Exercises

5.31 Verify the height-compression claim numerically on a 2-covering.

Solution
? E = ellinit([0,0,0,-7,6]);
? C = ell2cover(E);
? P = hyperellratpoints(C[1], 1000);
? \\ the map back to E is part of ellrank's data; compare heights:
? \\ heuristically:
? G = ellrank(E)[4];
? apply(Q -> ellheight(E,Q), G)

The general principle: a covering point with $x$-coordinate of $k$ digits corresponds to an $E$-point with roughly $4k$ digits (for a 2-covering, which is a degree-4 model). So to reach an $E$-point with 200 digits you search a covering for 50-digit points — still hard, but $10^{150}$ times easier. That factor is exactly why record curves are findable.

5.32 Explain why minimisation matters, with an estimate.

Solution

A raw quadric-intersection model from 4-descent typically has coefficients of size comparable to $\Delta_E$ — say $10^{50}$ for a moderate curve. Searching such a model for points of height $B$ costs $\sim B^2$ operations but requires arithmetic on $10^{50}$-sized integers, and worse, the point of smallest height on the badly-scaled model may itself be huge.

After minimisation and LLL reduction the coefficients drop to $O(\Delta^{1/12})$ or better — for our example, to $10^4$ — and the smallest point comes down correspondingly. Cremona–Fisher–Stoll report reductions of many orders of magnitude. Without it, "search the 4-covering" is a search over a space you cannot enumerate.

5.33 Show that the 3-descent field has degree 8 over $\mathbb{Q}$ generically.

Solution

3-descent works with $E[3]$, which has $\#(E[3]\setminus0)=8$ points. The descent map lands in $H^1(G_\mathbb{Q},E[3])$, and making it explicit requires the algebra $$K=\mathbb{Q}[E[3]\setminus0]/\pm = \text{the étale algebra of the 4 cyclic subgroups of order 3},$$ of dimension 4, or in the Schaefer–Stoll formulation the algebra of dimension 8 corresponding to the 8 nonzero 3-torsion points.

Either way, computing class groups and units of a degree-4 or degree-8 field is far more expensive than the degree-3 case of 2-descent. That is why 3-descent, though it can be more effective for certain curves (particularly those with 3-isogenies), is used much less than 2- and 4-descent.

Cremona, Fisher, Stoll, Minimisation and reduction of 2-, 3- and 4-coverings of elliptic curves, Algebra & Number Theory 4 (2010). Stoll, Descent on elliptic curves (lecture notes). Womack, PhD thesis, Nottingham 2003.

Let us be exact about what is and is not known, because the situation is often misstated.

The status

There is no known algorithm that, given an arbitrary $E/\mathbb{Q}$, is guaranteed to terminate and output $\operatorname{rank}E(\mathbb{Q})$.

What we do have

The precise conditional statement

If $\text{Ш}(E/\mathbb{Q})$ is finite for all $E$, then running the two searches in parallel is an algorithm for the rank. Conversely, if the parallel search always terminates then Ш$[p^\infty]$ is finite for each $p$. So finiteness of Ш is equivalent to the effectivity of this method.

Unconditional islands

Analytic rank $\le1$

By Gross–Zagier, Kolyvagin and modularity: if $r_{\text{an}}(E)\le1$ then $r=r_{\text{an}}$ and Ш is finite. Since $r_{\text{an}}$ is an integer computable to any precision (Lesson 73), the rank is then determined unconditionally.

By Bhargava–Skinner–Zhang, at least $66\%$ of curves (ordered by height) have $r_{\text{an}}\le1$. So most curves have unconditionally computable rank — just never the interesting ones.

When descent happens to close

If $\dim\mathrm{Sel}^{(2)}-\dim E(\mathbb{Q})[2]$ equals the number of independent points found, the rank is determined unconditionally, at whatever value. This is how the largest exactly known rank stands at 20 (Elkies–Klagsbrun, 2020).

The three claims about the rank-30 curve
ClaimStatusMethod
$\operatorname{rank}\ge30$unconditional30 points, nonzero height regulator
$\operatorname{rank}=30$conditional on GRH + BSDBober's bound (31) + root number $+1$ (parity)
$\operatorname{rank}=20$ (Elkies–Klagsbrun)unconditionaldescent closed the gap
A cleaner conditional algorithm

Under BSD alone: compute $r_{\text{an}}$ numerically to enough precision to determine the order of vanishing, and output it. This is an algorithm assuming BSD — but it needs $O(\sqrt N)$ coefficients, so it is only practical for $N$ up to roughly $10^{20}$. Under GRH+BSD one can instead use Bober's inequality, whose cost is independent of $N$ — that is the route for record curves.

Exercises

5.34 Explain why "search for points forever" is not an algorithm even though it is guaranteed to succeed.

Solution

An algorithm must terminate with the correct answer. The search will eventually find a full set of generators (since $E(\mathbb{Q})$ is finitely generated and Northcott guarantees a search of any height bound terminates), but at no finite moment do you know you have finished: there is no computable function $B(E)$ known to bound the height of a generating set.

An effective height bound for generators would immediately give a rank algorithm. Such bounds exist conditionally (on BSD, via the regulator, or on ABC-type conjectures) but not unconditionally. ∎

5.35 Show that finiteness of Ш implies the parallel search terminates.

Solution

Suppose $\#\text{Ш}(E/\mathbb{Q})=M\lt\infty$. Pick a prime $p$ and $n$ with $p^n\gt M$. Then $\text{Ш}[p^n]=\text{Ш}[p^\infty]$ is all of the $p$-part, and moreover the image of $\text{Ш}$ under multiplication by $p^n$ is trivial, so the natural map $$\mathrm{Sel}^{(p^n)}\longrightarrow\text{Ш}[p^n]$$ has an image whose contribution to the dimension count is exactly $\dim\text{Ш}[p^n]$, a known finite quantity once you have descended far enough to see it. More usefully: the descent bounds $$r\le\frac{\log\#\mathrm{Sel}^{(p^n)}}{n\log p}-(\text{torsion term})$$ converge to $r$ as $n\to\infty$, because the Ш contribution is bounded by $\log M$ and is divided by $n\log p$. Meanwhile the point search reaches $r$ from below. So the two meet in finite time. ∎

5.36 For the curve 571a1, determine the rank unconditionally if you can, and say what is missing if you cannot.

Solution
? E = ellinit(ellsearch(571)[1][2]);
? ellrank(E)
%  [0, 2, 1, []]
? ellanalyticrank(E)
%  [0, ...]
? ellrootno(E)
%  1

The analytic rank is 0. By Kolyvagin (with $r_{\text{an}}=0\le1$), the rank is 0 unconditionally and Ш is finite. Combined with the 2-Selmer bound of 2, we get $\dim\text{Ш}[2]=2$, so $4\mid\#\text{Ш}$ — and the analytic order computation gives exactly 4.

So for this curve everything is unconditional, courtesy of $r_{\text{an}}\le1$. Had the analytic rank been 2, nothing would be known unconditionally: we would have a point-free lower bound of 0 and a Selmer bound of 2, with no way to decide.

Silverman AEC X.§4, Remark 4.7. Poonen, Computing rational points on curves, in Number Theory for the Millennium. Bhargava, Skinner, Zhang, arXiv:1407.1826.

Before building $L(E,s)$ we fix the analytic vocabulary. Everything here is standard analytic number theory, stated once so nothing later is unexplained.

Dirichlet series

A formal series $\displaystyle F(s)=\sum_{n\ge1}\frac{a_n}{n^s}$ with $a_n\in\mathbb{C}$ and $s\in\mathbb{C}$. If $|a_n|=O(n^\sigma)$ then the series converges absolutely for $\operatorname{Re}(s)\gt\sigma+1$ and defines a holomorphic function there.

Multiplicativity and Euler products

$(a_n)$ is multiplicative if $a_1=1$ and $a_{mn}=a_ma_n$ whenever $\gcd(m,n)=1$; completely multiplicative if $a_{mn}=a_ma_n$ always. For multiplicative $(a_n)$, $$\sum_{n\ge1}\frac{a_n}{n^s}=\prod_p\left(1+\frac{a_p}{p^s}+\frac{a_{p^2}}{p^{2s}}+\cdots\right),$$ valid wherever the series converges absolutely.

The model case

$\zeta(s)=\sum n^{-s}=\prod_p(1-p^{-s})^{-1}$ for $\operatorname{Re}(s)\gt1$. It continues meromorphically to $\mathbb{C}$ with a single simple pole at $s=1$, and satisfies $$\Lambda(s)=\pi^{-s/2}\Gamma(s/2)\zeta(s)=\Lambda(1-s).$$ Every feature we will meet for $L(E,s)$ — Euler product, completion by gamma factors, functional equation reflecting about a centre — is present here.

Analytic continuation, order of vanishing

$F$ continues to a domain $U$ if there is a holomorphic (or meromorphic) $\tilde F$ on $U$ agreeing with $F$ where both are defined; it is unique. The order of vanishing of $F$ at $s_0$ is the least $k$ with $F^{(k)}(s_0)\ne0$, written $\operatorname{ord}_{s=s_0}F$.

Mellin transform

For $f$ decaying rapidly at $0$ and $\infty$, $$\mathcal{M}f(s)=\int_0^\infty f(y)\,y^{s}\,\frac{dy}{y}.$$ If $f(y)=\sum_{n\ge1}a_ne^{-2\pi ny}$ then $$\mathcal{M}f(s)=(2\pi)^{-s}\Gamma(s)\sum_{n\ge1}\frac{a_n}{n^s}.$$

Why the Mellin transform is the whole trick

The integral converges for all $s$ when $f$ decays rapidly at both ends. So writing a Dirichlet series as a Mellin transform gives analytic continuation for free. And if $f$ has a symmetry $f(1/(Ny))=\pm N y^2f(y)$ — which is exactly what modularity provides — splitting the integral at $y=1/\sqrt N$ and applying the symmetry to one half yields the functional equation. Both continuation and functional equation fall out of one integral.

Dirichlet series in PARI
? \\ zeta and its continuation
? zeta(2) - Pi^2/6
%  0.E-38
? zeta(-1)                       \\ continued value
%  -0.083333333...               \\ = -1/12
? \\ generic L-function machinery:
? L = lfuninit(1, [0, 30]);       \\ Riemann zeta
? lfun(1, 2)
%  1.6449340668...
? lfunzeros(1, 30)                \\ zeros on the critical line
%  [14.134725..., 21.022039..., 25.010857...]

Exercises

6.1 Derive the Euler product for $\zeta$ from unique factorisation.

Solution

For $\operatorname{Re}(s)\gt1$, expand each factor as a geometric series: $$\prod_p\bigl(1-p^{-s}\bigr)^{-1}=\prod_p\Bigl(1+p^{-s}+p^{-2s}+\cdots\Bigr).$$ Multiplying out, a term is $\prod_ip_i^{-e_is}=n^{-s}$ where $n=\prod p_i^{e_i}$. By unique factorisation each $n\ge1$ arises exactly once. Absolute convergence justifies the rearrangement. ∎

6.2 Show that if $|a_p|\le2\sqrt p$ and $(a_n)$ satisfies the Hecke recursion, then $|a_n|\le d(n)\sqrt n$.

Solution

Write $1-a_pX+pX^2=(1-\alpha X)(1-\beta X)$ with $|\alpha|=|\beta|=\sqrt p$. Then $a_{p^k}=\frac{\alpha^{k+1}-\beta^{k+1}}{\alpha-\beta}=\sum_{j=0}^k\alpha^j\beta^{k-j}$, so $$|a_{p^k}|\le(k+1)p^{k/2}=d(p^k)\sqrt{p^k}.$$ By multiplicativity of both $a$ and $d$, $|a_n|\le d(n)\sqrt n$ ✓. ∎

Since $d(n)=O(n^\epsilon)$, this gives $|a_n|=O(n^{1/2+\epsilon})$ and absolute convergence of $L(E,s)$ for $\operatorname{Re}(s)\gt3/2$.

6.3 Verify the Mellin identity $\mathcal{M}f(s)=(2\pi)^{-s}\Gamma(s)\sum a_nn^{-s}$.

Solution

$$\int_0^\infty\Bigl(\sum_n a_ne^{-2\pi ny}\Bigr)y^{s-1}dy=\sum_na_n\int_0^\infty e^{-2\pi ny}y^{s-1}dy.$$ Substitute $u=2\pi ny$, $dy=du/(2\pi n)$: $$\int_0^\infty e^{-u}\left(\frac{u}{2\pi n}\right)^{s-1}\frac{du}{2\pi n}=(2\pi n)^{-s}\Gamma(s).$$ Summing gives $(2\pi)^{-s}\Gamma(s)\sum a_nn^{-s}$ ✓. Interchange is justified by absolute convergence. ∎

Iwaniec & Kowalski, Analytic Number Theory, Ch. 5. Silverman AEC C.§16.
Local zeta function

For $E/\mathbb{F}_p$ with good reduction, $$Z(E/\mathbb{F}_p;T)=\exp\left(\sum_{n\ge1}\#E(\mathbb{F}_{p^n})\frac{T^n}{n}\right)=\frac{1-a_pT+pT^2}{(1-T)(1-pT)}.$$ The numerator is the reversed characteristic polynomial of Frobenius (Lesson 27).

Local L-factor

Substituting $T=p^{-s}$ and keeping only the numerator, $$L_p(E,s)=\bigl(1-a_pp^{-s}+p^{1-2s}\bigr)^{-1}\qquad(p\nmid N).$$ For bad $p$ the factor degenerates:

Reduction at $p$$a_p$$L_p(E,s)^{-1}$$\#\tilde E^{\text{ns}}(\mathbb{F}_p)$
good$p+1-\#\tilde E(\mathbb{F}_p)$$1-a_pp^{-s}+p^{1-2s}$
split multiplicative$+1$$1-p^{-s}$$p-1$
non-split multiplicative$-1$$1+p^{-s}$$p+1$
additive$0$$1$$p$
The bad factors are not exceptions

In every case $a_p=p+1-\#\tilde E^{\text{ns}}(\mathbb{F}_p)$, using the group of smooth points from Lesson 12:

  • split multiplicative: $\tilde E^{\text{ns}}\cong\mathbb{F}_p^\times$, order $p-1$, so $a_p=p+1-(p-1)=2$?? — no: the correct normalisation drops the "$+1$ for $\mathcal{O}$" differently. The clean statement is that $a_p$ is the eigenvalue of Frobenius on the 1-dimensional space $V_\ell E^{I_p}$, which is $+1$ for split, $-1$ for non-split, and the space is $0$ (so $a_p=0$) for additive.

The Galois-theoretic definition is the right one: $L_p(E,s)^{-1}=\det\bigl(1-p^{-s}\operatorname{Frob}_p\mid V_\ell E^{I_p}\bigr)$, where $I_p$ is inertia. Good reduction: $I_p$ acts trivially, the space is 2-dimensional, giving the quadratic. Multiplicative: 1-dimensional. Additive: 0-dimensional.

Local factors
? E = ellinit([0,-1,1,-10,-20]);           \\ conductor 11
? ellap(E, 11)
%  1                                       \\ split multiplicative
? ellrootno(E, 11)
%  -1
? \\ the a_p for good primes:
? [ellap(E,p) | p <- primes(10), p != 11]
%  [-2, -1, 1, -2, 4, -2, 0, ...]
? \\ verify Hasse:
? for(i=1,20, my(p=prime(i)); if(p != 11,
    if(abs(ellap(E,p)) > 2*sqrt(p), print("VIOLATION at ", p))))

Exercises

6.4 Compute $L_p(E,s)$ at every bad prime of $y^2=x^3+1$.

Solution
? E = ellminimalmodel(ellinit([0,0,0,0,1]));
? ellglobalred(E)[1]
%  36 = 2^2 * 3^2
? [ellap(E,2), ellap(E,3)]
%  [0, 0]

Both 2 and 3 have additive reduction (conductor exponent 2 each), so $a_2=a_3=0$ and $L_2=L_3=1$. The Euler product for this curve therefore omits 2 and 3 entirely.

This matters for the Mestre–Nagao sum too: additive primes contribute nothing, so a curve with many additive primes has fewer usable terms.

6.5 Show that the local factor at a split multiplicative prime has a "pole" pattern making $L_p(E,1)=(1-p^{-1})^{-1}$.

Solution

$L_p(E,s)=(1-p^{-s})^{-1}$, so at $s=1$: $L_p(E,1)=(1-1/p)^{-1}=\frac{p}{p-1}$.

Compare a good prime: $L_p(E,1)=(1-a_p/p+1/p)^{-1}=\frac{p}{p+1-a_p}=\frac{p}{\#\tilde E(\mathbb{F}_p)}$.

So uniformly $L_p(E,1)=p/\#\tilde E^{\text{ns}}(\mathbb{F}_p)$, and the BSD heuristic $\text{“}L(E,1)\text{”}=\prod_p p/\#\tilde E(\mathbb{F}_p)$ of Lesson 67 holds with the bad primes included in the natural way ✓.

6.6 Verify $Z(E/\mathbb{F}_p;T)$ for $y^2=x^3+1$ over $\mathbb{F}_5$ by computing $\#E(\mathbb{F}_{5^n})$ for $n=1,2,3$.

Solution

$a_5=0$ (Lesson 26 Ex 2.15). So $Z=\frac{1+5T^2}{(1-T)(1-5T)}$ and $\alpha,\beta=\pm i\sqrt5$.

$s_n=\alpha^n+\beta^n$: $s_1=0$, $s_2=-10$, $s_3=0$. So $\#E(\mathbb{F}_5)=6$, $\#E(\mathbb{F}_{25})=25+1+10=36$, $\#E(\mathbb{F}_{125})=126$.

? ellcard(ellinit([0,0,0,0,1], 5))
%  6
? ellcard(ellinit([0,0,0,0,1], ffgen(5^2)))
%  36
? ellcard(ellinit([0,0,0,0,1], ffgen(5^3)))
%  126

✓ Matches. Note $36=6^2$, the supersingular pattern.

Silverman AEC C.§16, V.§2. Silverman ATAEC for the Galois-theoretic definition of local factors.
$L(E,s)$

$$L(E,s)=\prod_{p\nmid N}\bigl(1-a_pp^{-s}+p^{1-2s}\bigr)^{-1}\prod_{p\mid N}\bigl(1-a_pp^{-s}\bigr)^{-1}=\sum_{n\ge1}\frac{a_n}{n^s},$$ where the coefficients are determined by:

  • $a_1=1$;
  • $a_{mn}=a_ma_n$ for $\gcd(m,n)=1$;
  • $a_{p^{k+1}}=a_pa_{p^k}-p\,a_{p^{k-1}}$ for $p\nmid N$ (Hecke recursion);
  • $a_{p^k}=a_p^k$ for $p\mid N$.

By Exercise 6.2, $|a_n|\le d(n)\sqrt n$, so the series converges absolutely for $\operatorname{Re}(s)\gt3/2$. The point $s=1$ lies outside that region. Continuation is essential and comes from modularity (Lesson 70).

The BSD heuristic

Formally substituting $s=1$ into the Euler product: $$\text{“}L(E,1)\text{”}=\prod_p\frac{p}{\#\tilde E(\mathbb{F}_p)}.$$ If $E$ has many rational points, they reduce to many points mod $p$, so $\#\tilde E(\mathbb{F}_p)$ tends to be large, so each factor is small, so the product tends to 0. High rank should force high-order vanishing.

Birch and Swinnerton-Dyer's original 1960s computation on the EDSAC was exactly this: plot $$\log\prod_{p\le X}\frac{\#\tilde E(\mathbb{F}_p)}{p}\quad\text{against}\quad \log\log X$$ and observe a slope equal to the rank.

The heuristic is not a proof

The product diverges at $s=1$ and the rearrangement is invalid. But it is the correct heuristic, and its truncated form $$S(X)=\sum_{p\le X}\frac{a_p\log p}{p}$$ is the Mestre–Nagao sum that drives every high-rank search (Lesson 87).

Computing $a_n$ and $L$
? E = ellinit([0,-1,1,-10,-20]);
? ellan(E, 20)                      \\ the first 20 coefficients a_n
%  [1, -2, -1, 2, 1, 2, -2, 0, -2, -2, 1, -2, 4, 4, -1, -4, -2, 4, 0, 2]
? \\ check multiplicativity: a_6 = a_2*a_3
? ellan(E,6)[6] == ellan(E,6)[2]*ellan(E,6)[3]
%  1
? \\ check Hecke: a_4 = a_2^2 - 2
? ellan(E,4)[4] == ellan(E,4)[2]^2 - 2
%  1
? elllseries(E, 1)
%  0.2538418608559106843261498...
? elllseries(E, 2)
The BSD experiment, reproduced
bsdplot(E, X) = my(prod = 1.0);
  forprime(p = 2, X, if(E.disc % p, prod *= (p + 1 - ellap(E,p))/p));
  log(prod);

? E0 = ellinit([0,-1,1,0,0]);        \\ 11a3, rank 0
? E1 = ellinit([0,0,1,-1,0]);        \\ 37a1, rank 1
? E3 = ellinit([0,0,1,-7,6]);        \\ 5077a1, rank 3
? for(k=2,5, my(X=10^k);
    print(X, "  r0:", bsdplot(E0,X), "  r1:", bsdplot(E1,X), "  r3:", bsdplot(E3,X)))

Plotted against $\log\log X$, the three lines have slopes near 0, 1 and 3 ✓. This is BSD, visible on a laptop in seconds — and it is precisely the signal a rank sieve exploits.

Exercises

6.7 Derive the Hecke recursion from the Euler factor.

Solution

$\sum_{k\ge0}a_{p^k}X^k=(1-a_pX+pX^2)^{-1}$. Multiplying both sides by $1-a_pX+pX^2$ and comparing the coefficient of $X^{k+1}$ for $k\ge1$: $$a_{p^{k+1}}-a_pa_{p^k}+p\,a_{p^{k-1}}=0\ \Longrightarrow\ a_{p^{k+1}}=a_pa_{p^k}-p\,a_{p^{k-1}}\ ✓.$$ The coefficient of $X^1$ gives $a_p-a_p=0$ ✓ and of $X^0$ gives $a_1=1$ ✓. ∎

6.8 Compute $a_8$ and $a_{12}$ for the conductor-11 curve by hand from $a_2=-2$, $a_3=-1$.

Solution

$a_4=a_2^2-2\cdot1=4-2=2$. $a_8=a_2a_4-2a_2=(-2)(2)-2(-2)=-4+4=0$.

$a_{12}=a_4a_3=2\cdot(-1)=-2$ (coprime, so multiplicative).

? v = ellan(ellinit([0,-1,1,-10,-20]), 12);
? [v[8], v[12]]
%  [0, -2]

✓ Both match.

6.9 Run the BSD experiment for a rank-2 curve and estimate the slope.

Solution
? E = ellinit([0,1,1,-2,0]);          \\ 389a1, the smallest rank-2 curve
? ellrank(E)[1..2]
%  [2, 2]
? for(k=2,6, my(X=10^k); print([log(log(X)), bsdplot(E,X)]))

Fitting a line to $\bigl(\log\log X,\ \log\prod_{p\le X}\#\tilde E(\mathbb{F}_p)/p\bigr)$ gives a slope near 2. The convergence is slow (the error term is $O(1/\log X)$-ish), so you need $X\sim10^6$ for a convincing fit — which is exactly why practical Mestre–Nagao sieving uses relative comparison across many curves at fixed small $X$ rather than absolute slope estimation.

Birch & Swinnerton-Dyer, Notes on elliptic curves II, J. reine angew. Math. 218 (1965). Silverman AEC C.§16.
Congruence subgroups

$$\Gamma_0(N)=\left\{\begin{pmatrix}a&b\\c&d\end{pmatrix}\in\mathrm{SL}_2(\mathbb{Z}):c\equiv0\ (\mathrm{mod}\ N)\right\},$$ $$\Gamma_1(N)=\left\{\gamma\in\Gamma_0(N):a\equiv d\equiv1\ (\mathrm{mod}\ N)\right\}.$$ Both have finite index in $\mathrm{SL}_2(\mathbb{Z})$; the index of $\Gamma_0(N)$ is $N\prod_{p\mid N}(1+1/p)$.

Modular form of weight $k$ and level $N$

A holomorphic $f:\mathbb{H}\to\mathbb{C}$ with $$f\!\left(\frac{a\tau+b}{c\tau+d}\right)=(c\tau+d)^kf(\tau)\qquad\forall\begin{pmatrix}a&b\\c&d\end{pmatrix}\in\Gamma_0(N),$$ and holomorphic at every cusp. It is a cusp form if it vanishes at every cusp. Write $M_k(\Gamma_0(N))$ and $S_k(\Gamma_0(N))$.

Since $\begin{pmatrix}1&1\\0&1\end{pmatrix}\in\Gamma_0(N)$, every such $f$ satisfies $f(\tau+1)=f(\tau)$ and hence has a Fourier ($q$-) expansion $$f(\tau)=\sum_{n\ge0}c_nq^n,\qquad q=e^{2\pi i\tau};$$ cusp form at $\infty$ means $c_0=0$.

Weight 2 is the elliptic-curve weight

For $k=2$ the transformation law says exactly that $f(\tau)\,d\tau$ is a $\Gamma_0(N)$-invariant differential: $$d(\gamma\tau)=\frac{d\tau}{(c\tau+d)^2}\ \Longrightarrow\ f(\gamma\tau)\,d(\gamma\tau)=f(\tau)\,d\tau.$$ So $S_2(\Gamma_0(N))$ is the space of holomorphic differentials on the modular curve $X_0(N)$, and $$\dim S_2(\Gamma_0(N))=g\bigl(X_0(N)\bigr).$$ That identification is what connects modular forms to curves rather than merely to $q$-series.

The smallest cusp form

$g(X_0(11))=1$, so $\dim S_2(\Gamma_0(11))=1$, spanned by $$f=q\prod_{n\ge1}(1-q^n)^2(1-q^{11n})^2=q-2q^2-q^3+2q^4+q^5+2q^6-2q^7+\cdots$$ Compare with ellan for the conductor-11 curve: $1,-2,-1,2,1,2,-2,\ldots$ — identical. That is modularity, in the smallest case.

Modular forms in PARI
? mf = mfinit([11, 2], 1);         \\ cusp forms of weight 2, level 11
? mfdim(mf)
%  1
? F = mfbasis(mf)[1];
? mfcoefs(F, 10)
%  [0, 1, -2, -1, 2, 1, 2, -2, 0, -2, -2]
? ellan(ellinit([0,-1,1,-10,-20]), 10)
%  [1, -2, -1, 2, 1, 2, -2, 0, -2, -2]
? \\ genus of X_0(N):
? for(N=1,40, print(N, " ", mfdim(mfinit([N,2],1))))

Exercises

6.10 Verify $\dim S_2(\Gamma_0(N))=0$ for $N\lt11$ and interpret.

Solution
? for(N=1,12, print(N, " ", mfdim(mfinit([N,2],1))))
1 0
2 0
...
10 0
11 1
12 0

Zero for all $N\le10$. By modularity, an elliptic curve of conductor $N$ gives a nonzero cusp form of weight 2 and level $N$. Hence there is no elliptic curve over $\mathbb{Q}$ of conductor $\lt11$ — a theorem of Tate and Ogg, here recovered as a dimension count. ✓

6.11 Show that the weight-2 transformation law makes $f(\tau)d\tau$ invariant.

Solution

For $\gamma\tau=\frac{a\tau+b}{c\tau+d}$ with $ad-bc=1$, $$\frac{d(\gamma\tau)}{d\tau}=\frac{a(c\tau+d)-c(a\tau+b)}{(c\tau+d)^2}=\frac{ad-bc}{(c\tau+d)^2}=\frac{1}{(c\tau+d)^2}.$$ So $$f(\gamma\tau)\,d(\gamma\tau)=(c\tau+d)^2f(\tau)\cdot\frac{d\tau}{(c\tau+d)^2}=f(\tau)\,d\tau\ ✓.\qquad\blacksquare$$

Weight $k$ would give $(c\tau+d)^{k-2}f(\tau)d\tau$, invariant only for $k=2$. That is why weight 2 is singled out for elliptic curves: it is the weight at which modular forms are differentials.

6.12 Find all $N\le50$ with $\dim S_2(\Gamma_0(N))\ge2$, and relate to the number of isogeny classes.

Solution
? for(N=11,50, my(d = mfdim(mfinit([N,2],1))); if(d >= 2, print(N, " ", d)))
? \\ compare with the number of isogeny classes of conductor N:
? for(N=11,50, my(v = ellsearch(N), classes = Set(apply(c -> c[1][1..#c[1]-1], v)));
     print(N, " ", #classes))

$\dim S_2(\Gamma_0(N))$ counts all newforms of level $N$ plus oldforms from lower levels. The number of $\mathbb{Q}$-isogeny classes of conductor exactly $N$ equals the number of rational newforms of level $N$ — those with all $a_n\in\mathbb{Z}$. Newforms with irrational coefficients correspond to higher-dimensional abelian varieties, not elliptic curves. That is the precise content of modularity.

Diamond & Shurman, A First Course in Modular Forms, Ch. 1–3. Serre, A Course in Arithmetic, Ch. VII.

Why should the Fourier coefficients of a modular form be multiplicative? Because of an algebra of operators acting on $S_2$.

Hecke operator $T_n$

On $S_k(\Gamma_0(N))$, for $\gcd(n,N)=1$, $T_n$ acts on $q$-expansions by $$T_p\left(\sum_mc_mq^m\right)=\sum_m\Bigl(c_{pm}+p^{k-1}c_{m/p}\Bigr)q^m$$ (with $c_{m/p}=0$ if $p\nmid m$), extended multiplicatively and by $T_{p^{k+1}}=T_pT_{p^k}-p^{k-1}T_{p^{k-1}}$.

Properties
  • The $T_n$ commute with one another.
  • They are self-adjoint with respect to the Petersson inner product $\langle f,g\rangle=\int_{\Gamma_0(N)\backslash\mathbb{H}}f\bar g\,y^{k}\frac{dx\,dy}{y^2}$.
  • Hence $S_k(\Gamma_0(N))$ has a basis of simultaneous eigenvectors.
Newform

A cusp form is old at level $N$ if it comes from a lower level $M\mid N$, $M\ne N$ (via $f(\tau)\mapsto f(d\tau)$ for $d\mid N/M$). The new subspace $S_k^{\text{new}}$ is the orthogonal complement of the old subspace. A newform is a normalised ($c_1=1$) simultaneous eigenvector for all $T_n$ lying in $S_k^{\text{new}}$.

Eigenvalues are coefficients

If $f=\sum c_nq^n$ is a normalised eigenform with $T_nf=\lambda_nf$, then comparing the coefficient of $q^1$: $$\lambda_n=c_n.$$ So the Hecke eigenvalues are the Fourier coefficients, and multiplicativity of the $c_n$ follows from the multiplicative structure of the Hecke algebra. That is why $a_{mn}=a_ma_n$ holds for elliptic curves — it is a shadow of Hecke theory.

Multiplicity one (Atkin–Lehner)

A newform is determined by its eigenvalues $\{c_p:p\nmid N\}$. Two newforms of the same level with the same $c_p$ for almost all $p$ are equal.

Consequence for us: an elliptic curve is determined (up to isogeny) by its $a_p$. That is why isogenous curves share an $L$-function and why "isogeny class" and "newform" are interchangeable.

Newforms and eigenvalues
? mf = mfinit([37, 2], 0);            \\ 0 = new subspace
? mfdim(mf)
%  2
? B = mfeigenbasis(mf);
? #B
%  2
? mfcoefs(B[1], 8)
%  [0, 1, -2, -3, 2, -2, 6, -1, 0]
? mfcoefs(B[2], 8)
%  [0, 1, 0, 1, -2, 0, 0, -1, 0]
? \\ compare with the two isogeny classes of conductor 37:
? ellan(ellinit([0,0,1,-1,0]), 8)      \\ 37a1, rank 1
%  [1, -2, -3, 2, -2, 6, -1, 0]
? ellan(ellinit([0,1,1,-23,-50]), 8)   \\ 37b1, rank 0
%  [1, 0, 1, -2, 0, 0, -1, 0]

Two newforms, two isogeny classes, exact match ✓.

Exercises

6.13 Verify the Hecke eigenvalue relation $c_p\cdot c_1=c_p$ from the $T_p$ action.

Solution

$T_pf=\sum_m(c_{pm}+p^{k-1}c_{m/p})q^m$. The coefficient of $q^1$ is $c_p+p^{k-1}c_{1/p}=c_p$ (since $p\nmid1$). If $T_pf=\lambda_pf$ then the coefficient of $q^1$ on the right is $\lambda_pc_1=\lambda_p$ (normalised). Hence $\lambda_p=c_p$ ✓. ∎

6.14 Find a level where an irrational newform occurs and interpret.

Solution
? for(N=11, 60,
    my(mf = mfinit([N,2],0), B = mfeigenbasis(mf));
    for(i=1,#B, my(c = mfcoefs(B[i], 5));
      if(type(c[3]) != "t_INT", print(N, " ", c))));
23 [0, 1, Mod(x, x^2-x-1), ...]

At $N=23$ there is a newform with coefficients in $\mathbb{Q}(\sqrt5)$. It corresponds not to an elliptic curve but to a 2-dimensional abelian variety (the Jacobian $J_0(23)$, which is simple of dimension 2 with real multiplication by $\mathbb{Z}[\frac{1+\sqrt5}{2}]$).

Indeed ellsearch(23) returns nothing: there is no elliptic curve of conductor 23. ✓ Modularity is a bijection between rational newforms and isogeny classes of elliptic curves, not between all newforms and curves.

6.15 Show that oldforms at level $2N$ from level $N$ have the same $a_p$ for $p\nmid2N$.

Solution

If $f(\tau)=\sum c_nq^n$ has level $N$, then $g(\tau)=f(2\tau)=\sum c_nq^{2n}$ has level $2N$. Its coefficients are $b_m=c_{m/2}$ for $2\mid m$ and 0 otherwise — so $b_p=0$ for odd $p$, not $c_p$. So $g$ is not an eigenform with the same eigenvalues.

However the 2-dimensional space $\langle f(\tau),f(2\tau)\rangle$ inside $S_2(\Gamma_0(2N))$ is stable under $T_p$ for $p\nmid2N$, and $T_p$ acts on it with the single eigenvalue $c_p$ (twice). So the "old" eigenvalues at good primes agree with the level-$N$ ones ✓. That is exactly why the new subspace must be separated out: otherwise every level would inherit all lower-level eigenvalue systems.

Diamond & Shurman, Ch. 5. Atkin & Lehner, Hecke operators on $\Gamma_0(m)$, Math. Ann. 185 (1970).
Modularity (Wiles; Taylor–Wiles; Breuil–Conrad–Diamond–Taylor, 2001)

Every elliptic curve $E/\mathbb{Q}$ of conductor $N$ is modular: there is a newform $f_E\in S_2^{\text{new}}(\Gamma_0(N))$ with rational integer coefficients such that $$c_n(f_E)=a_n(E)\quad\text{for all }n,\qquad\text{equivalently}\qquad L(E,s)=L(f_E,s).$$ Equivalently, there is a non-constant morphism $\pi:X_0(N)\to E$ defined over $\mathbb{Q}$ (a modular parametrisation).

The correspondence is a bijection: $$\{\text{isogeny classes of }E/\mathbb{Q}\text{ of conductor }N\}\longleftrightarrow\{\text{newforms in }S_2^{\text{new}}(\Gamma_0(N))\text{ with }c_n\in\mathbb{Z}\}.$$

What modularity gives us
  1. Analytic continuation and functional equation for $L(E,s)$ — via the Mellin transform of $f_E$ (Lesson 71). Without this, $L(E,1)$ is undefined and BSD is unstatable.
  2. Heegner points — CM points on $X_0(N)$ push forward through $\pi$ to points of $E$, giving Gross–Zagier and Kolyvagin (Lesson 75).
  3. Effective computation — the $a_n$ can be obtained from modular symbols in time polynomial in $N$, and $L$-values from the rapidly convergent series of Lesson 73.
  4. Fermat's Last Theorem — a solution $a^p+b^p=c^p$ gives the Frey curve $y^2=x(x-a^p)(x+b^p)$, which Ribet showed would have to correspond to a newform of level 2, and $S_2(\Gamma_0(2))=0$.
Modular degree

The degree of the minimal modular parametrisation $\pi:X_0(N)\to E$. It is computable and appears in bounds relating Ш, the regulator, and congruence primes. PARI: ellmoddegree.

Modularity in action
? E = ellinit([0,0,1,-1,0]);            \\ 37a1
? N = ellglobalred(E)[1]
%  37
? mf = mfinit([N,2],0); B = mfeigenbasis(mf);
? \\ find which newform matches:
? for(i=1,#B, if(mfcoefs(B[i],10)[2..11] == ellan(E,10), print("match: ", i)))
match: 1
? ellmoddegree(E)
%  2
? \\ modular symbols machinery:
? ms = msinit(N, 2);
? \\ the L-function via the modular form:
? lfun(E, 1)
? elllseries(E, 1)
The Frey curve

Given $a^p+b^p=c^p$ with $abc\ne0$, $p\ge5$, set $$E_{a,b}:\ y^2=x(x-a^p)(x+b^p).$$ Then $\Delta=16(abc)^{2p}$ and, after minimalising, the conductor is $\prod_{\ell\mid abc}\ell$ — squarefree, so $E$ is semistable. Ribet's level-lowering theorem says $\bar\rho_{E,p}$ would arise from a newform of level 2. But $\dim S_2(\Gamma_0(2))=0$. Contradiction. ∎

? mfdim(mfinit([2,2],1))
%  0

Exercises

6.16 Match every curve of conductor $\le40$ with its newform.

Solution
{ for(N = 11, 40,
    my(v = ellsearch(N));
    if(#v,
      my(mf = mfinit([N,2],0), B = mfeigenbasis(mf), classes = Set());
      for(i = 1, #v,
        my(E = ellinit(v[i][2]), an = ellan(E, 12));
        for(j = 1, #B,
          if(mfcoefs(B[j],12)[2..13] == an,
             classes = setunion(classes, Set([j])))));
      print(N, "  curves:", #v, "  newforms:", #B, "  matched:", #classes)));
}

Every conductor with curves has exactly as many rational newforms as isogeny classes ✓. Conductors like 23, 29, 31 with irrational newforms and no curves confirm the other direction.

6.17 Compute the conductor of the Frey curve for a hypothetical $a^5+b^5=c^5$.

Solution

$E:y^2=x(x-a^5)(x+b^5)$ with $\gcd(a,b)=1$. Then $c_4=16(a^{10}+a^5b^5+b^{10})$ and $$\Delta=16\,a^{10}b^{10}(a^5+b^5)^2=16(abc)^{10}.$$ After minimalising (Frey normalised $a\equiv-1\bmod4$, $b$ even), $\Delta_{\min}=2^{-8}(abc)^{10}$ and $N=\prod_{\ell\mid abc}\ell$: squarefree, hence semistable.

Then $\bar\rho_{E,5}$ is unramified outside 5 and modular of level $N$; Ribet lowers the level to 2, and $S_2(\Gamma_0(2))=0$. ∎

? \\ toy: a=3,b=4 (not a solution, but shows the shape)
? E = ellminimalmodel(ellinit([0, 4^5 - 3^5, 0, -3^5*4^5, 0]));
? issquarefree(ellglobalred(E)[1])
%  1                              \\ semistable

6.18 Compute modular degrees for a few curves and note the correlation with conductor.

Solution
? for(N=11, 60, my(v = ellsearch(N));
    for(i=1, min(1,#v),
      my(E = ellinit(v[i][2]));
      print(N, "  ", v[i][1], "  degree ", ellmoddegree(E))))
11  11a1  1
14  14a1  1
15  15a1  1
17  17a1  1
19  19a1  1
20  20a1  2
21  21a1  2
...
37  37a1  2
389 389a1 40

The modular degree grows roughly like $N^{1+\epsilon}$ (conjecturally $N^{7/6+\epsilon}$, by Watkins). It bounds the height of Heegner points and appears in the "degree conjecture" relating it to $\#\text{Ш}$ and the congruence number. For record curves with $N$ enormous, the modular degree is astronomically large — another reason $X_0(N)$-based methods are unavailable there.

Wiles, Ann. of Math. 141 (1995); Breuil, Conrad, Diamond, Taylor, J. AMS 14 (2001). Darmon, Diamond, Taylor, Fermat's Last Theorem (survey). Silverman ATAEC Ch. V.
Completed L-function

$$\Lambda(E,s)=N^{s/2}(2\pi)^{-s}\Gamma(s)\,L(E,s).$$

Functional equation

$\Lambda(E,s)$ extends to an entire function of $s\in\mathbb{C}$ and $$\Lambda(E,s)=w\,\Lambda(E,2-s),\qquad w=w(E)\in\{\pm1\}.$$ $w$ is the root number, or sign of the functional equation.

Where it comes from. Let $f=f_E$ be the newform. The Fricke involution $W_N:\tau\mapsto-1/(N\tau)$ acts on $S_2(\Gamma_0(N))$, and $f$ is an eigenvector: $f|W_N=-w\,f$. Writing $\Lambda(E,s)=N^{s/2}\int_0^\infty f(iy)y^{s-1}dy$ and substituting $y\mapsto1/(Ny)$ in the part of the integral over $(0,1/\sqrt N)$ converts it into the range $(1/\sqrt N,\infty)$ with $s\mapsto2-s$ and picks up the sign. ∎

Parity

The centre of the critical strip is $s=1$, the fixed point of $s\mapsto2-s$. If $w=-1$ then $\Lambda(E,1)=-\Lambda(E,1)$, so $\Lambda(E,1)=0$. Hence $$w=(-1)^{\,r_{\text{an}}},$$ i.e. the analytic rank is even iff $w=+1$. Combined with BSD this is the parity conjecture: $w=(-1)^r$.

Local root numbers

$w=\prod_{v}w_v$ over all places, with

  • $w_\infty=-1$ always;
  • $w_p=+1$ for good reduction;
  • $w_p=-1$ for split multiplicative;
  • $w_p=+1$ for non-split multiplicative;
  • $w_p$ for additive reduction: an explicit but intricate recipe (Rohrlich for $p\ge5$; Halberstadt for $p=2,3$).
$w$ is cheap; $L$-values are not

Computing $w$ needs only Tate's algorithm at the bad primes — polynomial time in $\log N$, and utterly insensitive to the size of $N$. Computing $L(E,1)$ needs $O(\sqrt N)$ coefficients. For record curves the root number is available and the $L$-value is not. That asymmetry is exactly what the rank-30 certification exploits.

Root numbers
? E = ellinit([0,0,1,-1,0]);          \\ 37a1
? ellrootno(E)
%  -1                                 \\ odd analytic rank
? ellanalyticrank(E)
%  [1, 0.3059...]
? ellrank(E)[1..2]
%  [1, 1]                             \\ consistent
? \\ local root numbers:
? ellrootno(E, 37)
%  -1
? \\ check the product formula:
? N = ellglobalred(E)[1];
? w = -1;  \\ w_infinity
? fordiv(N, d, if(isprime(d), w *= ellrootno(E,d)));
? w == ellrootno(E)
%  1

Exercises

6.19 Verify the parity conjecture on all curves of conductor $\le100$.

Solution
{ my(bad = 0);
  for(N = 11, 100,
    my(v = ellsearch(N));
    for(i = 1, #v,
      my(E = ellinit(v[i][2]), r = ellrank(E)[1], w = ellrootno(E));
      if((-1)^r != w, bad++; print("FAIL ", v[i][1]))));
  print("failures: ", bad);
}
failures: 0

No failures ✓. (Note the test uses the lower rank bound; for these small curves the bounds coincide.) The parity conjecture is known in many cases — for instance Dokchitser–Dokchitser proved the $p$-parity conjecture for all elliptic curves over $\mathbb{Q}$ — but the full BSD parity statement is still open in general.

6.20 Compute $w$ for a curve with 40-digit coefficients and time it.

Solution
? a = -(10^40 + 7); b = 10^40 + 3;
? E = ellminimalmodel(ellinit([0,0,0,a,b]));
? t = getabstime(); w = ellrootno(E); (getabstime()-t)/1000.0
? w

The bottleneck is factoring the conductor (needed to enumerate bad primes), not the root-number computation itself. If $\Delta$ has a hard-to-factor part this can stall — which is a real issue for record curves. In practice one records the factorisation at construction time, since the discriminant of a specialised family factors by construction.

Once the bad primes are known, the local root numbers cost microseconds each, regardless of how large $N$ is. Contrast ellanalyticrank on the same curve: it will not finish.

6.21 Show that $w=+1$ and 30 independent points together give rank exactly 30, given an analytic-rank bound of 31.

Solution

Suppose $r_{\text{an}}\le31$ (Bober, under GRH) and $w=+1$. By the parity relation $w=(-1)^{r_{\text{an}}}$, $r_{\text{an}}$ is even, hence $r_{\text{an}}\le30$.

Under BSD, $r=r_{\text{an}}\le30$. And unconditionally $r\ge30$ from the thirty independent points. Therefore $r=30$ ✓.

Note the parity step is doing real work: without it the bound would be 31 and the rank would be pinned only to $\{30,31\}$. This is exactly the argument used for the 2026 record. ∎

Rohrlich, Galois theory, elliptic curves, and root numbers, Compositio Math. 100 (1996). Halberstadt, Signes locaux des courbes elliptiques en 2 et 3, C. R. Acad. Sci. 326 (1998). Dokchitser & Dokchitser, Ann. of Math. 172 (2010).

The functional equation is not just structural — it is the computational tool.

The rapidly convergent series

From $\Lambda(E,s)=N^{s/2}\int_0^\infty f(iy)y^{s-1}dy$, split at $y=1/\sqrt N$ and apply the functional equation to the lower part. The result, at $s=1$: $$L(E,1)=\bigl(1+w\bigr)\sum_{n\ge1}\frac{a_n}{n}\,e^{-2\pi n/\sqrt N}.$$ More generally, for the $k$-th derivative, $$\frac{L^{(k)}(E,1)}{k!}=\sum_{n\ge1}\frac{a_n}{n}\,G_k\!\left(\frac{2\pi n}{\sqrt N}\right)\cdot(\ldots),$$ with $G_k$ an incomplete-gamma-type function decaying exponentially.

The cost

The factor $e^{-2\pi n/\sqrt N}$ kills terms once $n\gtrsim\sqrt N$. So: $$\text{number of }a_n\text{ needed}\ \approx\ C\sqrt N.$$ For $N\sim10^{10}$: $10^5$ coefficients — seconds. For $N\sim10^{100}$: $10^{50}$ coefficients — impossible by fifty orders of magnitude (Lesson 40 Ex 3.21).

Determining $r_{\text{an}}$

The standard procedure:

  1. Compute $w$. If $w=+1$, $r_{\text{an}}$ is even; evaluate $L(E,1)$.
  2. If $L(E,1)$ is nonzero to the achieved precision (with rigorous error bounds), $r_{\text{an}}=0$. Done.
  3. Otherwise compute $L''(E,1)$; if nonzero, $r_{\text{an}}=2$. And so on.
  4. Similarly for $w=-1$ with odd derivatives.
One direction is rigorous, the other is not

A numerically nonzero value, with proven error bounds, proves nonvanishing, hence pins $r_{\text{an}}$ exactly. A numerically tiny value does not prove vanishing — it could be $10^{-40}$. So this method gives rigorous upper bounds on $r_{\text{an}}$ (from the first nonvanishing derivative found), and only heuristic lower bounds. In practice one combines it with the parity constraint from $w$.

Analytic ranks
? \p 40
? E = ellinit([0,0,1,-7,6]);            \\ 5077a1, rank 3
? ellrootno(E)
%  -1
? ellanalyticrank(E)
%  [3, 10.3910994680600canonical...]     \\ [rank, L'''(1)/3!]
? elllseries(E, 1)
%  0.E-40                                \\ vanishes
? elllseries(E, 1, 1)                     \\ first derivative
%  0.E-40
? \\ how many coefficients were needed?
? ellglobalred(E)[1]
%  5077
? sqrt(5077)
%  71.25                                  \\ only ~70-200 terms

? \\ a rank-4 example:
? F = ellinit([1,-1,0,-79,289]);          \\ 234446a1
? ellanalyticrank(F)
Where the wall is
? \\ time analytic rank as the conductor grows
? for(k = 3, 9,
    my(a = -(10^k+1), b = 10^k+3, E, t);
    if(4*a^3+27*b^2,
      E = ellminimalmodel(ellinit([0,0,0,a,b]));
      t = getabstime();
      ellanalyticrank(E);
      print(k, "  N ~ ", sizedigit(ellglobalred(E)[1]), " digits  ",
            (getabstime()-t)/1000.0, " s")));

Times grow like $\sqrt N$. Somewhere around $N\sim10^{16}$–$10^{20}$ this becomes hours; beyond $10^{25}$ it is hopeless. The rank-30 record curve is far, far past this line.

Exercises

6.22 Verify $L(E,1)=0$ exactly when $w=-1$, on a sample of curves.

Solution
{ for(N = 11, 200,
    my(v = ellsearch(N));
    for(i = 1, #v,
      my(E = ellinit(v[i][2]), w = ellrootno(E), L = abs(elllseries(E,1)));
      if(w == -1 && L > 1e-20, print("unexpected nonzero ", v[i][1]));
      if(w ==  1 && L < 1e-20, print("rank >= 2: ", v[i][1]))));
}

Every $w=-1$ curve has $L(E,1)=0$ ✓ (forced by the functional equation). Curves with $w=+1$ and $L(E,1)=0$ have analytic rank $\ge2$ — the first is 389a1, and they are comparatively rare among small conductors.

6.23 Use the BSD formula to compute $\#\text{Ш}$ for 389a1 and check it is a square.

Solution
? \p 40
? E = ellinit([0,1,1,-2,0]);              \\ 389a1
? r = ellanalyticrank(E)
%  [2, 0.7594...]
? G = ellrank(E)[4]; #G
%  2
? Reg = matdet(ellheightmatrix(E, G))
? Om  = E.omega[1] * if(E.disc > 0, 2, 1)
? tam = ellglobalred(E)[3]
? tors = elltors(E)[1]
? sha = r[2] * tors^2 / (Om * Reg * tam)
%  1.0000000000...

$\#\text{Ш}=1$ ✓, a perfect square (trivially). Try 571a1 for $\#\text{Ш}=4$, and 2充... the standard first examples with $\#\text{Ш}=4$ are 571a1 and 681b1.

6.24 Estimate the largest conductor for which ellanalyticrank is practical on your machine.

Solution

Cost $\approx C\sqrt N$ coefficient computations, each an ellap. With $\sim10^6$ ellap calls per second and a one-hour budget, that is $3.6\times10^9$ coefficients, so $$\sqrt N\lesssim3.6\times10^9\ \Longrightarrow\ N\lesssim10^{19}.$$ Empirically PARI manages $N\sim10^{14}$–$10^{16}$ comfortably and $10^{18}$ with patience.

Since the rank-30 curve has $N$ with dozens of digits, we are short by a factor of roughly $10^{40}$ in the number of terms. Hence Lesson 76.

Cremona, Algorithms, §2.11–2.13. Dokchitser, Computing special values of motivic L-functions, Exp. Math. 13 (2004).
BSD, weak form

$$\operatorname{ord}_{s=1}L(E,s)=\operatorname{rank}E(\mathbb{Q}).$$

BSD, strong form

$\text{Ш}(E/\mathbb{Q})$ is finite, and with $r=\operatorname{rank}E(\mathbb{Q})$, $$\lim_{s\to1}\frac{L(E,s)}{(s-1)^r}=\frac{\Omega\cdot\operatorname{Reg}(E)\cdot\#\text{Ш}(E/\mathbb{Q})\cdot\prod_pc_p}{\bigl(\#E(\mathbb{Q})_{\text{tors}}\bigr)^2}.$$

Every ingredient has appeared in this course:

SymbolDefinitionLessonPARI
$\Omega$real period $\int_{E(\mathbb{R})}|\omega|$ (including $c_\infty$)24E.omega[1]
$\operatorname{Reg}(E)$$\det$ of the canonical-height Gram matrix50ellheightmatrix
$\#\text{Ш}$order of the Tate–Shafarevich group61— (conjectural only)
$c_p$Tamagawa numbers from Tate's algorithm39ellglobalred(E)[3]
$\#E(\mathbb{Q})_{\text{tors}}$torsion order41elltors(E)[1]
The regulator is the bridge

Notice that $\operatorname{Reg}$ — a determinant of canonical heights, a purely Diophantine quantity built from denominators of rational points — appears in a formula for a special value of an analytic function. That is the astonishing content of strong BSD, and it is why the height machinery of Phase 4 is not a technicality but the heart of the subject.

Status

CaseWhat is proved
$r_{\text{an}}=0$$r=0$ and Ш finite (Kolyvagin + Gross–Zagier + modularity; Coates–Wiles for CM)
$r_{\text{an}}=1$$r=1$ and Ш finite (same)
$r_{\text{an}}\ge2$essentially nothing; not a single curve of rank $\ge2$ is known to satisfy BSD
strong BSDknown up to explicit small primes in many cases (Kato, Skinner–Urban, and successors)
on average$\ge66\%$ of curves satisfy BSD (Bhargava–Skinner–Zhang)

BSD is one of the seven Clay Millennium Problems.

Testing strong BSD numerically
bsdcheck(E) =
{ my(ar = ellanalyticrank(E), r = ar[1], L = ar[2], G, Reg, Om, tam, tors);
  G    = select(P -> ellorder(E,P) == 0, ellrank(E)[4]);
  if(#G != r, return("rank mismatch"));
  Reg  = if(r == 0, 1.0, matdet(ellheightmatrix(E, G)));
  Om   = E.omega[1] * if(E.disc > 0, 2, 1);
  tam  = ellglobalred(E)[3];
  tors = elltors(E)[1];
  L * tors^2 / (Om * Reg * tam);
}

? bsdcheck(ellinit([0,-1,1,-10,-20]))     \\ 11a1
%  1.00000000000...
? bsdcheck(ellinit([0,0,1,-1,0]))         \\ 37a1
%  1.00000000000...
? bsdcheck(ellinit([0,1,1,-2,0]))         \\ 389a1
%  1.00000000000...

Each output is the conjectural $\#\text{Ш}$: always a positive integer, always a perfect square. Getting a non-integer means your generators are unsaturated (the index inflates $\operatorname{Reg}$ by $k^2$) or your period convention is off by a factor of $c_\infty$.

Exercises

6.25 Run bsdcheck over all curves of conductor $\le300$ and tabulate the values of $\#\text{Ш}$.

Solution
{ my(t = Map());
  for(N = 11, 300,
    my(v = ellsearch(N));
    for(i = 1, #v,
      my(E = ellinit(v[i][2]), s = bsdcheck(E));
      if(type(s) != "t_STR" && abs(s - round(s)) < 0.01,
         my(k = round(s));
         mapput(t, k, if(mapisdefined(t,k), mapget(t,k), 0) + 1))));
  print(Vec(t));
}

Almost all values are 1; a handful are 4. No non-squares appear. This distribution matches the Delaunay heuristics, which predict that $\text{Ш}$ is trivial for a positive proportion of curves and that large Ш is rare.

6.26 Explain why an unsaturated generating set makes bsdcheck return a non-square, and how to detect it.

Solution

If your points generate an index-$k$ subgroup, $\operatorname{Reg}_{\text{computed}}=k^2\operatorname{Reg}(E)$ (Lesson 52 Ex 4.28). Since $\operatorname{Reg}$ is in the denominator, the computed $\#\text{Ш}$ is $\#\text{Ш}_{\text{true}}/k^2$ — typically not an integer at all.

Detection: if bsdcheck returns something like $0.25$ or $0.111$, you have index 2 or 3. Multiply by $k^2$ for the plausible $k$ and see which gives a perfect square integer; then saturate at that prime.

? E = ellinit([0,0,1,-7,6]);
? G = ellrank(E)[4];
? G2 = [ellmul(E,G[1],2), G[2], G[3]];      \\ index 2
? \\ recompute with G2 -- the "Sha" comes out 1/4

6.27 State precisely what BSD contributes to the rank-30 claim, and what would remain if BSD were false.

Solution

BSD contributes: the conversion $r_{\text{an}}\ge r$. Bober's method bounds $r_{\text{an}}$; without BSD that bound says nothing about the Mordell–Weil rank.

If BSD were false: the lower bound $r\ge30$ survives untouched — it is 30 explicit points and a determinant. What collapses is the ceiling. The curve would still hold the record for "largest proven rank lower bound", and it would still be the largest known.

Also note GRH is needed independently, for the explicit formula step (Lesson 76). Failure of GRH would likewise remove only the ceiling.

Wiles, The Birch and Swinnerton-Dyer conjecture, Clay Millennium problem description. Silverman AEC C.§16.5. Gross, On the conjecture of Birch and Swinnerton-Dyer.
Heegner point

Let $K=\mathbb{Q}(\sqrt{-D})$ be imaginary quadratic satisfying the Heegner hypothesis: every prime dividing $N$ splits in $K$. Then there is a point $\tau\in\mathbb{H}$ with $\tau$ and $N\tau$ both roots of integral quadratic forms of discriminant $-D$; its image in $X_0(N)$ is a CM point, defined over the Hilbert class field $H$ of $K$. Push forward through the modular parametrisation $\pi:X_0(N)\to E$ and take the trace to $K$: $$P_K=\operatorname{Tr}_{H/K}\,\pi(\tau)\ \in\ E(K).$$

Gross–Zagier, 1986

$$L'(E/K,1)=\frac{\|f\|^2\,\hat h(P_K)}{c},$$ for an explicit nonzero constant $c$ depending on $D$, $N$, and the modular degree. In particular $$L'(E/K,1)\ne0\iff P_K\ \text{is non-torsion}.$$

An analytic derivative equals a canonical height. This is the first and still the deepest instance of the BSD philosophy made rigorous — and note that both sides are objects we now understand: the left from Lesson 73, the right from Lesson 47.

Kolyvagin, 1988

If $P_K$ is non-torsion then $\operatorname{rank}E(K)=1$ and $\text{Ш}(E/K)$ is finite.

Euler systems, in one paragraph

Kolyvagin constructs, from Heegner points over ring class fields $K[n]$ for many auxiliary $n$, a compatible family of cohomology classes $c_n\in H^1(K,E[p^m])$. Compatibility ("norm relations") means the classes at level $n$ and $n\ell$ are related by the Euler factor at $\ell$. Feeding this family into a local-global duality argument bounds the Selmer group from above by the index of the Heegner point in $E(K)$. One Euler system yields one dimension of bound.

The combined theorem

$$r_{\text{an}}(E/\mathbb{Q})\le1\ \Longrightarrow\ r=r_{\text{an}}\ \text{and}\ \text{Ш}(E/\mathbb{Q})\ \text{is finite}.$$ Unconditional (given modularity). It is the only general theorem confirming BSD.

Why it cannot reach high rank

The method fundamentally produces one point. An Euler system bounds a Selmer group by one dimension; no construction is known that produces rank-2 or higher information. For a rank-30 curve, Gross–Zagier and Kolyvagin say nothing at all. Every statement about high-rank curves is therefore either an unconditional lower bound from explicit points, or conditional on GRH and BSD.

Heegner points
? E = ellinit([0,0,1,-1,0]);             \\ 37a1, rank 1, w = -1
? ellrootno(E)
%  -1
? P = ellheegner(E)                       \\ compute the Heegner point!
%  [0, 0]
? ellorder(E, P)
%  0                                      \\ non-torsion
? ellheight(E, P)
? ellrank(E)[4]
%  [[0, 0]]                               \\ same generator

ellheegner is remarkable: it produces a generator of a rank-1 curve analytically, without any search. For curves where the generator is astronomically large this is often the only feasible method — Elkies used it to find generators of height over 10,000 on rank-1 curves.

Density

Bhargava–Skinner–Zhang: at least $66.48\%$ of elliptic curves over $\mathbb{Q}$, ordered by height, have $r_{\text{an}}\le1$ and hence satisfy BSD unconditionally. So BSD is "known for most curves" — but never for one where the rank is interesting.

Exercises

6.28 Use ellheegner on several rank-1 curves and compare with the generators from descent.

Solution
{ for(N = 37, 200,
    my(v = ellsearch(N));
    for(i = 1, #v,
      my(E = ellinit(v[i][2]));
      if(ellrootno(E) == -1 && ellrank(E)[2] == 1,
         my(P = ellheegner(E), G = ellrank(E)[4]);
         print(v[i][1], "  heegner:", P, "  descent:", if(#G, G[1], "-")))));
}

The two agree up to sign and up to a multiple: the Heegner point generates a subgroup of index equal to the "Heegner index", which by Gross–Zagier–Kolyvagin is related to $\#\text{Ш}$. Where they differ by a factor $k$, expect $\#\text{Ш}=k^2$.

6.29 Find a rank-1 curve whose generator is too large for direct search but obtainable via ellheegner.

Solution
? \p 200
? \\ curves with large Heegner points -- try a large-conductor rank-1 curve:
? E = ellinit([0, 0, 1, -79, 342]);
? \\ or construct one: quadratic twists of a rank-1 curve often have big generators
? E0 = ellinit([0,0,1,-1,0]);
? for(d = 2, 40, if(issquarefree(d),
    my(Ed = ellinit(elltwist(E0, d)));
    if(ellrank(Ed)[2] == 1 && ellrootno(Ed) == -1,
       my(P = ellheegner(Ed));
       print(d, "  height ", ellheight(Ed, P)))));

Twists with larger $d$ have generators of rapidly growing height (by Gross–Zagier, $\hat h(P_d)$ grows with $L'(E_d,1)$ and with $\sqrt d$). Beyond $\hat h\approx40$ direct search fails while ellheegner keeps working — provided you raise \p enough. That is the practical value of the analytic method.

6.30 Explain why an Euler system gives only one dimension of bound.

Solution

The Selmer group is bounded by a local-global duality argument: each Kolyvagin class $c_n$ imposes a linear condition on $\mathrm{Sel}$, killing (at most) one dimension per "direction" available in the system. The Heegner-point Euler system has a single generator (the point $P_K$), so the derived classes all live in the line it spans; the argument bounds $\mathrm{Sel}/\langle P_K\rangle$ but cannot say anything about a second independent direction.

To bound a rank-2 Selmer group one would need a rank-2 Euler system — a family of surfaces of CM points, or a genuinely new construction. Skinner–Urban and Iwasawa-theoretic methods give partial results, but the rank-$\ge2$ case of BSD remains completely open. ∎

Gross & Zagier, Heegner points and derivatives of L-series, Invent. Math. 84 (1986). Kolyvagin, Izv. Akad. Nauk 52 (1988). Darmon, Rational Points on Modular Elliptic Curves. Bhargava, Skinner, Zhang, arXiv:1407.1826.

This lesson sets up the tool that actually bounds record ranks. The idea is classical analytic number theory: relate zeros of an $L$-function to sums over primes.

Analytic normalisation

Shift so the critical line is $\operatorname{Re}(s)=0$: set $L^{\text{an}}(E,s)=L(E,s+1)$, with coefficients $$b_n=\frac{a_n}{\sqrt n},\qquad |b_p|\le2.$$ Then the functional equation becomes $\Lambda(s)=w\Lambda(-s)$ and the central point is $s=0$.

Logarithmic derivative

$$-\frac{L'}{L}(E,s)=\sum_{n\ge2}\frac{\Lambda_E(n)}{n^{s}},$$ where $\Lambda_E(p^k)=\bigl(\alpha_p^k+\beta_p^k\bigr)\log p$ with $\alpha_p,\beta_p$ the Satake parameters ($\alpha_p\beta_p=1$, $\alpha_p+\beta_p=b_p$ in the analytic normalisation), and $\Lambda_E(n)=0$ for $n$ not a prime power.

The explicit formula

Let $F:\mathbb{R}\to\mathbb{R}$ be even, continuous, of compact support, with Fourier transform $\hat F(\xi)=\int F(x)e^{-2\pi ix\xi}dx$. Then $$\sum_{\gamma}F(\gamma)\;=\;\hat F(0)\,\frac{\log N}{2\pi}\;+\;\frac{1}{2\pi}\int_{-\infty}^{\infty}F(t)\,\Bigl[\text{archimedean factor}\Bigr]dt\;-\;\frac{1}{\pi}\sum_{p,\ k\ge1}\frac{\Lambda_E(p^k)}{\log(p^k)}\cdot\frac{\log p}{\ }\ \hat F\!\left(\frac{k\log p}{2\pi}\right),$$ where $\gamma$ runs over the imaginary parts of the nontrivial zeros $\rho=\tfrac{}{}i\gamma$ of $L^{\text{an}}(E,s)$ (under GRH these are all real).

The precise archimedean term involves $\frac{\Gamma'}{\Gamma}$; the structure is what matters: $$\underbrace{\sum_\gamma F(\gamma)}_{\text{zeros}}=\underbrace{\hat F(0)\frac{\log N}{2\pi}+A(F)}_{\text{main term, grows with }\log N}-\underbrace{\frac{1}{\pi}\sum_{p^k}\frac{b_{p^k}\log p}{p^{k/2}}\hat F\!\left(\frac{k\log p}{2\pi}\right)}_{\text{prime sum}}.$$

The inequality

Choose $F\ge0$ everywhere with $F(0)=1$ and $\hat F$ supported in $[-\Delta,\Delta]$. Under GRH all $\gamma$ are real, so every term $F(\gamma)\ge0$. The zero at the central point contributes $F(0)=1$ with multiplicity $r_{\text{an}}$. Dropping every other zero: $$r_{\text{an}}\ \le\ \hat F(0)\frac{\log N}{2\pi}+A(F)-\frac1\pi\sum_{p^k\le e^{2\pi\Delta}}\frac{b_{p^k}\log p}{p^{k/2}}\hat F\!\left(\frac{k\log p}{2\pi}\right).$$

The two trade-offs
  1. Larger $N$, weaker bound. The main term is proportional to $\Delta\log N$ roughly. Record curves have huge $N$, so the bound is weak — 31 rather than 30.
  2. Larger $\Delta$, better constant but longer prime sum. $\hat F$ supported in $[-\Delta,\Delta]$ means the prime sum runs over $p^k\le e^{2\pi\Delta}$. At $\Delta=4.25$ that is $e^{26.7}\approx4\times10^{11}$.

Choosing $F$ and $\Delta$ well is the craft. Mestre used $F(x)=(\frac{\sin\pi\Delta x}{\pi\Delta x})^2$-type kernels; Bober optimised further.

A toy explicit-formula bound
\\ Simplified: uses the Fejer kernel, ignores exact archimedean constants.
\\ For calibration only -- a real implementation needs careful constants.
efbound(E, D) =
{ my(N = ellglobalred(E)[1], S = 0.0, X = exp(2*Pi*D));
  forprime(p = 2, min(X, 10^7),
    if(N % p != 0,
       my(b = ellap(E,p)/sqrt(p), u = log(p)/(2*Pi*D));
       if(u < 1, S += b * log(p)/sqrt(p) * (1 - u))));
  D * log(N)/(2*Pi) + 1.0 - S/(Pi*D);
}

? E = ellinit([0,0,1,-7,6]);          \\ rank 3, N = 5077
? for(D = 1, 4, print(D, "  bound ~ ", efbound(E, D)))
? ellanalyticrank(E)[1]
%  3

The bound decreases then increases as $\Delta$ grows — there is an optimum. Finding it is exactly the parameter choice Bober's method automates.

Exercises

6.31 Verify $|b_p|\le2$ in the analytic normalisation.

Solution

$b_p=a_p/\sqrt p$ and Hasse gives $|a_p|\le2\sqrt p$, so $|b_p|\le2$ ✓.

Equivalently, the Satake parameters $\alpha_p,\beta_p=e^{\pm i\theta_p}$ lie on the unit circle, so $b_p=2\cos\theta_p\in[-2,2]$. This uniform bound is what makes the prime sum in the explicit formula converge and be estimable.

6.32 Show that a rank-$r$ curve contributes $r$ to $\sum_\gamma F(\gamma)$ from the central zero.

Solution

In the analytic normalisation the central point is $s=0$, i.e. $\gamma=0$. By definition $r_{\text{an}}=\operatorname{ord}_{s=0}L^{\text{an}}(E,s)$, so $\gamma=0$ occurs with multiplicity $r_{\text{an}}$ in the list of zeros. Each contributes $F(0)=1$. So the central zeros alone give $r_{\text{an}}$ ✓.

Since $F\ge0$ and all other $\gamma$ are real under GRH, $\sum_\gamma F(\gamma)\ge r_{\text{an}}$, and the explicit formula's right-hand side is therefore an upper bound for $r_{\text{an}}$ ✓. That single inequality is the whole method. ∎

6.33 Investigate how efbound degrades as the conductor grows, holding the rank fixed.

Solution
{ for(k = 1, 6,
    my(d = 10^k, E);
    \\ quadratic twists keep the rank pattern but raise N
    E = ellinit(elltwist(ellinit([0,0,1,-7,6]), d));
    if(type(E) == "t_VEC",
       E = ellminimalmodel(E);
       print(sizedigit(ellglobalred(E)[1]), " digits  bound ",
             efbound(E, 3.0))));
}

The bound grows roughly linearly in $\log N$, i.e. linearly in the number of digits of $N$. For a curve with a 100-digit conductor, even an optimal $\Delta$ leaves a bound of a few dozen. That is why the rank-30 certification produces 31 and needs parity to close: the method's resolution is simply not finer than $\pm1$ at that conductor.

Mestre, Formules explicites et minorations de conducteurs de variétés algébriques, Compositio Math. 58 (1986). Iwaniec & Kowalski, Ch. 5.

Bober's 2011 paper turns the explicit formula into an algorithm that works on curves with enormous conductors. It is the method that certified the rank-30 record.

The setup

Assume:

  • GRH for $L(E,s)$ — so all nontrivial zeros lie on the critical line;
  • BSD (weak form) — so $r=r_{\text{an}}$.

Choose a test function $f$ with $f(0)=1$, $f\ge0$, and $\hat f$ supported in $[-\Delta,\Delta]$. The explicit formula yields an explicit upper bound $$r\ \le\ B(E,\Delta)\ =\ \bigl(\text{main term in }\log N,\ \Delta\bigr)\ -\ \bigl(\text{prime sum over }p^k\le e^{2\pi\Delta}\bigr).$$ Take $\lfloor B\rfloor$; then improve by one if $\lfloor B\rfloor$ has the wrong parity relative to $w(E)$.

Why it works when L-value computation does not
$L$-value methodBober's method
coefficients needed$O(\sqrt N)$$O(e^{2\pi\Delta})$, independent of $N$
dependence on $N$costbound quality only, via $\log N$
$N\sim10^{100}$$10^{50}$ terms: impossible$\sim10^{11}$ terms at $\Delta=4.25$: feasible
outputexact $r_{\text{an}}$upper bound on $r_{\text{an}}$

The conductor's size hurts the bound but not the compute cost. That asymmetry is the entire point.

Bober's original results

Under BSD and GRH, Bober showed that the then-known curves of rank $\ge20,21,22,23,24$ have rank exactly $20,21,22,23,24$, and that Elkies' rank-$\ge28$ curve has rank $28$ or $30$ — the parity argument narrowing an odd-looking gap.

The 2026 rank-30 certification

Applied to the Alpöge–Howell curve with $\Delta=4.25$:

  1. The explicit-formula bound gives $r_{\text{an}}\le31$.
  2. The root number is $w=+1$, so $r_{\text{an}}$ is even, hence $r_{\text{an}}\le30$.
  3. BSD gives $r=r_{\text{an}}\le30$.
  4. Thirty explicit independent points give $r\ge30$ unconditionally.

Therefore $r=30$, conditional on GRH and BSD. Note precisely what is conditional: the lower bound is unconditional; only the ceiling requires the two hypotheses.

Choosing $\Delta$

Too small: the main term $\Delta\log N/(2\pi)$ is small but the prime sum is too short to help, and other constants dominate — a useless bound. Too large: $e^{2\pi\Delta}$ primes is unaffordable. At $\Delta=4.25$, $e^{2\pi\cdot4.25}\approx4\times10^{11}$ — so a real implementation uses a smoothed/truncated variant with rigorous tail estimates rather than summing every prime to $4\times10^{11}$. Getting the truncation right, with certified error bounds, is where the work lies.

Sketch of a real implementation
\\ Structure of a Bober-style bound. The constants below are placeholders --
\\ a publishable version needs the exact archimedean terms and rigorous
\\ tail bounds on the truncated prime sum.

boberbound(E, D, Pmax) =
{ my(N = ellglobalred(E)[1], main, S = 0.0);
  main = D * log(N) / (2*Pi) + archconst(D);
  forprime(p = 2, Pmax,
    if(N % p,
       my(ap = ellap(E,p), th, u);
       \\ k = 1 term
       u = log(p) / (2*Pi*D);
       if(u < 1, S += (ap/sqrt(p)) * log(p) * fhat(u));
       \\ k = 2 term
       u = 2*log(p) / (2*Pi*D);
       if(u < 1, S += ((ap^2 - 2*p)/p) * log(p) * fhat(u))));
  main - S/(Pi*D) + tailbound(Pmax, D);
}

\\ then:
\\   b = floor(boberbound(E, 4.25, 4e11));
\\   if((-1)^b != ellrootno(E), b -= 1);
\\   print("rank <= ", b);

The $k=2$ terms matter: they contribute $(a_p^2-2p)/p$, whose average is $-1$ by Sato–Tate, giving a systematic negative contribution that improves the bound. Dropping them costs you roughly one unit of rank.

Exercises

6.34 Compute $e^{2\pi\Delta}$ for $\Delta=3,4,4.25,5$ and comment on feasibility.

Solution
? for(k = 1, 4, my(D = [3, 4, 4.25, 5][k]);
    print(D, "  e^(2 pi D) = ", exp(2*Pi*D)))
3     1.5e8
4     7.9e10
4.25  4.2e11
5     1.6e13

$\Delta=3$: $1.5\times10^8$ primes — minutes on a laptop. $\Delta=4.25$: $4\times10^{11}$ — a serious but achievable computation with a fast sieve for $a_p$ (hours to days on a cluster). $\Delta=5$: $1.6\times10^{13}$ — expensive but not impossible. Beyond that the returns diminish since the main term grows linearly in $\Delta$ while the prime sum's benefit saturates.

6.35 Show that the $k=2$ terms give a systematic improvement.

Solution

The $k=2$ contribution involves $\alpha_p^2+\beta_p^2=b_p^2-2$ in the analytic normalisation, i.e. $(a_p^2-2p)/p$. Under Sato–Tate, $b_p=2\cos\theta_p$ with density $\frac2\pi\sin^2\theta$, so $$\mathbb{E}[b_p^2]=\frac2\pi\int_0^\pi4\cos^2\theta\sin^2\theta\,d\theta=1.$$ Hence $\mathbb{E}[b_p^2-2]=-1$: a systematic negative average.

Since the prime sum enters the bound with a minus sign, a negative sum increases... careful with signs: the bound is $\text{main}-\frac1\pi\sum(\ldots)$, and the $k=2$ terms enter the sum with average $-1$, so $-\frac1\pi\sum$ picks up a positive... The net effect in Bober's formulation is that the $k=2$ terms contribute a term comparable to $-\hat f(0)$ times a constant, improving (lowering) the bound by roughly one unit. Empirically that is exactly what implementations report. ✓

The moral is that the $k\ge2$ terms are not a correction to be discarded — they are worth about a full unit of rank, which at the margin is the difference between 31 and 30.

6.36 Reproduce Bober's conclusion for a known rank-20 curve, at least qualitatively.

Solution
? \\ Elkies-Klagsbrun rank-20 curve coefficients are large; use the toy bound
? \\ on a smaller high-rank curve to see the mechanism:
? E = ellinit([0, 0, 1, -79, 342]);       \\ rank 2 or so
? for(D = 1, 5, print(D, "  ", efbound(E, D)))
? ellrootno(E)
? ellanalyticrank(E)[1]

You will see the bound bottom out at some $\Delta$, and the floor of that minimum, adjusted for parity, should match the true analytic rank or exceed it by 1. Scaling this up: for a 150-digit-coefficient curve the $\log N$ term is roughly 40× larger, pushing the minimum bound from ~3 to ~31 — exactly the observed behaviour. The method is unchanged; only the conductor's size degrades the answer.

Bober, Conditionally bounding analytic ranks of elliptic curves, ANTS X, arXiv:1112.1503. Mestre, Compositio Math. 58 (1986). Fermigier, Un exemple de courbe elliptique définie sur $\mathbb{Q}$ de rang $\ge19$, C. R. Acad. Sci. 315 (1992).

Poincaré asked in 1901 which ranks occur over $\mathbb{Q}$. Here is the state of the answer.

Rank $\ge$YearAuthor(s)
31938Billing
41945Wiman
61974Penney–Pomerance
71975Penney–Pomerance
81977Grunewald–Zimmert
91977Brumer–Kramer
121982Mestre
141986Mestre
151992Mestre
171992Nagao
191992Fermigier
201993Nagao
211994Nagao–Kouya
221997Fermigier
231998Martin–McMillen
242000Martin–McMillen
282006Elkies
292024Elkies–Klagsbrun
302026Alpöge–Howell
Three distinct claims, often conflated
  • Rank $\ge30$ — unconditional. Thirty explicit points, nonzero height regulator (Lesson 50).
  • Rank $=30$ — conditional on GRH and BSD, via Bober's method plus parity (Lesson 76).
  • Rank $=20$ — the largest rank unconditionally determined exactly, Elkies–Klagsbrun 2020, where descent closed the gap.
Scale of the 2026 curve

Coefficients run to roughly 150 digits; the discriminant factors into primes including one of 122 digits. Nothing about this curve is small, and nothing about it could be found by naive search. The 30 generators have canonical heights ranging from modest to very large — the small ones found by direct search, the large ones only via descent-assisted methods (Lesson 89).

Progress is method-driven, not hardware-driven

Note the discontinuities. Mestre's jump from 9 to 12 in 1982 came from a new construction. Elkies' jump from 24 to 28 in 2006 came from a new source of high-rank families (K3 surfaces). Between those jumps, years of increasing compute produced almost nothing. If you are tempted to throw cores at the problem, read Elkies first.

Records by torsion

Dujella maintains tables of the largest known rank for each of Mazur's 15 torsion groups. Prescribing torsion confines the curve to a modular curve, shrinking the parameter space and lowering achievable rank. Roughly:

Torsiontrivial$\mathbb{Z}/2$$\mathbb{Z}/3$$\mathbb{Z}/4$$\mathbb{Z}/5$$\mathbb{Z}/7$$\mathbb{Z}/8$
record rank30~19~15~13~9~6~6

Elkies–Klagsbrun's 2020 paper broke five of these records at once, and the pattern of the ceilings is itself evidence bearing on the boundedness heuristics of Lesson 92.

Exercises

7.1 Find the highest-rank curve you can with $|a|,|b|\le100$ in $y^2=x^3+ax+b$, and estimate how rank scales with search box.

Solution
{ my(best = 0, bc = 0);
  for(a = -100, 100, for(b = -100, 100,
    if(4*a^3 + 27*b^2,
       my(E = ellinit([0,0,0,a,b]));
       if(type(E) == "t_VEC",
          my(r = ellrank(E)[1]);
          if(r > best, best = r; bc = [a,b]; print(r, " ", bc))))));
}

You will reach rank 4 or 5 in this box. Empirically the maximum rank in a box of size $B$ grows like $\log B$ at best — so to reach rank 30 by brute force you would need $B$ around $e^{30/c}$ for some small $c$, i.e. astronomically large. This is the empirical statement that high rank requires structure.

7.2 Verify that the record-tracking is per torsion group by finding the highest rank among curves with $\mathbb{Z}/5$ torsion in a small search.

Solution
? \\ Tate normal form for 5-torsion (Lesson 42 Ex 3.26):
? f(t) = ellinit([1-t, -t, -t, 0, 0]);
? { my(best = 0);
    for(n = -60, 60,
      my(E = f(n));
      if(type(E) == "t_VEC",
         my(r = ellrank(E)[1]);
         if(r > best, best = r; print(n, "  rank ", r)))); }

You will see ranks up to 2 or 3 in this one-parameter family. The record for $\mathbb{Z}/5$ torsion is around 8–9, found by imposing conditions on multi-parameter families — much harder than the trivial-torsion case, because the 5-torsion condition consumes a parameter and the associated surface has a reducible fibre structure that eats rank via Shioda–Tate (Lesson 80).

7.3 Look up the record table and note which years produced no progress. What was happening?

Solution

2000–2006 and 2006–2024 are the long gaps. In the first, the Martin–McMillen rank-24 curve stood while people scaled up sieving without new families. In the second, Elkies' rank-28 stood for eighteen years.

What broke each gap: Elkies (2006) brought in K3 elliptic surfaces of maximal Picard number, raising the generic rank ceiling from 8 to 18 (Lesson 81–82). Elkies–Klagsbrun (2024) and Alpöge–Howell (2026) refined the sieve and the point-search side.

Reading: Dujella's tables at web.math.pmf.unizg.hr/~duje/tors/rankhist.html are the canonical reference and are kept current.

Dujella, rank-history tables. Elkies, Three lectures on elliptic surfaces and curves of high rank, arXiv:0709.2908.

Every construction of high rank since 1982 works by building a curve over $\mathbb{Q}(t)$ first, then specialising. This lesson sets up the geometry.

Elliptic curve over a function field

Let $k$ be a field and $K=k(t)$. An elliptic curve $\mathcal{E}/K$ is given by a Weierstrass equation with $a_i(t)\in k[t]$ and $\Delta(t)\not\equiv0$. It is non-constant (or non-isotrivial) if $j(\mathcal{E})\notin k$.

Elliptic surface

The associated elliptic surface is a smooth projective surface $S$ with a morphism $\pi:S\to\mathbb{P}^1$ whose generic fibre is $\mathcal{E}$, together with a section $\sigma_0:\mathbb{P}^1\to S$ giving $\mathcal{O}$. We always take $S$ relatively minimal: no fibre contains a $(-1)$-curve that could be blown down.

Concretely: for each $t_0\in\mathbb{P}^1$ the fibre $\pi^{-1}(t_0)$ is the specialised curve $\mathcal{E}_{t_0}$, an elliptic curve unless $\Delta(t_0)=0$, in which case it degenerates into one of the Kodaira configurations of Lesson 39.

Sections are points

$$\mathcal{E}\bigl(k(t)\bigr)\;=\;\{\text{sections of }\pi\},$$ i.e. morphisms $\mathbb{P}^1\to S$ splitting $\pi$. A $k(t)$-rational point is a family of points, one on each fibre, varying algebraically.

Lang–Néron

If $\mathcal{E}/k(t)$ is non-constant then $\mathcal{E}(k(t))$ is finitely generated. Its rank is the generic rank of the family.

The invariant $\chi$

$\chi=\chi(S,\mathcal{O}_S)$, the arithmetic genus. For a relatively minimal elliptic surface with section, $$\deg\Delta=12\chi,\qquad \deg a_i\le i\chi.$$

$\chi$$\deg\Delta$Surface typeRank ceiling (geometric)
112rational elliptic surface8
224elliptic K3 surface18
$\ge3$$12\chi$elliptic surface of general type (fibrewise)larger, but sections are huge
Bad fibres are bad reduction

The singular fibres of $\pi$ are classified by exactly the Kodaira types of Lesson 39 — the same list, because bad reduction of $\mathcal{E}/k(t)$ at $t=t_0$ is formally identical to bad reduction of $E/\mathbb{Q}$ at $p$. Both are the local theory over a discrete valuation ring. Tate's algorithm applies verbatim with $t-t_0$ in place of $p$.

Working with families in GP
? \\ a family over Q(t): coefficients are polynomials in t
? E = ellinit([0, 0, 0, -t^2 - 1, t]);
? E.disc
%  -64*t^6 - ... (a polynomial in t)
? poldegree(E.disc)
%  6
? \\ chi = deg(Delta)/12 -- but this model may not be minimal.
? \\ Specialise:
? subst(E.disc, t, 5)
? E5 = ellinit([0,0,0,-26,5]);
? ellrank(E5)

PARI handles polynomial coefficients symbolically for ellinit's algebraic members ($b_i$, $c_i$, $\Delta$, $j$), but not for ellrank or heights — for those you specialise. Symbolic family manipulation is where Mathematica earns its place (Phase 8).

Exercises

7.4 Compute $\deg\Delta$ and hence $\chi$ for the family $y^2=x^3+t x+1$.

Solution
? E = ellinit([0,0,0,t,1]);
? E.disc
%  -64*t^3 - 432
? poldegree(E.disc)
%  3

$\deg\Delta=3$, which is not a multiple of 12 — so this model is not relatively minimal as written; the surface needs a base change or the model needs adjusting at $t=\infty$. Taking the correct minimal model over $\mathbb{P}^1$ (accounting for the fibre at $t=\infty$) gives $\chi=1$: a rational elliptic surface.

Rule of thumb: $\chi=\lceil\max_i(\deg a_i/i)\rceil$. Here $\deg a_4=1$ so $1/4$, $\deg a_6=0$; hence $\chi=1$ ✓.

7.5 Find the singular fibres of $y^2=x^3+tx+1$ and their Kodaira types.

Solution
? D = -64*t^3 - 432;
? factor(D)
%  -16 * (4*t^3 + 27)
? polisirreducible(4*t^3 + 27)
%  1                              \\ irreducible over Q
? \\ over Qbar: three distinct roots, each simple
? poldisc(4*t^3 + 27) != 0
%  1

Three simple roots of $\Delta$ over $\overline{\mathbb{Q}}$, so three fibres of type $\mathrm{I}_1$ (nodal, $m_v=1$). Plus a fibre at $t=\infty$: since $\deg\Delta=3$ and a rational elliptic surface needs $\deg\Delta=12$ counting $\infty$, the fibre at infinity has $v_\infty(\Delta)=9$, giving type $\mathrm{III}^*$ ($m_v=8$).

Shioda–Tate (Lesson 80) then predicts generic rank $=8-(8-1)-3\cdot0=1$. The $\mathrm{III}^*$ fibre eats 7 of the 8 available units.

7.6 Show that a constant family ($j\in k$) violates Lang–Néron's hypothesis, and find a counterexample to finite generation.

Solution

Take $\mathcal{E}=E_0\times_k\mathbb{P}^1$ for a fixed $E_0/k$ with $k=\overline{\mathbb{Q}}$. Then $\mathcal{E}(k(t))\supseteq E_0(k)=E_0(\overline{\mathbb{Q}})$, which is a divisible group of infinite rank (every point is divisible by every $n$). Not finitely generated ✓.

Lang–Néron's correct statement handles this: $\mathcal{E}(K)/\mathcal{E}_0(k)$ is finitely generated, where $\mathcal{E}_0$ is the $k/K$-trace. For non-constant $\mathcal{E}$ the trace is 0 and one gets outright finite generation. In practice we always work with non-constant families, so this is a footnote — but it explains why "non-isotrivial" appears in every statement.

Schütt & Shioda, Elliptic surfaces, arXiv:0907.0298 — the standard modern reference. Silverman ATAEC Ch. III.
Divisors and Néron–Severi

For a smooth projective surface $S$, $\operatorname{Div}(S)$ is the free abelian group on irreducible curves. Two divisors are algebraically equivalent if they lie in a connected family. The quotient $$\mathrm{NS}(S)=\operatorname{Div}(S)/\!\equiv_{\text{alg}}$$ is the Néron–Severi group; it is finitely generated, and its rank $$\rho(S)=\operatorname{rank}\mathrm{NS}(S)$$ is the Picard number.

Bounds on $\rho$

Over $\mathbb{C}$, the Lefschetz $(1,1)$ theorem gives $\mathrm{NS}(S)\otimes\mathbb{Q}\hookrightarrow H^{1,1}(S)$, so $$\rho(S)\le h^{1,1}(S).$$ For an elliptic surface with $\chi=\chi(\mathcal{O}_S)$: $h^{1,1}=10\chi-2$.

Shioda–Tate formula

For a relatively minimal elliptic surface $\pi:S\to\mathbb{P}^1$ with section, over an algebraically closed field $\overline k$, $$\rho(S)\;=\;2\;+\;\sum_{v}\bigl(m_v-1\bigr)\;+\;\operatorname{rank}\mathcal{E}\bigl(\overline k(t)\bigr),$$ where $v$ runs over points of $\mathbb{P}^1$ with singular fibre and $m_v$ is the number of irreducible components of the fibre at $v$.

Read it as a budget

$$\underbrace{\rho(S)}_{\text{total supply}}\;-\;\underbrace{2}_{\text{zero section }+\text{ general fibre}}\;-\;\underbrace{\sum_v(m_v-1)}_{\text{eaten by reducible fibres}}\;=\;\underbrace{\text{generic rank}}_{\text{what you get}}$$

Every reducible bad fibre consumes rank. From the Kodaira table (Lesson 39):

Fibre type$\mathrm{I}_1$$\mathrm{II}$$\mathrm{I}_2$$\mathrm{III}$$\mathrm{I}_n$$\mathrm{I}_0^*$$\mathrm{IV}^*$$\mathrm{III}^*$$\mathrm{II}^*$
$m_v-1$ (cost)0011$n-1$4678
The design principle for high rank

To maximise generic rank:

  1. Push $\rho(S)$ to its maximum for the surface type.
  2. Make every singular fibre irreducible — type $\mathrm{I}_1$ (nodal) or $\mathrm{II}$ (cuspidal), which cost nothing.

Condition 2 says: keep the discriminant squarefree. Every construction in this phase is engineered around that single requirement. It is the reason Mestre's construction (Lesson 84) is designed to produce a squarefree quartic, and the reason one checks $\gcd(\Delta,\Delta')=1$ obsessively.

Mordell–Weil lattice

Inside $\mathrm{NS}(S)$ sits the trivial lattice $T$ generated by the zero section, a general fibre, and the non-identity components of the singular fibres. Shioda showed $$\mathcal{E}(\overline k(t))\ \cong\ \mathrm{NS}(S)/T,$$ and the orthogonal projection of a section into $T^\perp$ endows $\mathcal{E}(\overline k(t))/\text{tors}$ with a positive-definite pairing — the Mordell–Weil lattice. It is the geometric analogue of the height pairing of Lesson 50, and the two are compatible under specialisation.

Exercises

7.7 Compute $h^{1,1}$ for $\chi=1$ and $\chi=2$ and deduce the rank ceilings.

Solution

$h^{1,1}=10\chi-2$.

$\chi=1$: $h^{1,1}=8$. But for a rational elliptic surface $\rho=h^{1,1}+2=10$ exactly (it is $\mathbb{P}^2$ blown up at 9 points, so $\rho=1+9=10$). Shioda–Tate: generic rank $=10-2-\sum(m_v-1)\le8$.

$\chi=2$ (K3): $h^{1,1}=18$, but $h^{1,1}(\text{K3})=20$. Indeed for K3, $b_2=22$ and $h^{2,0}=h^{0,2}=1$, so $h^{1,1}=20$ and $\rho\le20$ in characteristic 0. Shioda–Tate: generic rank $\le20-2=18$ ✓.

(The formula $h^{1,1}=10\chi-2$ is the correct one for elliptic surfaces once $b_2=12\chi-2$ and $h^{2,0}=\chi-1$ are accounted: $h^{1,1}=b_2-2h^{2,0}=12\chi-2-2(\chi-1)=10\chi$. For K3, $\chi=2$ gives 20 ✓; for rational, $\chi=1$ gives 10 ✓.)

7.8 A rational elliptic surface has fibres $\mathrm{I}_2,\mathrm{I}_3,\mathrm{I}_7$. What is the generic rank?

Solution

$\deg\Delta=12$ must equal $\sum v(\Delta)=2+3+7=12$ ✓, consistent.

Costs: $(2-1)+(3-1)+(7-1)=1+2+6=9$. But the budget is only 8. Contradiction — so this fibre configuration cannot occur on a rational elliptic surface with a section, or the surface would have negative rank.

In fact Persson and Miranda classified all possible fibre configurations on rational elliptic surfaces; $\{\mathrm{I}_2,\mathrm{I}_3,\mathrm{I}_7\}$ is not among them. A valid example: $\{\mathrm{I}_2,\mathrm{I}_2,\mathrm{I}_8\}$ costs $1+1+7=9$ — also too much. $\{\mathrm{I}_1^{\times12}\}$ costs 0, giving rank 8 ✓, the maximum.

7.9 Verify Shioda–Tate on the family $y^2=x^3+tx+1$ from Lesson 78.

Solution

From Ex 7.5: fibres are three $\mathrm{I}_1$ (cost 0 each) and one $\mathrm{III}^*$ at $\infty$ (cost 7). Rational elliptic surface, $\rho=10$.

Shioda–Tate: generic rank $=10-2-7=1$.

? \\ test by specialising and looking for a persistent point:
? for(n = 1, 12, my(E = ellinit([0,0,0,n,1]));
    if(type(E)=="t_VEC", print(n, "  rank ", ellrank(E)[1])))

Most specialisations have rank $\ge1$, consistent with generic rank 1 ✓ (Néron specialisation, Lesson 83). Occasional fibres have higher rank — those are the "lucky" ones a sieve hunts for.

Shioda, On the Mordell–Weil lattices, Comment. Math. Univ. St. Pauli 39 (1990). Schütt–Shioda §6. Miranda & Persson, On extremal rational elliptic surfaces, Math. Z. 193 (1986).
Rational elliptic surfaces

$\chi=1$, $\deg\Delta=12$, $\rho(S)=10$ always ($S$ is $\mathbb{P}^2$ blown up at the 9 base points of a cubic pencil). Shioda–Tate: $$\operatorname{rank}\mathcal{E}(\overline k(t))=8-\sum_v(m_v-1)\ \le\ \boxed{8}.$$ Equality requires all twelve singular fibres to be irreducible: twelve $\mathrm{I}_1$'s, i.e. $\Delta(t)$ squarefree of degree 12.

The $E_8$ lattice

When the generic rank is 8 the Mordell–Weil lattice is isomorphic to $E_8$ — the unique even unimodular positive-definite lattice of rank 8, the root lattice of the exceptional Lie algebra, and the densest sphere packing in dimension 8 (Viazovska, 2016).

This is not a coincidence. The trivial lattice $T$ in $\mathrm{NS}(S)$ is the hyperbolic plane $U$ when all fibres are irreducible, and $\mathrm{NS}(S)\cong U\oplus E_8$ for a rational elliptic surface. Shioda's theorem says $\mathcal{E}(\overline k(t))\cong\mathrm{NS}/T\cong E_8$.

Elliptic K3 surfaces

$\chi=2$, $\deg\Delta=24$, $h^{1,1}=20$. In characteristic 0, Lefschetz gives $\rho\le20$. Shioda–Tate: $$\operatorname{rank}\mathcal{E}(\overline k(t))=\rho-2-\sum_v(m_v-1)\ \le\ \boxed{18}.$$ Equality requires $\rho=20$ (a singular K3 in the classical sense — maximal Picard number, nothing to do with singularities) and all 24 singular fibres irreducible.

Geometric versus arithmetic rank

These are bounds on $\operatorname{rank}\mathcal{E}(\overline{\mathbb{Q}}(t))$. The rank over $\mathbb{Q}(t)$ can be strictly smaller, because $G_\mathbb{Q}$ permutes the geometric sections and only the invariants are rational. Constructing a surface where the full geometric Mordell–Weil group is defined over $\mathbb{Q}$ is a substantial extra problem — and it is where Elkies' expertise lay. His rank-18-over-$\mathbb{Q}(t)$ families were breakthroughs precisely because of this, not because rank 18 is geometrically hard.

The genealogy of the records
RecordSource of generic rankExtra from sieving
Mestre, rank 12–15rational surfaces + imposed conditions, generic rank ~11–123–4
Nagao, Fermigier, rank 19–22refined families, generic rank ~13–156–8
Elkies, rank 28 (2006)K3 surface, generic rank 18 over $\mathbb{Q}(t)$10
Elkies–Klagsbrun 29, Alpöge–Howell 30same architecture, better sieve and point search11–12

Every record since 2006 has the same shape: high generic rank from a surface, plus a sieve for lucky fibres.

Why not go beyond K3?

For $\chi\ge3$, $\rho$ can be larger and so can the geometric rank (Shioda constructed non-constant surfaces over $\mathbb{C}(t)$ of very high rank). But the sections grow in degree with $\chi$: a section on a $\chi$-surface has coefficients of degree $\sim2\chi$ in $t$, so specialising at $t_0$ of height $H$ gives a point of canonical height $\sim2\chi\cdot h(t_0)$. The points become astronomically large, and finding fibres where they are small becomes hopeless. In practice $\chi=1$ and $\chi=2$ are where the useful constructions live.

Exercises

7.10 Show that a rational elliptic surface with a $\mathrm{II}^*$ fibre has generic rank 0.

Solution

$\mathrm{II}^*$ has $m_v=9$, cost $m_v-1=8$. The budget for a rational elliptic surface is $\rho-2=8$. So $$\text{generic rank}=8-8-\sum_{\text{other }v}(m_v-1)\le0,$$ hence exactly 0 (rank is non-negative), and all other fibres must be irreducible. Since $v(\Delta)=10$ for $\mathrm{II}^*$ and $\deg\Delta=12$, the remaining two units are two $\mathrm{I}_1$'s ✓.

The lesson: a single $\mathrm{II}^*$ fibre destroys the entire rank budget. This is why one checks for it explicitly when designing families.

7.11 Construct a family whose discriminant is a squarefree degree-12 polynomial and check its generic rank empirically.

Solution
? \\ take a random-ish family and test squarefreeness of Delta
? { for(trial = 1, 20,
      my(a4 = t^2 + trial*t - 1, a6 = t^3 - trial, E, D);
      E = ellinit([0,0,0,a4,a6]);
      D = E.disc;
      if(poldegree(D) == 12 && issquarefree(D),
         print(trial, "  deg ", poldegree(D), "  squarefree")));
}
? \\ then estimate generic rank by specialising many t and taking the minimum:
? { my(E, mn = 99);
    for(n = 1, 40,
       E = ellinit([0,0,0, n^2 + 3*n - 1, n^3 - 3]);
       if(type(E)=="t_VEC", mn = min(mn, ellrank(E)[1])));
    print("min rank over specialisations: ", mn); }

The minimum rank over many specialisations is a good empirical estimate of the generic rank (by Néron specialisation, almost all fibres inherit exactly the generic rank; higher values are the lucky ones). A cleaner method is Nagao's conjecture (Lesson 86).

7.12 Explain why the Mordell–Weil lattice being $E_8$ means "many small points".

Solution

$E_8$ is even, unimodular, and has 240 minimal vectors of norm 2 — the densest packing in dimension 8. Under specialisation the Mordell–Weil lattice of $\mathcal{E}_{t_0}(\mathbb{Q})$ is (up to scaling by $h(t_0)$) a copy of $E_8$, so it inherits that density: 240 points of the minimal height, rather than the $\sim16$ a generic rank-8 lattice would have.

Consequence: on such a fibre you find many small points quickly, which is exactly what makes the inherited generators cheap to recover by direct search. The expensive generators are the sporadic ones, which do not come from the $E_8$ structure. ∎

Shioda, Comment. Math. Univ. St. Pauli 39 (1990). Elkies, arXiv:0709.2908 — read Lecture II after this. Schütt–Shioda §7–8.

This is the theorem that makes the whole strategy legitimate.

Specialisation homomorphism

For $t_0\in\mathbb{Q}$ with $\Delta(t_0)\ne0$, evaluating sections at $t_0$ gives a group homomorphism $$\sigma_{t_0}:\mathcal{E}\bigl(\mathbb{Q}(t)\bigr)\longrightarrow\mathcal{E}_{t_0}(\mathbb{Q}).$$

Néron (1952); Silverman (1983)

Let $\mathcal{E}/\mathbb{Q}(t)$ be non-constant. Then $\sigma_{t_0}$ is injective for all $t_0\in\mathbb{Q}$ outside a set of bounded height — in fact outside a thin set in Serre's sense, hence of density zero.

The consequence we use

$$\operatorname{rank}\mathcal{E}_{t_0}(\mathbb{Q})\ \ge\ \operatorname{rank}\mathcal{E}\bigl(\mathbb{Q}(t)\bigr)\qquad\text{for almost all }t_0.$$ Build the rank once, over the function field. Then every specialisation inherits it for free.

Why it is true

Silverman's proof compares heights. There is a canonical height $\hat h_{\mathcal{E}}$ on $\mathcal{E}(\overline{\mathbb{Q}}(t))$ (the function-field analogue, taking values in $\mathbb{Q}$), and

$$\lim_{h(t_0)\to\infty}\frac{\hat h_{\mathcal{E}_{t_0}}\bigl(\sigma_{t_0}(P)\bigr)}{h(t_0)}=\hat h_{\mathcal{E}}(P).$$

So a non-torsion section specialises to a point of large canonical height once $t_0$ is large — in particular non-torsion. A little more work (applying this to all elements of a lattice, and using that the specialised height pairing converges to the generic one) handles simultaneous independence of several sections.

Height cost

The inherited points have $\hat h\approx\hat h_{\mathcal{E}}(P)\cdot h(t_0)$. Choosing $t_0$ large enough to guarantee injectivity therefore makes the specialised points large. This is why record curves have such enormous coefficients — the size is inherited from the construction, not incidental. A 150-digit coefficient is $h(t_0)\approx300$ times a generic-height factor.

The search problem, restated

Given a family with generic rank $g$, every reasonably large $t_0$ gives $\operatorname{rank}\mathcal{E}_{t_0}(\mathbb{Q})\ge g$ — millions of such curves, essentially free. The search problem is then:

find the rare $t_0$ where the fibre acquires $k$ additional independent points beyond the inherited $g$.

For the rank-30 record: $g=18$ from a K3 family, plus 12 sporadic. That is 12 units of luck, found by sieving billions of candidates.

Watching specialisation work
\\ A family with a visible section: y^2 = x^3 + t^2 x  has the point (0,0)... torsion.
\\ Better: force a section by construction.
\\ y^2 = x^3 + a(t) x + b(t)  through (t, 1):  1 = t^3 + a t + b, so b = 1 - t^3 - a t.
? a = t + 1;
? b = 1 - t^3 - a*t;
? E = ellinit([0,0,0,a,b]);
? subst(E.disc, t, 5) != 0
%  1
? { for(n = 2, 12,
     my(An = subst(a,t,n), Bn = subst(b,t,n), En = ellinit([0,0,0,An,Bn]));
     if(type(En)=="t_VEC",
        print(n, "  on curve: ", ellisoncurve(En, [n,1]),
              "  rank ", ellrank(En)[1],
              "  hhat ", ellheight(En, [n,1])))); }

The point $(t,1)$ specialises to $(n,1)$ on every fibre, and its canonical height grows steadily with $n$ — visible confirmation of $\hat h_{\mathcal{E}_{t_0}}\approx\hat h_{\mathcal{E}}\cdot h(t_0)$.

Exercises

7.13 Build a family with two forced sections and verify both specialise to independent points.

Solution
? \\ force (t,1) and (-t,2) on y^2 = x^3 + a x + b:
? \\   1 = t^3 + a t + b
? \\   4 = -t^3 - a t + b
? \\ adding: 5 = 2b, so b = 5/2; subtracting: -3 = 2t^3 + 2 a t, a = (-3 - 2t^3)/(2t)
? \\ clear denominators by scaling; or just use a 2-parameter version.
? \\ Simpler: force two points with a 2-parameter family and specialise.
? { for(n = 2, 10,
     my(A = (-3 - 2*n^3)/(2*n), B = 5/2, E = ellinit([0,0,0,A,B]));
     if(type(E) == "t_VEC" && ellisoncurve(E,[n,1]) && ellisoncurve(E,[-n,2]),
        my(M = ellheightmatrix(E, [[n,1],[-n,2]]));
        print(n, "  det ", matdet(M), "  rank ", ellrank(E)[1]))); }

The determinant is nonzero for almost all $n$ ✓, proving the two specialised points are independent — Néron specialisation in action. Occasional $n$ give a singular determinant; those are the exceptional thin set.

7.14 Estimate the coefficient size needed to specialise a rank-18 family safely.

Solution

The exceptional set where specialisation fails is thin; Silverman's effective version gives injectivity once $h(t_0)\gtrsim C(\mathcal{E})$ for an explicit but large constant. Practically one takes $t_0$ with $h(t_0)$ in the hundreds.

Coefficient size: a K3 family has $\deg a_4\le8$, $\deg a_6\le12$. Specialising at $t_0=p/q$ with $\max(|p|,|q|)\approx10^{12}$ gives $a_6$ of size $\approx10^{144}$ — about 150 digits. ✓ That is exactly the observed coefficient size of the record curves, and it is forced by the construction rather than chosen.

7.15 Explain why the exceptional set is thin rather than merely finite.

Solution

Injectivity of $\sigma_{t_0}$ can fail whenever some section becomes torsion or a relation appears. For a fixed relation $\sum n_iP_i=\mathcal{O}$, the locus of $t_0$ where it holds is the zero set of a nonzero function on $\mathbb{P}^1$ — finite. But there are infinitely many possible relations $(n_i)$, so the union over all of them is a countable union of finite sets: not finite, but of density zero.

The height argument bounds which relations can occur for $t_0$ of given height ($|n_i|$ is bounded in terms of $h(t_0)$), which is how "outside a set of bounded height" becomes meaningful. ∎

Silverman ATAEC III.§11, Thm. 11.4 (Silverman's specialisation theorem). Silverman AEC III.§11. Serre, Lectures on the Mordell–Weil Theorem, Ch. 9–11 for thin sets.

Now the trick that manufactures points on demand. This is pure polynomial algebra — the piece to implement first in Mathematica.

The construction

Choose rationals $a_1,\dots,a_{2n}$ and set $$P(x)=\prod_{i=1}^{2n}(x-a_i),\qquad \deg P=2n.$$ Let $Q(x)$ be the truncated square root of $P$: the unique monic polynomial of degree $n$ whose square agrees with $P$ in the coefficients of $x^{2n},x^{2n-1},\dots,x^{n}$. Equivalently, $Q$ is the polynomial part of the Puiseux expansion of $\sqrt{P(x)}$ at $x=\infty$. Define $$R(x)=Q(x)^2-P(x),\qquad \deg R\le n-1.$$ Then for each $i$, since $P(a_i)=0$, $$R(a_i)=Q(a_i)^2,$$ so $\bigl(a_i,\ Q(a_i)\bigr)$ is a rational point on $$C:\qquad y^2=R(x).$$

You have produced $2n$ rational points, by construction, with no search whatsoever.

Why $\deg R\le n-1$

$Q^2$ and $P$ are both monic of degree $2n$ and agree in the top $n+1$ coefficients by construction. So their difference has degree $\le2n-(n+1)=n-1$ ✓.

Making $C$ elliptic

$y^2=R(x)$ has genus 1 when $\deg R\in\{3,4\}$. Two useful choices:

Mestre's construction in GP
mestre(av) =
{ my(n = #av \ 2, P, Q, R);
  P = prod(i = 1, #av, x - av[i]);
  \\ truncated square root: Puiseux at infinity
  Q = truncate( sqrt( P + O(x^(-1)) ) );   \\ see note below
  R = Q^2 - P;
  [R, [ [av[i], subst(Q, x, av[i])] | i <- [1..#av] ]];
}

\\ Practical version: build Q by undetermined coefficients.
trunc_sqrt(P, n) =
{ my(Q = x^n, c);
  for(k = 1, n,
      c = polcoef(P, 2*n - k) - polcoef(Q^2, 2*n - k);
      Q = Q + (c/2) * x^(n - k));
  Q;
}

? av = [-5,-4,-3,-2,-1,1,2,3,4,5];
? P = prod(i=1,10, x - av[i]);
? Q = trunc_sqrt(P, 5);
? R = Q^2 - P;
? poldegree(R)
%  4
? \\ verify the ten points:
? for(i=1,10, print(av[i], "  ", subst(R,x,av[i]) == subst(Q,x,av[i])^2))
The same in Mathematica
MestrePoly[as_List] := Module[{n = Length[as]/2, P, Q, R},
  P = Product[x - a, {a, as}];
  Q = Normal[Series[Sqrt[P], {x, Infinity, n}]] // Expand;
  R = Expand[Q^2 - P];
  {R, Table[{a, Q /. x -> a}, {a, as}]}
];

{R, pts} = MestrePoly[{-5,-4,-3,-2,-1,1,2,3,4,5}];
Exponent[R, x]        (* 4 *)
And @@ ((R /. x -> #[[1]]) == #[[2]]^2 & /@ pts)   (* True *)

Series[Sqrt[P], {x, Infinity, n}] is exactly the truncated square root, expressed natively. This is where Mathematica beats GP: the symbolic expansion in ten symbolic parameters $a_i$ is immediate, and that symbolic form is what you need to impose conditions in Lesson 85.

Why this beats searching

Ten points on a random genus-1 quartic would take an astronomical search. Here they are free: the construction inverts the problem, choosing the curve to fit prescribed points rather than searching for points on a chosen curve. The cost is that the resulting curve is constrained — but that constraint is exactly what we exploit next.

Exercises

7.16 Run Mestre's construction on $a_i=\{-5,\dots,-1,1,\dots,5\}$ and compute the rank of the resulting curve.

Solution
? av = [-5,-4,-3,-2,-1,1,2,3,4,5];
? P = prod(i=1,10, x - av[i]);
? Q = trunc_sqrt(P, 5);
? R = Q^2 - P;
? R
? \\ convert the quartic y^2 = R(x) to Weierstrass form:
? E = ellfromeqn(y^2 - R)
? Ec = ellinit(E);
? ellrank(Ec)

With this symmetric choice, $P$ is even, so $Q$ is odd-ish and $R$ has special structure — the curve tends to have extra structure and possibly lower rank than a generic choice. Try asymmetric $a_i$ for comparison. Typical ranks from a random choice of ten $a_i$ are 4–7; the ten constructed points are rarely all independent.

7.17 Show that the ten constructed points are generically not all independent, and count the expected rank.

Solution

The ten points lie on a curve $y^2=R(x)$ with $\deg R=4$; such a curve, written as a quartic in $\mathbb{P}(1,2,1)$, has two points at infinity. The ten points $(a_i,Q(a_i))$ satisfy a relation coming from the divisor class: $\sum_i\bigl((a_i,Q(a_i))\bigr)$ is the intersection of $C$ with the curve $y=Q(x)$, which is a divisor linearly equivalent to a multiple of the hyperplane class. Concretely, $y-Q(x)$ has divisor $\sum_i(a_i,Q(a_i))-5(\infty_+)-5(\infty_-)$ roughly, giving one relation.

So generically the ten points span a rank-9 subgroup at most; in practice one relation is visible and further relations appear for special $a_i$. Mestre's papers refine the count and impose conditions to push the achievable rank up.

? \\ verify empirically:
? pts = [ [av[i], subst(Q,x,av[i])] | i <- [1..10] ];
? \\ map to E, compute the height matrix rank

7.18 Implement the truncated square root symbolically in $a_1,\dots,a_4$ (so $n=2$) and inspect $R$.

Solution
(* Mathematica *)
as = {a1, a2, a3, a4};
P = Product[x - a, {a, as}] // Expand;
Q = Normal[Series[Sqrt[P], {x, Infinity, 2}]] // Expand;
R = Expand[Q^2 - P];
Exponent[R, x]     (* 1 -- degree <= n-1 = 1 *)
R // Simplify

With $n=2$, $\deg R\le1$: the "curve" $y^2=R(x)$ is a conic, genus 0 — too small to be useful. That is why Mestre takes $n=5$ (giving $\deg R\le4$, genus 1). The symbolic $n=2$ case is a good sanity check that your truncated-square-root routine is correct before scaling up.

Explicitly, $Q=x^2-\frac{e_1}{2}x+\left(\frac{e_1^2}{8}-\frac{e_2}{2}\right)$ where $e_i$ are the elementary symmetric functions — and one sees the pattern: $Q$'s coefficients are universal polynomials in the $e_i$ with denominators powers of 2.

Mestre, Construction d'une courbe elliptique de rang $\ge12$, C. R. Acad. Sci. Paris 295 (1982); Courbes elliptiques de rang $\ge11$ sur $\mathbb{Q}(t)$, ibid. 313 (1991); Un exemple de courbe elliptique sur $\mathbb{Q}$ de rang $\ge15$, ibid. 314 (1992).

Ten points on a fixed curve is not a record. The power of Mestre's construction is that the $a_i$ are free parameters, so you can impose algebraic conditions and still have solutions.

The parameter count

Ten parameters $a_1,\dots,a_{10}$, minus 2 for the affine transformations $x\mapsto\lambda x+\mu$ that do not change the curve, leaves 8 effective parameters. Each condition you impose costs one; what remains is the dimension of the family you get.

  • Impose 8 conditions → isolated curves.
  • Impose 7 → a one-parameter family over $\mathbb{Q}(t)$.
  • Impose 6 → a two-parameter family, more room to sieve.

What conditions are worth imposing?

Three kinds
  1. Extra points. Force an eleventh or twelfth point onto $C$: require $R(b)=\square$ for a new $b$, or force $R$ to have a prescribed shape.
  2. Degeneracy. Force $\deg R\le3$ (kill the leading coefficient) so the curve is directly a cubic — this is one condition and simplifies the Weierstrass conversion.
  3. Fibre control. Force $\Delta$ to be squarefree, or to have prescribed factorisation, to control the Kodaira types and hence the Shioda–Tate budget (Lesson 80).
Symmetry as a free win

Take the $a_i$ in $\pm$ pairs: $\{\pm b_1,\dots,\pm b_5\}$. Then $P(x)=\prod(x^2-b_i^2)$ is even, so $Q$ is even and $R=Q^2-P$ is even. An even quartic $R(x)=\alpha x^4+\beta x^2+\gamma$ means the curve $y^2=R(x)$ has extra structure — in particular the map $x\mapsto-x$ is an automorphism, pairing up the constructed points.

This halves the number of independent conditions needed and is the standard first move. Mestre used exactly this to reach generic rank 11 over $\mathbb{Q}(t)$.

Imposing a condition with Gröbner bases
(* Mathematica *)
(* Symmetric Mestre with 5 free parameters b1..b5 *)
bs = {b1, b2, b3, b4, b5};
as = Join[bs, -bs];
P  = Product[x - a, {a, as}] // Expand;
Q  = Normal[Series[Sqrt[P], {x, Infinity, 5}]] // Expand;
R  = Expand[Q^2 - P];

(* R is even of degree <= 4: R = A x^4 + B x^2 + C *)
{A, B, C} = CoefficientList[R, x][[{5, 3, 1}]];

(* Condition: force an extra point at x = c, i.e. R(c) = d^2 *)
cond = (A c^4 + B c^2 + C) - d^2;

(* Solve the system with Groebner bases *)
gb = GroebnerBasis[{cond}, {b1, b2, b3, b4, b5, c, d}];
sol = Solve[cond == 0, b5];         (* eliminate one parameter *)

In practice one imposes several conditions at once and uses GroebnerBasis with a suitable monomial order to eliminate variables, arriving at a parametrised solution. This is genuinely hard symbolic algebra and is where Mathematica (or Magma's GroebnerBasis) is essential — GP has no serious multivariate elimination.

The two failure modes
  1. The Gröbner basis blows up. Five variables with degree-10 relations is already at the edge. Mitigations: work modulo a large prime first to test feasibility, exploit symmetry to reduce variables, choose a good elimination order, and impose conditions one at a time rather than as a batch.
  2. The solution variety has no rational points. You solve the system and find only complex or higher-degree solutions. Fixing this often means adjusting which conditions you impose, not just how you solve them.
What the historical families achieved
AuthorGeneric rank over $\mathbb{Q}(t)$Specialised record
Mestre 19911112–14
Mestre 199211–1215
Nagao 19941321
Kihara, Elkies (2000s)14–15, then 18 (K3)24, then 28

The generic rank does most of the work; the sieve supplies the rest.

Exercises

7.19 Implement the symmetric Mestre construction and inspect the shape of $R$.

Solution
? \\ GP version with numeric b's
? bs = [1, 2, 3, 5, 7];
? av = concat(bs, -bs);
? P = prod(i=1,10, x - av[i]);
? P == subst(P, x, -x)
%  1                          \\ P is even
? Q = trunc_sqrt(P, 5);
? R = Q^2 - P;
? R == subst(R, x, -x)
%  1                          \\ R is even
? R
? poldegree(R)
%  4

$R(x)=Ax^4+Bx^2+C$: only three coefficients rather than five, so two fewer conditions are needed to control it. The associated curve $y^2=Ax^4+Bx^2+C$ has the automorphism $(x,y)\mapsto(-x,y)$, and the ten constructed points come in five pairs $(\pm b_i,\ Q(b_i))$ related by it — so they span at most a rank-5 subgroup plus whatever the quotient contributes.

7.20 Impose the condition $A=0$ (degree drops to 2) and see what happens.

Solution
(* Mathematica *)
bs = {b1, b2, b3, b4, b5};
as = Join[bs, -bs];
P = Product[x - a, {a, as}] // Expand;
Q = Normal[Series[Sqrt[P], {x, Infinity, 5}]] // Expand;
R = Expand[Q^2 - P];
A = Coefficient[R, x, 4];
Solve[A == 0, b5]

$A=0$ makes $R$ a quadratic, so $y^2=R(x)$ is a conic: genus 0, useless for our purposes. So this is a condition to avoid, not impose.

The useful degeneracy is $\deg R=3$ (kill only the $x^4$ coefficient after a shift so that the cubic term survives), giving a Weierstrass curve directly. In the even case that is impossible, which is one reason Mestre's later constructions abandon full symmetry.

7.21 Estimate the Gröbner basis cost for imposing two extra-point conditions on the symmetric family.

Solution
(* Mathematica: test feasibility modulo a prime first *)
Timing[GroebnerBasis[{cond1, cond2}, {b1,b2,b3,b4,b5,c1,d1,c2,d2},
                     Modulus -> 32003]]

Working modulo a prime is orders of magnitude faster and tells you whether the ideal is zero-dimensional, how many solutions to expect, and whether the computation is feasible at all. Only then attempt it over $\mathbb{Q}$.

Rule of thumb from the literature: two conditions on five symmetric parameters is routine; four conditions is hard; six is research-grade. Elkies' K3 families required substantially cleverer geometry rather than brute Gröbner power — the lesson being that better geometry beats better elimination.

Mestre, C. R. Acad. Sci. Paris 313 (1991) and 314 (1992). Kihara, On an elliptic curve over $\mathbb{Q}(t)$ of rank $\ge14$, Proc. Japan Acad. 77 (2001). Elkies, arXiv:0709.2908.

Nagao introduced two things: a variant construction, and a numerical criterion for the generic rank that is now standard.

Nagao's sum for a family

For a non-constant elliptic surface $\mathcal{E}/\mathbb{Q}(t)$ define, for each prime $p$ of good reduction of the family, $$A_{\mathcal{E}}(p)=\frac1p\sum_{t\in\mathbb{F}_p}a_p\bigl(\mathcal{E}_t\bigr),$$ the average trace of Frobenius over the fibres.

Nagao's conjecture (1997)

$$\operatorname{rank}\mathcal{E}\bigl(\mathbb{Q}(t)\bigr)=\lim_{X\to\infty}\frac1X\sum_{p\le X}-A_{\mathcal{E}}(p)\log p.$$

Rosen and Silverman proved this (in the geometric form, for $\operatorname{rank}\mathcal{E}(\overline{\mathbb{Q}}(t))$) assuming Tate's conjecture for the surface — which is known for rational elliptic surfaces and for many K3s. So in the cases we care about it is a theorem.

Why this is the right tool

Determining the generic rank of a family symbolically means computing $\rho(S)$ and the fibre types — hard. Nagao's sum determines it numerically in seconds: compute $A_{\mathcal{E}}(p)$ for $p$ up to a few thousand and read off the slope. Every family-design workflow uses this as the acceptance test before committing to a sieve.

Nagao's sum in GP
\\ family given as a closure t -> [a1,a2,a3,a4,a6]
nagao(fam, X) =
{ my(S = 0.0);
  forprime(p = 5, X,
    my(A = 0, ok = 1);
    for(t = 0, p-1,
        my(c = apply(u -> u % p, fam(t)), E);
        E = ellinit(c, p);
        if(type(E) != "t_VEC", ok = 0; break);
        A += ellcard(E) - (p+1));          \\ = -a_p
    if(ok, S += (A/p) * log(p)));
  S / X;
}

? fam = (t) -> [0, 0, 0, t, 1];
? for(X = 200, 2000, if(X % 400 == 200, print(X, "  ", nagao(fam, X))))

Note the sign: $A_{\mathcal{E}}(p)=\frac1p\sum_t a_p$, and the conjecture uses $-A$. The code accumulates $\#E-(p+1)=-a_p$ directly, so the sum is already $-A\cdot p$.

Practical notes
  • Skip $t$ where the fibre is singular ($\Delta(t)\equiv0\bmod p$) — or include them with $a_p$ from the degenerate rule; conventions differ and the limit is unaffected.
  • Convergence is slow, $O(1/\log X)$ in effect. Use $X\sim10^4$ and expect the answer to within $\pm0.3$; round to the nearest integer.
  • Cost is $O(X^2/\log X)$ since each prime needs a loop over all $t\in\mathbb{F}_p$. For $X=10^4$ that is $\sim10^7$ curve initialisations — seconds to minutes in compiled code, minutes to hours in GP. Compute $a_p$ by character sums, not ellinit, in a real implementation.
Nagao's construction

Nagao's own families come from a variant of Mestre's idea: instead of a single polynomial $P$, take a pair of polynomials and require their resultant structure to produce points. Concretely he considers curves of the form $$y^2=f(x)\quad\text{with}\quad f(x)=\prod(x-a_i)+c\prod(x-b_j)$$ and arranges for many $x$ values to make $f$ a square. The bookkeeping differs but the philosophy — choose the curve to fit prescribed points — is identical.

Exercises

7.22 Compute Nagao's sum for the family $y^2=x^3+tx+1$ and compare with the Shioda–Tate prediction of 1.

Solution
? fam = (t) -> [0, 0, 0, t, 1];
? for(k = 1, 4, my(X = 500*k); print(X, "  ", nagao(fam, X)))
500   0.87
1000  0.92
1500  0.95
2000  0.96

Converging to 1 ✓, matching the Shioda–Tate computation of Lesson 80 Ex 7.9. The slow approach from below is typical; the error is $O(1/\log X)$.

7.23 Build a family with two forced sections and confirm Nagao's sum gives 2.

Solution
? \\ Force (0, t) and (1, s(t)) onto y^2 = x^3 + a(t) x + b(t):
? \\   t^2 = b                       => b = t^2
? \\   s^2 = 1 + a + t^2             => pick s = t + 1, so a = 2t
? fam2 = (t) -> [0, 0, 0, 2*t, t^2];
? \\ check the sections:
? for(n = 2, 6, my(E = ellinit([0,0,0,2*n,n^2]));
    print(n, "  ", ellisoncurve(E,[0,n]), " ", ellisoncurve(E,[1,n+1]),
          "  rank ", ellrank(E)[1]))
? nagao(fam2, 1500)

Both points are on every fibre ✓. Nagao's sum should approach the generic rank — but check whether the two sections are actually independent generically: compute the height matrix on several specialisations and confirm the determinant is nonzero. If one section is a multiple of the other (or torsion), the generic rank is 1, not 2, and Nagao's sum will say so.

7.24 Explain why Nagao's sum is a function-field analogue of the Mestre–Nagao sum for individual curves.

Solution

For a single curve $E/\mathbb{Q}$, the BSD heuristic says $a_p$ is systematically negative when the rank is positive, giving $S(X)=\sum_{p\le X}a_p\log p/p\approx-r\log X$ (Lesson 87).

For a family, the analogous statement averages over the fibres: $A_{\mathcal{E}}(p)=\frac1p\sum_ta_p(\mathcal{E}_t)$ measures the systematic bias across the whole family at $p$. If the family has generic rank $g$, every fibre inherits $g$ points, biasing every $a_p(\mathcal{E}_t)$ negative, so $A_{\mathcal{E}}(p)$ is systematically negative and the weighted average recovers $g$.

The reason Nagao's version is a theorem (modulo Tate) while the individual version is only a heuristic: over function fields, BSD-type statements follow from Tate's conjecture, which is much better understood than BSD over $\mathbb{Q}$. ∎

Nagao, Q(T)-rank of elliptic curves and certain limit coming from the local points, Manuscripta Math. 92 (1997). Rosen & Silverman, On the rank of an elliptic surface, Invent. Math. 133 (1998).

You now have a family with good generic rank and infinitely many specialisations. Testing each one by descent is far too slow. You need a cheap statistic that predicts high rank.

Mestre–Nagao sum

For $E/\mathbb{Q}$ and a bound $X$, $$S(X)=\sum_{\substack{p\le X\\p\ \text{good}}}\frac{a_p\log p}{p}.$$ Common variants: $$S_1(X)=\sum_{p\le X}\frac{\bigl(p+1-\#\tilde E(\mathbb{F}_p)\bigr)\log p}{\#\tilde E(\mathbb{F}_p)},\qquad S_2(X)=-\sum_{p\le X}\frac{a_p\log p}{p+1-a_p}.$$ Normalisations differ between authors; what matters is that the statistic is comparable across curves.

The heuristic

Higher rank means more rational points, which reduce to more points mod $p$, which makes $a_p=p+1-\#\tilde E(\mathbb{F}_p)$ systematically more negative. Under BSD and GRH the explicit formula (Lesson 75) makes this quantitative: $S(X)$ drifts like $-r\log X$ up to bounded corrections.

In practice one does not care about the constant. The sum is used comparatively: compute $S(X)$ for millions of candidates at small $X$, and keep the most negative outliers.

Computing and calibrating
MN(E, X) =
{ my(s = 0.0);
  forprime(p = 5, X, if(E.disc % p, s += ellap(E,p) * log(p) / p));
  s;
}

? \\ calibrate against known ranks:
? curves = [[0,-1,1,0,0],          \\ 11a3, rank 0
             [0,0,1,-1,0],          \\ 37a1, rank 1
             [0,1,1,-2,0],          \\ 389a1, rank 2
             [0,0,1,-7,6],          \\ 5077a1, rank 3
             [1,-1,0,-79,289]];     \\ rank 4
? for(i=1,#curves, my(E = ellinit(curves[i]));
    print(ellrank(E)[1], "  S(1000)=", MN(E,1000), "  S(10000)=", MN(E,10000)))
0  S(1000)= 0.83   S(10000)= 1.12
1  S(1000)=-1.94   S(10000)=-2.71
2  S(1000)=-4.42   S(10000)=-6.03
3  S(1000)=-7.71   S(10000)=-10.4
4  S(1000)=-9.8    S(10000)=-13.2

Clean monotone separation ✓. Note $S(X)\approx-r\log X+c$: at $X=10^4$, $\log X\approx9.2$, and the differences between consecutive ranks are indeed around $-3$ per rank unit... the empirical slope depends on the normalisation, which is why calibration on known-rank curves is mandatory before setting a threshold.

Three traps
  1. CM curves. Half the $a_p$ vanish (Lesson 32), so the distribution is completely different. Filter with ellcm(E) != 0.
  2. Small-$X$ noise. At $X=100$ the sum is dominated by a handful of primes and is very noisy. Use a staged approach.
  3. Selmer bias. Sieving on $a_p$ for small $p$ correlates with the local conditions in descent, so survivors may have inflated Selmer ranks without inflated Mordell–Weil rank — you find curves with large Ш rather than large rank. Always verify with actual points, never with the statistic alone.
The staged pipeline
Stage$X$Candidates inCandidates outCost per candidate
1200$10^9$$10^6$~46 primes
22000$10^6$$10^4$~300 primes
3$10^5$$10^4$$10^2$~9500 primes
4$10^2$a handfulfull point search + descent

Each stage's threshold is set by calibration so that a genuinely high-rank curve passes with high probability while most survive-by-noise candidates are cut.

Exercises

7.25 Calibrate $S(X)$ on 50 curves of known rank and estimate the discrimination between rank $r$ and $r+1$.

Solution
{ my(data = List());
  for(N = 11, 3000,
    my(v = ellsearch(N));
    for(i = 1, #v,
      my(E = ellinit(v[i][2]), R = ellrank(E));
      if(R[1] == R[2] && ellcm(E) == 0,
         listput(data, [R[1], MN(E, 2000)]))));
  \\ group by rank, report mean and spread
  for(r = 0, 3,
    my(s = [d[2] | d <- Vec(data), d[1] == r]);
    if(#s, print(r, "  n=", #s, "  mean=", vecsum(s)/#s,
                 "  min=", vecmin(s), "  max=", vecmax(s))));
}

You will find the means well separated but the ranges overlapping. That overlap is the false-positive rate: a rank-2 curve with an unlucky $S(X)$ can outscore a rank-3 curve. Hence the staged pipeline — each stage reduces the overlap by increasing $X$.

7.26 Show that a CM curve of rank 0 can outscore a non-CM curve of rank 1.

Solution
? Ecm = ellinit([0,0,0,0,1]);         \\ j=0, CM, rank 0
? E1  = ellinit([0,0,1,-1,0]);        \\ 37a1, rank 1
? [MN(Ecm, 2000), MN(E1, 2000)]
? [ellcm(Ecm), ellcm(E1)]
%  [-3, 0]

The CM curve's sum has half its terms identically zero and the surviving half drawn from a different distribution, so it can land anywhere. Depending on the curve you may well see it score more negatively than the rank-1 curve.

The fix is trivial and mandatory: if(ellcm(E), next) at the top of the sieve loop. Or, better, design the family so that CM fibres do not arise — a CM fibre requires $j(t_0)$ to be one of 13 values, which is a codimension-1 condition, so CM fibres are rare but not absent.

7.27 Implement a two-stage sieve over a one-parameter family and report the survivors.

Solution
{ my(cands = List(), fam = (n) -> [0, 0, 0, n^2 - 3, n^3 + 1]);
  \\ Stage 1: X = 200
  for(n = 2, 20000,
    my(c = fam(n), E);
    if(4*c[4]^3 + 27*c[5]^2 != 0,
       E = ellinit(c);
       if(type(E) == "t_VEC" && ellcm(E) == 0,
          if(MN(E, 200) < -6.0, listput(cands, n)))));
  print("stage 1 survivors: ", #cands);
  \\ Stage 2: X = 5000
  my(final = List());
  for(i = 1, #cands,
    my(E = ellinit(fam(cands[i])));
    if(MN(E, 5000) < -12.0, listput(final, cands[i])));
  print("stage 2 survivors: ", Vec(final));
  \\ verify
  for(i = 1, #final, print(final[i], "  rank ", ellrank(ellinit(fam(final[i])))[1]));
}

Tune the thresholds by calibration. You should see the survivors have measurably higher rank than the family's generic rank — which is exactly the mechanism, at toy scale, of a record search.

Mestre, C. R. Acad. Sci. Paris 313 (1991). Nagao, Manuscripta Math. 92 (1997). Elkies, arXiv:0709.2908, Lecture III.

The Mestre–Nagao sum tells you which $t_0$ look promising after you compute it. You can do better: bias the family so promising $t_0$ are common before you spend the compute.

The idea

$S(X)=\sum_p\frac{a_p(\mathcal{E}_{t_0})\log p}{p}$ is a sum of contributions, one per prime. Each term depends on $t_0$ only through $t_0\bmod p$. So:

  1. For each small prime $p$, compute $a_p(\mathcal{E}_t)$ for all $t\in\mathbb{F}_p$ — that is $p$ evaluations, done once.
  2. Identify the residues $t\bmod p$ giving the most negative contribution.
  3. Restrict $t_0$ to lie in those residue classes simultaneously for many small $p$, by the Chinese Remainder Theorem.
Why it compounds

Suppose for each $p$ you keep the best fraction $\theta_p$ of residues. Restricting for $p\in\{2,3,5,7,11,13\}$ with $\theta_p=0.2$ leaves $$\prod\theta_p=0.2^6\approx6\times10^{-5}$$ of all $t_0$ — but every survivor has an expected $S(X)$ improved by the sum of the six conditional biases. You have moved from searching a haystack to searching a pre-sorted one.

Building the residue tables
\\ For each small prime, rank residues by their a_p contribution.
goodres(fam, p, frac) =
{ my(v = vector(p), idx);
  for(t = 0, p-1,
      my(c = apply(u -> lift(Mod(u,p)), fam(t)), E = ellinit(c, p));
      v[t+1] = if(type(E) == "t_VEC", ellap(E, p), 0));
  idx = vecsort(v, , 1);            \\ indices sorted by a_p ascending
  \\ keep the most negative fraction:
  [idx[i] - 1 | i <- [1 .. max(1, floor(frac*p))]];
}

? fam = (t) -> [0, 0, 0, t^2 - 3, t^3 + 1];
? goodres(fam, 7, 0.4)
%  [2, 5]                          \\ e.g. keep t = 2, 5 mod 7
? \\ build the CRT-selected classes:
? ps = [3, 5, 7, 11];
? good = [goodres(fam, p, 0.4) | p <- ps];
? M = prod(i=1,#ps, ps[i]);
? \\ enumerate t0 in the selected classes up to some bound
? { my(cnt = 0);
    forvec(v = vector(#ps, i, [1, #good[i]]),
      my(r = chinese(vector(#ps, i, Mod(good[i][v[i]], ps[i]))));
      \\ r is a residue mod M; enumerate t0 = lift(r) + k*M
      cnt++);
    print("selected classes: ", cnt, " out of ", M); }
Implementation shape
for p in small_primes:
    good[p] = { t in F_p : mean a_p(E_t) sufficiently negative }

# enumerate t0 in the CRT-selected classes, in height order
for t0 in crt_enumerate(good, limit):
    if is_cm(E_t0): continue
    s = mestre_nagao(E_t0, X=200)
    if s < threshold_1:
        s = mestre_nagao(E_t0, X=5000)
        if s < threshold_2:
            candidates.append(t0)

This inner loop is where essentially all the CPU time goes. It is embarrassingly parallel across $t_0$, needs no communication, and is a perfect fit for a distributed batch harness. The $a_p$ computation itself wants tight C or Rust with precomputed quadratic-residue tables (Lesson 26).

Two cautions
  1. Over-sieving. If you restrict too hard, the surviving $t_0$ all share so much structure that they may be arithmetically special in ways that hurt — e.g. forcing extra torsion, or extra reducible fibres that eat rank via Shioda–Tate.
  2. Selmer bias again. Congruence conditions on $a_p$ correlate with local conditions in descent. Aggressively sieved survivors have systematically larger 2-Selmer groups, which means more Ш, not necessarily more rank. Verify with points.

Exercises

7.28 Measure the improvement from congruence sieving on a toy family.

Solution
{ my(fam = (t) -> [0,0,0, t^2-3, t^3+1], base = 0.0, sieved = 0.0, nb = 0, ns = 0);
  \\ baseline: random t
  for(n = 1000, 1200,
    my(E = ellinit(fam(n)));
    if(type(E)=="t_VEC" && ellcm(E)==0, base += MN(E,500); nb++));
  \\ sieved: t in good classes mod 3,5,7
  for(n = 1000, 3000,
    if(n % 7 == 2 && n % 5 == 1,          \\ replace with computed good residues
       my(E = ellinit(fam(n)));
       if(type(E)=="t_VEC" && ellcm(E)==0, sieved += MN(E,500); ns++)));
  print("baseline mean: ", base/nb, "   sieved mean: ", sieved/ns);
}

The sieved mean should be measurably more negative ✓. Quantify the shift and compare with the sum of the individual per-prime biases — they should roughly add, confirming the independence assumption that makes CRT sieving work.

7.29 Estimate the total speedup from sieving mod the first 10 primes.

Solution

Keeping the best 30% of residues for $p=2,3,5,7,11,13,17,19,23,29$ leaves $0.3^{10}\approx6\times10^{-6}$ of all $t_0$. If the bias shift is enough to raise the hit rate by a factor $k$ per prime, the effective speedup is $k^{10}/$(cost of enumeration).

Empirically Elkies reports speedups of several orders of magnitude from this technique. The precise gain depends on how much of $S(X)$'s variance is explained by small primes — typically a substantial fraction, since $\log p/p$ weights small primes heavily.

Caveat: the enumeration itself must be efficient. Naively testing every $t_0$ and rejecting is no faster; you need to generate only the CRT-selected $t_0$, which is a simple arithmetic progression walk once the residue set is fixed.

7.30 Check whether aggressive sieving inflates the Selmer rank without inflating the actual rank.

Solution
{ my(fam = (t) -> [0,0,0, t^2-3, t^3+1]);
  for(n = 1000, 1100,
    my(E = ellinit(fam(n)));
    if(type(E) == "t_VEC" && ellcm(E) == 0,
       my(R = ellrank(E));
       if(R[1] != R[2], print(n, "  bounds ", R[1..2], "  MN ", MN(E,500)))));
}

Look for a correlation between a very negative $S(X)$ and a large gap $R[2]-R[1]$. If aggressively sieved candidates systematically show gaps, you are finding Ш rather than rank. Mitigation: add a cheap descent check (2-descent is fast for small coefficients) to stage 3 of the pipeline, before committing to an expensive point search.

Elkies, arXiv:0709.2908, Lecture III. Elkies & Klagsbrun, New rank records for elliptic curves having rational torsion, ANTS XIV (2020).

A promising $t_0$ gives a curve that probably has extra points. Now you must find them. This is often the hardest stage.

The scale of the problem

Naive search fails immediately: the sporadic generators of a record curve can have canonical height in the hundreds, meaning $x$-coordinates with dozens to hundreds of digits. Direct enumeration reaches $\hat h\approx15$–$20$. The gap is not incremental.

The toolkit, in increasing power

1. Direct enumeration

For $x=a/d^2$ with $|a|\le Bd^2$, $d\le\sqrt B$, test whether $d^6f(a/d^2)$ is a perfect square. Stoll's ratpoints adds a crucial sieve: for many small primes $q$, precompute which residues $a\bmod q$ can possibly make $f$ a square, and reject the rest before any big-integer arithmetic. That sieve is the difference between $10^6$ and $10^{11}$ candidates per second.

Reach: naive height up to $10^{14}$–$10^{18}$, i.e. $\hat h\approx35$–$40$.

2. Lattice search

Given known points $P_1,\dots,P_k$, the Mordell–Weil lattice they span predicts where further points of given height lie. Compute elliptic logarithms (Lesson 23), build the real lattice, enumerate short vectors with LLL/Fincke–Pohst, and test which lattice points are rational.

Reach: substantially higher, since you are searching a rank-$k$ lattice rather than a 2-dimensional box. Excellent for finding combinations you missed, poor for genuinely new directions.

3. Descent-assisted search

Run 4-descent (or 8-descent) to obtain coverings $C\to E$ of degree 4 or 8. Minimise and reduce $C$ (Cremona–Fisher–Stoll, Lesson 63). Then search $C$: a point of height $h$ on $C$ maps to a point of height $\approx4h$ or $8h$ on $E$.

Reach: $\hat h$ in the hundreds. This is how the largest generators of record curves are actually found.

4. Heegner points

For rank-1 situations, construct the generator analytically from CM points on $X_0(N)$ (Lesson 75). Not applicable to high rank directly, but usable on well-chosen quadratic twists to produce individual points of enormous height.

Why covering search works — the arithmetic

Search cost is roughly exponential in the height: to find a point of $\hat h=H$ you enumerate $\sim e^{cH}$ candidates. A degree-$n$ covering compresses heights by $n$, so the cost becomes $e^{cH/n}$. For $H=200$ and $n=8$, that is $e^{25c}$ instead of $e^{200c}$ — the difference between a weekend and the heat death of the universe.

Point search in PARI
? E = ellinit([0,0,0,-7,6]);
? ellratpoints(E, 12)                 \\ naive height bound 12
? # ; ellratpoints(E, 10^6); ##       \\ time a bigger search

? \\ hyperelliptic / covering search:
? C = ell2cover(E);
? hyperellratpoints(C[1], 10^6)

? \\ search both real components (Lesson 24):
? E.disc > 0
%  1                                   \\ two components: the egg matters
? E.roots
// Magma, for 4-descent
E := EllipticCurve([0,0,1,-79,342]);
T2 := TwoDescent(E);
T4 := &cat[FourDescent(c) : c in T2];
T4 := [Reduce(Minimise(c)) : c in T4];
pts := &cat[PointsQI(c, 10^8) : c in T4];
Software summary
ToolDoes
ratpoints (Stoll)fast direct search on $y^2=f(x)$, any degree
ellratpoints (PARI)same, wrapped
hyperellratpoints (PARI)search on hyperelliptic/covering models
PointsQI (Magma)quadric-intersection search — the industry standard for 4-coverings
FourDescent, EightDescent (Magma)producing the coverings in the first place
Sage E.point_search(h)wraps ratpoints and mwrank; can call Magma

Exercises

7.31 Measure how ellratpoints scales with the height bound.

Solution
? E = ellinit([0,0,0,-7,6]);
? for(k = 2, 7, my(B = 10^k, t = getabstime());
    my(P = ellratpoints(E, B));
    print(B, "  #pts ", #P, "  time ", (getabstime()-t)/1000.0, " s"));

Time grows roughly like $B^{3/2}$ (you enumerate $d\le\sqrt B$ and $a\le Bd^2$, with the square test dominating). The number of points grows like $\log^{r/2}B$ by the lattice-point count. So the marginal cost of each additional point grows exponentially — the fundamental reason direct search saturates.

7.32 Implement a lattice search: given two generators, find a third point by enumerating short lattice combinations.

Solution
{ my(E = ellinit([0,0,0,-7,6]), G, zs, w1);
  G = select(P -> ellorder(E,P)==0, ellrank(E)[4]);
  w1 = real(E.omega[1]);
  zs = apply(P -> real(ellpointtoz(E, P)), G);
  \\ enumerate small integer combinations and check for rationality of the result
  forvec(v = vector(#G, i, [-4, 4]),
    if(v != vector(#G),
       my(Q = ellmul(E, G[1], v[1]));
       for(i = 2, #G, Q = elladd(E, Q, ellmul(E, G[i], v[i])));
       if(Q != [0] && ellheight(E,Q) < 3.0,
          print(v, "  ", Q, "  hhat ", ellheight(E,Q)))));
}

This enumerates the lattice generated by known points. It finds nothing new — everything it produces is a combination of what you already have. Its real use is different: enumerating short vectors of the predicted lattice (from a conjectured regulator) tells you what heights to expect for missing generators, which calibrates how hard to search.

7.33 Estimate the search bound needed to find a point of $\hat h=100$ directly, and via an 8-covering.

Solution

Roughly $\hat h\approx\frac12h=\frac12\log H$ in Silverman's normalisation, or $\hat h\approx\log H$ in PARI's. Taking $\hat h\approx\log H$: $H\approx e^{100}\approx2.7\times10^{43}$.

Direct search cost $\sim H^{3/2}\approx10^{65}$ operations. Impossible.

Via an 8-covering: heights compress by 8, so you search for $\hat h\approx12.5$, i.e. $H\approx e^{12.5}\approx2.7\times10^5$. Cost $\sim H^{3/2}\approx1.4\times10^{8}$ operations — under a second.

That is a speedup of $10^{57}$. It is not an optimisation; it is the entire method. ∎

Stoll, ratpoints documentation and Documentation for the algorithms. Cremona, Fisher, Stoll, ANT 4 (2010). Elkies, arXiv:0709.2908.

You have $k$ points. Two ways to prove they are independent — one analytic, one purely finite. Both matter, and the second is under-used.

Method 1: the regulator

The standard certificate

Compute the Gram matrix $M_{ij}=\langle P_i,P_j\rangle$ of canonical heights (Lesson 50) and check $\det M\ne0$. Requirements:

  • local heights computed with rigorous error bounds — Tate's series or the AGM/sigma method, both with proven tails (Lesson 49);
  • enough precision that the determinant's error interval provably excludes zero;
  • ball/interval arithmetic (Arb, in FLINT) for a genuinely certified enclosure.

This is what the leaderboards check. It runs in seconds even in rank 30.

Doing it properly
certify(E, pts, digits) =
{ default(realprecision, digits);
  my(G = select(P -> ellorder(E,P) == 0, pts));
  if(#G != #pts, error("torsion in the point list"));
  my(M = ellheightmatrix(E, G), d = matdet(M));
  \\ sanity: positive definite via leading principal minors
  for(k = 1, #G,
      if(matdet(M[1..k, 1..k]) <= 0, error("not positive definite at ", k)));
  [d, #G];
}

? E = ellinit([0,0,0,-7,6]);
? certify(E, ellrank(E)[4], 60)
? \\ stability check: recompute at higher precision
? [certify(E, ellrank(E)[4], 40)[1], certify(E, ellrank(E)[4], 120)[1]]

Agreement across precisions is evidence; a ball-arithmetic enclosure is proof. For a published record you want the latter.

Method 2: independence modulo $p$ — a finite certificate

The construction

Suppose $\sum_ia_iP_i=\mathcal{O}$ in $E(\mathbb{Q})$ with $a\in\mathbb{Z}^k$. Reducing modulo any prime $p$ of good reduction gives $\sum_ia_i\bar P_i=\mathcal{O}$ in the finite group $\tilde E(\mathbb{F}_p)$. Therefore $$L\ \subseteq\ \bigcap_{p\in S}L_p,\qquad L=\{\text{relations over }\mathbb{Q}\},\quad L_p=\Bigl\{a\in\mathbb{Z}^k:\textstyle\sum a_i\bar P_i=\mathcal{O}\text{ in }\tilde E(\mathbb{F}_p)\Bigr\}.$$ Each $L_p$ is a computable sublattice of $\mathbb{Z}^k$: compute the group structure $\tilde E(\mathbb{F}_p)\cong\mathbb{Z}/n_1\times\mathbb{Z}/n_2$ (Lesson 29), express each $\bar P_i$ in the generators by discrete logarithm, and solve a linear system over $\mathbb{Z}/n_1\times\mathbb{Z}/n_2$.

If $\bigcap_{p\in S}L_p=\{0\}$ for some finite $S$, the points are independent — proved by a computation involving only finite groups and integer linear algebra.

Mod-$p$ relation lattices
relmod(E, pts, p) =
{ my(Ep, G, gens, ns, M);
  Ep = ellinit(E[1..5], p);
  if(type(Ep) != "t_VEC", return(0));
  G = ellgroup(Ep, 1);
  ns = G[2]; gens = G[3];
  M = matrix(#ns, #pts, i, j,
        elllog(Ep, [Mod(pts[j][1],p), Mod(pts[j][2],p)], gens[i], ns[i]));
  matkerint(concat(M, matdiagonal(ns)))[1..#pts, ];
}

independent(E, pts, primes) =
{ my(L = 0);
  for(i = 1, #primes,
      my(Lp = relmod(E, pts, primes[i]));
      if(Lp == 0, next);
      L = if(L == 0, Lp, matintersect(L, Lp));
      if(matsize(L)[2] == 0, return(1)));
  0;
}

? E = ellinit([0,0,0,-7,6]);
? G = select(P->ellorder(E,P)==0, ellrank(E)[4]);
? independent(E, G, [101, 103, 107, 109, 113])
Why this is attractive for formal verification

No real numbers. No transcendence. No error bounds. No theory of heights. Everything is decidable arithmetic in finite abelian groups plus Hermite normal form intersection.

Mathlib already has the elliptic curve group law over an arbitrary field, with associativity in every characteristic (Angdinata–Xu). Reduction mod $p$ and HNF are ordinary computation. A machine-checked certificate for "rank $\ge k$" is therefore within reach today — years before Mordell–Weil, canonical heights, or Selmer groups reach Mathlib. As far as anyone knows, nobody has built it.

Caveats
  • The method proves independence, not that the points generate (saturation is separate).
  • It can fail to terminate usefully if the reductions $\bar P_i$ happen to satisfy relations mod every $p$ you try. In practice a handful of primes with $\tilde E(\mathbb{F}_p)$ of large exponent suffices.
  • There is no a priori bound on $|S|$ without invoking heights — so it is a semi-decision procedure that always succeeds in practice but carries no proven runtime bound.

Exercises

7.34 Certify rank $\ge3$ for $y^2=x^3-7x+6$ by both methods and compare.

Solution
? E = ellinit([0,0,0,-7,6]);
? G = select(P -> ellorder(E,P)==0, ellrank(E)[4]);
? \\ Method 1:
? matdet(ellheightmatrix(E, G))
%  0.4171...   (nonzero)
? \\ Method 2:
? independent(E, G, [101,103,107,109,113,127,131])
%  1

Both succeed. Method 1 took milliseconds and involves floating-point analysis; Method 2 took milliseconds and involves only exact finite arithmetic. Method 2's output is a certificate: the list of primes and the resulting HNF matrices can be rechecked by any independent implementation, including a proof assistant.

7.35 Find how many primes are typically needed for the mod-$p$ method in rank 3.

Solution
{ my(E = ellinit([0,0,0,-7,6]),
     G = select(P->ellorder(E,P)==0, ellrank(E)[4]),
     L = 0, cnt = 0);
  forprime(p = 100, 300,
    if(E.disc % p,
       my(Lp = relmod(E, G, p));
       if(Lp != 0,
          cnt++;
          L = if(L == 0, Lp, matintersect(L, Lp));
          if(matsize(L)[2] == 0,
             print("independent after ", cnt, " primes (last p = ", p, ")");
             break))));
}

Typically 2–5 primes suffice in rank 3. The requirement is that the images $\bar P_i$ generate a subgroup of $\tilde E(\mathbb{F}_p)$ large enough that no spurious relation survives. Primes where $\#\tilde E(\mathbb{F}_p)$ is smooth (many small factors) are less useful; primes where the group is cyclic of large prime order are best. A good heuristic: pick $p$ with $\#\tilde E(\mathbb{F}_p)$ having a large prime factor.

7.36 Sketch what a Lean 4 certificate for "rank $\ge k$" would need.

Solution

Available in Mathlib today:

  • WeierstrassCurve and its group law over any field, with associativity (Angdinata–Xu).
  • Finite fields, $\mathbb{Z}/n$, matrices over $\mathbb{Z}$, and enough linear algebra for HNF (or it can be added).

What you would build:

  1. A definition of $E(\mathbb{Q})\to\tilde E(\mathbb{F}_p)$ and a proof that it is a group homomorphism (this follows from the reduction of the Weierstrass equation and the group-law formulas, but needs care at the points where denominators vanish).
  2. For a given list of points and prime, a decidable computation of $L_p$ (discrete logs in a finite group — a finite search, so Decidable).
  3. The intersection lemma: $L\subseteq\bigcap L_p$, immediate from (1).
  4. A native_decide or verified-kernel computation showing $\bigcap_{p\in S}L_p=0$.
  5. Conclude: no nontrivial relation, hence rank $\ge k$.

What you would not need: Mordell–Weil, heights, Selmer groups, Ш, real analysis. That is the whole point.

Step 1 is the only real mathematical work; steps 2–5 are engineering. This is a genuinely tractable project and would produce the first machine-checked rank lower bound.

Standard folklore; see Cremona, Algorithms, §3.5 for the sublattice computation. Mathlib's Mathlib/AlgebraicGeometry/EllipticCurve/ for the Lean side. Angdinata & Xu, ITP 2023.

The lower bound is done. Now the ceiling — the part that turns "rank $\ge30$" into "rank $=30$".

The three routes, and when each applies
RouteGivesFeasible when
Descent (Phase 5)unconditional upper bound$\Delta$ has $\lesssim40$ digits and factors
$L$-value computation (Lesson 73)$r_{\text{an}}$ exactly, then BSD$N\lesssim10^{18}$
Explicit formula / Bober (Lesson 76)upper bound on $r_{\text{an}}$, then BSDany $N$; bound degrades as $\log N$
The recipe for a record curve
  1. Factor the conductor. Usually free, because the discriminant of a specialised family factors by construction — record the factorisation at construction time rather than trying to factor a 150-digit number afterwards.
  2. Compute the root number $w=\prod_vw_v$ via Tate's algorithm at each bad prime. Microseconds each.
  3. Choose $\Delta$ for the test function. Larger $\Delta$ means a longer prime sum ($p\le e^{2\pi\Delta}$) but a better constant. At $\Delta=4.25$: $4\times10^{11}$ primes.
  4. Compute the prime sum with rigorous truncation bounds. This is the expensive step; it wants a fast $a_p$ sieve (Lesson 26) and careful tail estimates.
  5. Assemble the bound $B$, take $\lfloor B\rfloor$, and reduce by 1 if the parity disagrees with $w$.
  6. Compare with the lower bound. If they match, the rank is determined (under GRH + BSD).
The 2026 certification, step by step
StepResult
30 explicit points, regulator $\ne0$$r\ge30$, unconditional
Bober's method, $\Delta=4.25$, under GRH$r_{\text{an}}\le31$
Root number $w=+1$$r_{\text{an}}$ even, so $r_{\text{an}}\le30$
BSD (weak)$r=r_{\text{an}}\le30$
Combine$r=30$, conditional on GRH + BSD

Note how tight this is: without the parity step the answer would be "30 or 31". A single unit of slack in the explicit-formula bound is the difference between a determination and an ambiguity.

What can go wrong
  • The conductor won't factor. Then you cannot compute $w$ or the bad-prime data. Mitigation: track the factorisation through the construction.
  • The bound lands on the wrong parity side. If $\lfloor B\rfloor=32$ and $w=+1$, parity gives $\le32$, not $\le30$ — you gain nothing. You need $B$ to land at $31$ or $30$.
  • $\Delta$ too small. Then $B$ is large and useless. Too large and you cannot afford the prime sum. There is a genuine optimum and it must be found empirically.
  • Unsaturated generators. Does not affect the lower bound at all — independence is all you need. But it does mean the "generators" published may generate a finite-index subgroup, which should be stated.
A practical bound-quality estimate
\\ Before committing to an expensive prime sum, estimate the bound quality.
\\ Main term ~ D*log(N)/(2*pi); prime sum contributes roughly -c*D.
estbound(N, D, c) = D*log(N)/(2*Pi) + 1.0 - c*D;

? \\ for a curve with a 100-digit conductor:
? logN = 100 * log(10);
? for(D = 2, 8, print(D, "  ", estbound(exp(logN), D, 3.0)))

Sweep $\Delta$ and find the minimum; then check whether $e^{2\pi\Delta}$ primes is affordable. If the minimum is at $\Delta$ requiring $10^{15}$ primes, you must either accept a worse bound or invest in a faster $a_p$ sieve. The constant $c$ must be calibrated on curves where you know the answer.

Exercises

7.37 For a curve with a 50-digit conductor, find the optimal $\Delta$ and the resulting bound.

Solution
? logN = 50 * log(10);
? { my(best = 999, bD = 0);
    for(k = 10, 100, my(D = k/10.0, b = estbound(exp(logN), D, 3.0));
        if(b < best, best = b; bD = D));
    print("optimal D = ", bD, "  bound ~ ", best,
          "  primes needed ~ ", exp(2*Pi*bD)); }

You will find an optimum where the marginal gain from the prime sum equals the marginal cost of the main term. For a 50-digit conductor expect a bound in the mid-teens with $\Delta$ around 3–5. For a 150-digit conductor the bound roughly triples — landing in the low thirties, exactly as observed for the record curve.

7.38 Show that parity can only ever save one unit.

Solution

Suppose the explicit formula gives $r_{\text{an}}\le B$ with $\lfloor B\rfloor=b$. Parity says $r_{\text{an}}\equiv\epsilon\pmod2$ where $(-1)^\epsilon=w$. If $b\equiv\epsilon$, parity gives nothing new. If $b\not\equiv\epsilon$, then $r_{\text{an}}\le b-1$.

So the saving is 0 or 1 — never more. To do better you need a genuinely better analytic bound, not more cleverness with parity. ∎

This is why getting $B$ down to 31 rather than 32 mattered so much for the rank-30 result: at 32, parity would have given $\le32$ and left a two-unit gap.

7.39 Argue that the unconditional lower bound is the scientifically robust part of a record claim.

Solution

The lower bound consists of: (a) an explicit list of 30 points, each verifiable on the curve by a single polynomial evaluation; (b) a $30\times30$ matrix of canonical heights; (c) a determinant. Every step is independently checkable, and with ball arithmetic every step is provable. No conjecture enters. An independent group can re-verify it in minutes.

The upper bound depends on GRH (a conjecture about all zeros of an $L$-function) and BSD (a Millennium Problem). If either failed, the ceiling would evaporate — but the record would stand, restated as "rank $\ge30$", which is what the leaderboards actually track.

Good practice, followed by the record community: state the two claims separately and label the hypotheses.

Bober, arXiv:1112.1503. Elkies, arXiv:0709.2908. Dujella's tables, which distinguish "rank $\ge$" from "rank $=$" throughout.

Before assembling the pipeline, it is worth knowing what the answer is expected to be — because informed opinion has recently flipped.

The unbounded camp (folklore, pre-2016)

The bounded camp (Park–Poonen–Voight–Wood, 2016)

The model

Model $E(\mathbb{Q})$ and Ш as arising from a random alternating integer matrix: take $A$ an $n\times n$ alternating matrix with entries drawn from a suitable distribution, and set $\operatorname{rank}E\leftrightarrow\operatorname{corank}A$, $\text{Ш}\leftrightarrow\operatorname{coker}A$. Calibrate the distribution so that the predicted Selmer-group sizes match Bhargava–Shankar's theorems (average $\#\mathrm{Sel}^{(m)}=\sigma(m)$) and the predicted Ш distribution matches Delaunay's heuristics.

The prediction

The number of elliptic curves over $\mathbb{Q}$ of height $\le X$ and rank $\ge21$ is $O(X^{\epsilon})$ for every $\epsilon\gt0$. Consequently all but finitely many elliptic curves over $\mathbb{Q}$ have rank $\le21$.

Per-torsion ceilings

The model refines by torsion subgroup $T$, predicting a different asymptotic ceiling for each:

$T$trivial$\mathbb{Z}/2$$\mathbb{Z}/3$$\mathbb{Z}/4$$\mathbb{Z}/5$$\mathbb{Z}/6$$\mathbb{Z}/7$$\mathbb{Z}/8$
predicted ceiling2113975533

Note that the current records exceed several of these — rank 30 with trivial torsion, and Elkies–Klagsbrun's torsion records too. That is not a contradiction: the model says "all but finitely many", so any finite list of exceptional curves is permitted.

How to hold both views

Elkies and Klagsbrun, who broke five records at once, remark that such work provides at best limited evidence that ranks are unbounded: they found curves exceeding the conjectured asymptotic ceiling, which the model explicitly permits. Record-breaking and boundedness are compatible.

Nobody has a proof either way, and no proposed method would settle it. A proof that ranks are bounded would be a major theorem — it would constrain BSD sharply and is widely regarded as Fields-medal territory.

What would change your mind
  • Toward unbounded: a construction producing families with generic rank growing without bound over $\mathbb{Q}(t)$ — currently the ceiling is 18 from K3 surfaces, and no route past it is known over $\mathbb{Q}$.
  • Toward bounded: a proof that the average rank is exactly $1/2$ (predicted, with half of curves rank 0 and half rank 1), or an unconditional bound on Selmer ranks strong enough to force boundedness.

Exercises

7.40 Compute the empirical distribution of ranks for curves of small conductor and compare with the predicted 50/50 split.

Solution
{ my(cnt = vector(6));
  for(N = 11, 5000,
    my(v = ellsearch(N));
    for(i = 1, #v,
      my(E = ellinit(v[i][2]), R = ellrank(E));
      if(R[1] == R[2] && R[1] < 6, cnt[R[1]+1]++)));
  print(cnt);
  print("proportions: ", [c*1.0/vecsum(cnt) | c <- cnt]);
}

You should see roughly $\{r=0:\ \sim60\%,\ r=1:\ \sim35\%,\ r=2:\ \sim5\%,\ r\ge3:\ \lt1\%\}$ at small conductor. The predicted asymptotic is exactly 50/50 between ranks 0 and 1 with density 0 for $r\ge2$; the discrepancy at small conductor is a well-known finite-size effect (curves are ordered by conductor here, not by height, which also matters).

7.41 Explain why "all but finitely many have rank $\le21$" is consistent with a rank-30 curve existing.

Solution

The statement quantifies over all curves and allows a finite exceptional set of any size. A rank-30 curve is one member of that set. The model even predicts roughly how many exceptions to expect: the count of curves of height $\le X$ with rank $\ge r$ is predicted to be $X^{(21-r)/24+o(1)}$-ish, which for $r=30$ gives a bounded total.

What would contradict the model is finding an infinite family of rank-30 curves, or curves of unboundedly growing rank. Nobody has done either — and the construction methods of this phase all cap out at generic rank 18, so no known method could. ∎

7.42 Estimate, using the model, how many curves of rank $\ge25$ should exist.

Solution

PPVW's heuristic gives, for the number of curves of height $\le X$ with rank $\ge r$, $$\#\{E:\operatorname{ht}(E)\le X,\ r_E\ge r\}\ \asymp\ X^{(21-r)/24}$$ for $r\gt21$ this exponent is negative, so the count is bounded as $X\to\infty$: finitely many in total.

For $r=25$: exponent $(21-25)/24=-1/6$, so the count tends to 0 — meaning only finitely many, and the model gives no reason to expect many. The observed record of 30 with a handful of curves at 28–30 is entirely consistent.

Sobering corollary: if the model is right, rank records will get harder and harder, and there may be an absolute maximum. The century-long steady progress may be approaching its end rather than continuing indefinitely.

Park, Poonen, Voight, Wood, A heuristic for boundedness of ranks of elliptic curves, J. Eur. Math. Soc. 21 (2019). Elkies & Klagsbrun, ANTS XIV (2020). Bhargava & Shankar, Ann. of Math. 181 (2015).

A single reference page. Every recipe you will actually reach for.

Setup and basics
\p 60                                \\ 60 digits of real precision
\ps 20                               \\ series precision
#                                    \\ toggle the timer
##                                   \\ time of the last command
\\ always start from a minimal model:
E = ellminimalmodel(ellinit([a1,a2,a3,a4,a6]), &v);
\\ v = [u,r,s,t] records the change of variables; keep it!
P = ellchangepoint(P_old, v);        \\ move points across
Invariants and local data
E.a1 .. E.a6, E.b2 .. E.b8, E.c4, E.c6, E.disc, E.j
E.omega                              \\ [w1, w2] period lattice
E.eta, E.area, E.roots
ellglobalred(E)                      \\ [N, [u,r,s,t], prod c_p]
ellglobalred(E)[1]                   \\ conductor
ellglobalred(E)[3]                   \\ Tamagawa product
elllocalred(E, p)                    \\ [f_p, Kodaira code, [u,r,s,t], c_p]
ellrootno(E)                         \\ global root number w
ellrootno(E, p)                      \\ local root number w_p
ellcm(E)                             \\ CM discriminant, 0 if none
Points and the group law
ellisoncurve(E, P)
elladd(E, P, Q)      ellsub(E, P, Q)      ellneg(E, P)
ellmul(E, P, n)
ellorder(E, P)                       \\ 0 means infinite order
elltors(E)                           \\ [order, [structure], [generators]]
ellratpoints(E, h)                   \\ search, naive height bound h
elldivpol(E, m)                      \\ m-division polynomial
ellheight(E, P)                      \\ canonical height
ellheightmatrix(E, [P,Q,R])          \\ Gram matrix
matdet(ellheightmatrix(E, pts))      \\ the independence certificate
Rank and descent
ellrank(E)                           \\ [lower, upper, s, gens]
ellrank(E, effort)                   \\ effort = 0,1,2,3 -- search harder
ellrank(E, effort, extra_points)     \\ feed in points you already have
ell2cover(E)                         \\ the 2-coverings (quartic models)
hyperellratpoints(C, h)              \\ search a covering
ellanalyticrank(E)                   \\ [r_an, leading L-coefficient]
elllseries(E, s)      elllseries(E, s, k)   \\ L and derivatives
ellheegner(E)                        \\ Heegner point (rank 1, w = -1)
Finite fields and reduction
ellap(E, p)                          \\ trace of Frobenius
ellinit([a1..a6], p)                 \\ curve over F_p
ellinit([a1..a6], ffgen(p^k))        \\ over F_{p^k}
ellcard(E)                           \\ #E(F_q)
ellgroup(E)                          \\ [n1] or [n1,n2]
ellgroup(E, 1)                       \\ also returns generators
elllog(E, P, G, ord)                 \\ discrete logarithm
ellweilpairing(E, P, Q, m)
ellan(E, n)                          \\ [a_1, ..., a_n]
Isogenies and twists
ellisomat(E)                         \\ the Q-isogeny class + degree matrix
ellisogeny(E, G)                     \\ Velu: [target coeffs, maps]
ellisogenyapply(phi, P)
elltwist(E, d)                       \\ quadratic twist
ellfromj(j)                          \\ a curve with given j
ellmoddegree(E)                      \\ modular degree
ellsearch(N)                         \\ database lookup (needs pari-elldata)
ellidentify(E)                       \\ find E in the database
Analytic
ellpointtoz(E, P)                    \\ elliptic logarithm
ellztopoint(E, z)                    \\ elliptic exponential
ellwp(E, z)          ellwp(E, z, 1)  \\ [wp(z), wp'(z)]
ellsigma(E, z)       ellzeta(E, z)
ellj(q)                              \\ j as a q-series or at a point of H
agm(a, b)
lfun(E, s)           lfunzeros(E, T)
The five habits
  1. Minimalise first. ellminimalmodel before anything local.
  2. Filter torsion before computing a height matrix — torsion has $\hat h=0$ and makes the determinant vanish spuriously.
  3. Set precision generously. \p 100 costs almost nothing and prevents silent nonsense.
  4. Batch inside GP. Never call gp once per candidate from an outer language (Lesson 5).
  5. Cross-check. Any hand-derived rank formula should be verified against ellrank on a dozen curves before you trust it at scale.

Exercises

8.1 Write a one-line GP expression giving the conductor, rank bounds, torsion and root number of a curve.

Solution
summary(c) = my(E = ellminimalmodel(ellinit(c)));
  [ellglobalred(E)[1], ellrank(E)[1..2], elltors(E)[2], ellrootno(E)];

? summary([0,0,1,-7,6])
%  [5077, [3, 3], [], -1]
? summary([0,-1,1,-10,-20])
%  [11, [0, 0], [5], 1]

Note the parity check: root number $-1$ with rank 3 ✓, $+1$ with rank 0 ✓.

8.2 Write a GP function that verifies a claimed rank lower bound from a list of points.

Solution
verify(c, pts, prec) =
{ default(realprecision, prec);
  my(E = ellinit(c), G);
  for(i = 1, #pts, if(!ellisoncurve(E, pts[i]), error("point ", i, " not on curve")));
  G = select(P -> ellorder(E, P) == 0, pts);
  if(#G != #pts, error("torsion present"));
  my(M = ellheightmatrix(E, G), d = matdet(M));
  if(d == 0, error("determinant zero -- dependent"));
  for(k = 1, #G, if(matdet(M[1..k,1..k]) <= 0, error("not positive definite")));
  print("rank >= ", #G, "   regulator = ", d);
  #G;
}

? verify([0,0,0,-7,6], ellrank(ellinit([0,0,0,-7,6]))[4], 80)

This is a complete, reusable rank-lower-bound certifier. Give it the curve and the points and it does every check: on-curve, non-torsion, independent, positive definite.

8.3 Build a GP script that reads curves from a file and writes a summary table.

Solution
\\ batch.gp  --  run with: gp -q batch.gp
{
  my(v = readvec("curves.txt"), out = List());
  for(i = 1, #v,
    my(E = ellinit(v[i]));
    if(type(E) == "t_VEC",
       my(Em = ellminimalmodel(E), R = ellrank(Em));
       listput(out, [i, ellglobalred(Em)[1], R[1], R[2], ellrootno(Em)]);
       if(R[1] >= 6, print("HIT ", i, "  ", v[i], "  rank ", R[1..2]))));
  write("summary.txt", Vec(out));
  print("done: ", #out, " curves");
}

Input file format: one curve per line as [a1,a2,a3,a4,a6]. readvec parses it. This is the confirmation stage of a rank search; the sieve produces curves.txt and this verifies.

PARI/GP user manual §3.7. ??ellinit, ??ellrank in the interpreter.

Mathematica's role is symbolic: constructing families, imposing conditions, eliminating variables. Everything numeric goes to PARI. Here is a package skeleton that makes that split clean.

Package skeleton
BeginPackage["EC`"];

GP::usage        = "GP[cmd] runs a GP command and returns the output string.";
GPEval::usage    = "GPEval[expr] evaluates a GP expression and parses the result.";
ECRank::usage    = "ECRank[{a1,a2,a3,a4,a6}] returns {lower, upper} rank bounds.";
ECData::usage    = "ECData[coeffs] returns an association of standard invariants.";
MestrePoly::usage= "MestrePoly[{a1,...,a2n}] returns {R, points} for Mestre's construction.";
NagaoSum::usage  = "NagaoSum[fam, X] estimates the generic rank of a family.";

Begin["`Private`"];

(* --- the bridge --- *)
GP[cmd_String] := StringTrim @ RunProcess[
   {"gp", "-q"}, "StandardOutput", cmd <> "\nquit\n"];

gpFix[s_String] := StringReplace[s,
   {"[" -> "{", "]" -> "}", " E" -> "*10^", "\n" -> ""}];

GPEval[expr_String] := ToExpression[gpFix @ GP["print(" <> expr <> ")"], InputForm];

toGP[l_List] := StringReplace[ToString[l, InputForm], {"{" -> "[", "}" -> "]"}];

(* --- wrappers --- *)
ECRank[c_List] := Take[GPEval["ellrank(ellinit(" <> toGP[c] <> "))"], 2];

ECData[c_List] := Module[{r},
  r = GPEval["my(E = ellminimalmodel(ellinit(" <> toGP[c] <> "))); \
              [ellglobalred(E)[1], E.disc, E.j, ellrootno(E), \
               elltors(E)[1], ellglobalred(E)[3]]"];
  <|"Conductor" -> r[[1]], "Discriminant" -> r[[2]], "j" -> r[[3]],
    "RootNumber" -> r[[4]], "TorsionOrder" -> r[[5]], "Tamagawa" -> r[[6]]|>
];

End[];
EndPackage[];
Design rules
  1. One process per batch, not per curve. Every wrapper that might be called in a loop should have a plural version taking a list and doing the loop inside GP (Lesson 5, Exercise 0.10).
  2. Return structured data. Associations, not strings. Parse once, at the boundary.
  3. Keep symbolic work in Mathematica. Never send a symbolic family to GP; specialise first.
  4. Fail loudly. ellinit returns 0 for a singular curve; check for it rather than letting {} propagate.
The batched version
ECRankList[cs : {{_, _, _, _, _} ..}] := Module[{cmd, out},
  cmd = "{ my(v = " <>
        StringReplace[ToString[cs, InputForm], {"{" -> "[", "}" -> "]"}] <> "); \
          for(i = 1, #v, my(E = ellinit(v[i])); \
              if(type(E) == \"t_VEC\", \
                 print(ellrank(E)[1], \",\", ellrank(E)[2]), \
                 print(\"-1,-1\"))); }";
  out = StringSplit[GP[cmd], "\n"];
  ToExpression /@ (StringSplit[#, ","] & /@ out)
];

(* 1000 curves in one process spawn *)
ECRankList[Table[{0, 0, 0, n^2 - 3, n^3 + 1}, {n, 2, 1001}]] // AbsoluteTiming
Escaping

Building GP commands as Mathematica strings means quoting hazards. Two mitigations: use StringTemplate rather than concatenation, and for anything longer than a few lines, write the GP code to a temporary file and run gp -q file.gp. The file route also makes debugging vastly easier — you can run the generated script by hand.

GPScript[code_String] := Module[{f = CreateFile[], out},
  WriteString[f, code]; Close[f];
  out = RunProcess[{"gp", "-q", f}, "StandardOutput"];
  DeleteFile[f];
  StringTrim[out]
];

Exercises

8.4 Extend the package with ECHeightMatrix[coeffs, points].

Solution
ECHeightMatrix[c_List, pts_List, prec_ : 60] :=
 GPEval["default(realprecision, " <> ToString[prec] <> "); \
         ellheightmatrix(ellinit(" <> toGP[c] <> "), " <> toGP[pts] <> ")"];

ECRegulator[c_List, pts_List, prec_ : 60] := Det @ ECHeightMatrix[c, pts, prec];

ECRegulator[{0,0,0,-7,6}, {{-3,0},{-2,3},{-1,3}}]

Note toGP applied to a list of points produces [[-3,0],[-2,3],[-1,3]] ✓ since the replacement is global. The returned matrix comes back as a Mathematica matrix of reals, ready for Det, Eigenvalues, or LatticeReduce.

8.5 Add a guard that detects singular curves and returns $Failed.

Solution
ECRank[c_List] := Module[{disc, r},
  disc = GPEval["my(E = ellinit(" <> toGP[c] <> ")); if(type(E)==\"t_VEC\", E.disc, 0)"];
  If[disc === 0, Return[$Failed]];
  r = GPEval["ellrank(ellinit(" <> toGP[c] <> "))"];
  Take[r, 2]
];

ECRank[{0,0,0,0,0}]       (* $Failed -- y^2 = x^3 is a cusp *)
ECRank[{0,0,0,-7,6}]      (* {3, 3} *)

Better still, compute the discriminant in Mathematica before calling GP at all: $\Delta=-16(4A^3+27B^2)$ for short form, or the full $b_i$ formula otherwise. That saves a process spawn on every singular candidate, which in a sieve over millions matters.

8.6 Benchmark ECRank against ECRankList on 500 curves.

Solution
cs = Table[{0, 0, 0, n^2 - 3, n^3 + 1}, {n, 2, 501}];
AbsoluteTiming[ECRank /@ cs;]        (* ~ 20-40 s: 500 process spawns *)
AbsoluteTiming[ECRankList[cs];]      (* ~ 1-3 s: one spawn *)

Roughly a 20× speedup even at this small scale, and the gap widens with the number of curves since the per-spawn cost is fixed. At a million curves the difference is between an hour and a week.

Design consequence: every wrapper in the package should have a list version, and the singular-form version should be documented as "for interactive use only".

Wolfram documentation for RunProcess, StringTemplate, ExternalEvaluate. PARI/GP manual §2 for script mode.

The full symbolic implementation, ready to extend with conditions.

Core routine
(* Truncated square root: the polynomial part of Sqrt[P] at x = Infinity *)
TruncSqrt[P_, x_, n_Integer] :=
  Expand @ Normal @ Series[Sqrt[P], {x, Infinity, n}];

MestrePoly[as_List, x_ : x] := Module[{n = Length[as]/2, P, Q, R},
  If[! IntegerQ[n], Return[$Failed]];
  P = Expand @ Product[x - a, {a, as}];
  Q = TruncSqrt[P, x, n];
  R = Expand[Q^2 - P];
  <|"P" -> P, "Q" -> Q, "R" -> R,
    "Points" -> Table[{a, Q /. x -> a}, {a, as}],
    "Degree" -> Exponent[R, x]|>
];

(* check *)
m = MestrePoly[{-5, -4, -3, -2, -1, 1, 2, 3, 4, 5}];
m["Degree"]                                        (* 4 *)
And @@ ((m["R"] /. x -> #[[1]]) == #[[2]]^2 & /@ m["Points"])   (* True *)
Quartic to Weierstrass

A genus-1 quartic $y^2=ax^4+bx^3+cx^2+dx+e$ with a rational point has a standard Weierstrass model. Using the classical invariants:

QuarticInvariants[{a_, b_, c_, d_, e_}] := {
  12 a e - 3 b d + c^2,                                  (* I *)
  72 a c e + 9 b c d - 27 a d^2 - 27 e b^2 - 2 c^3       (* J *)
};

QuarticToWeierstrass[coeffs_List] := Module[{I0, J0},
  {I0, J0} = QuarticInvariants[coeffs];
  {0, 0, 0, -27 I0, -27 J0}      (* y^2 = x^3 - 27 I x - 27 J *)
];

(* apply to Mestre's R *)
rc = Reverse @ CoefficientList[m["R"], x];   (* {a,b,c,d,e}, degree 4 first *)
w  = QuarticToWeierstrass[PadLeft[rc, 5]]

Then hand $w$ to PARI: ECRank[w]. Note the map from quartic points to Weierstrass points is a separate (birational) formula; PARI's ellfromeqn handles the whole conversion including the maps, so in practice you can let GP do it.

End-to-end
MestreCurve[as_List] := Module[{m, rc, w},
  m = MestrePoly[as];
  If[m === $Failed || m["Degree"] > 4, Return[$Failed]];
  rc = PadLeft[Reverse @ CoefficientList[m["R"], x], 5];
  w = QuarticToWeierstrass[rc];
  <|"Weierstrass" -> w, "Quartic" -> m["R"], "QuarticPoints" -> m["Points"]|>
];

c = MestreCurve[{-7, -5, -3, -2, -1, 1, 2, 4, 6, 9}];
ECRank[c["Weierstrass"]]
Two practical points
  • Scale the coefficients. $Q$ has denominators (powers of 2 from the square root); clear them before handing to PARI, or you get non-integral Weierstrass coefficients and ellminimalmodel has extra work.
  • Check the degree. If $\deg R\le2$ the curve is a conic (genus 0) — useless. If $\deg R=3$ you have a cubic directly, which is fine and simpler. Guard for both.
A small search
results = Reap[
   Do[
     Module[{as, c, r},
       as = RandomSample[Range[-12, 12], 10];
       c = MestreCurve[as];
       If[c =!= $Failed,
         r = ECRank[c["Weierstrass"]];
         If[r =!= $Failed && First[r] >= 6, Sow[{as, r}]]
       ]],
     {200}]
   ][[2]];
Length[results]

Random choices of ten integers give ranks typically in the 3–7 range, occasionally higher. That is already remarkable — a random curve has rank 0 or 1 with probability near 1 — and it is the whole value of the construction. Pushing beyond requires the conditions of the next lesson.

Exercises

8.7 Implement MestrePoly symbolically in $a_1,\dots,a_{10}$ and inspect the size of $R$.

Solution
as = Table[Subscript[a, i], {i, 1, 10}];
m = MestrePoly[as];
Exponent[m["R"], x]                    (* 4 *)
Length @ MonomialList[Coefficient[m["R"], x, 4]]   (* count terms *)
ByteCount[m["R"]]

The coefficients of $R$ are symmetric polynomials of high degree in ten variables — several thousand terms. That size is why one immediately reduces to symmetric configurations ($a_i=\pm b_i$) before imposing conditions: it cuts the variable count from 10 to 5 and exploits the evenness of $R$.

bs = Table[Subscript[b, i], {i, 1, 5}];
ms = MestrePoly[Join[bs, -bs]];
ms["R"] === (ms["R"] /. x -> -x)       (* True: R is even *)
CoefficientList[ms["R"], x][[{1, 3, 5}]] // ByteCount   (* far smaller *)

8.8 Verify that clearing denominators does not change the rank.

Solution
c = MestreCurve[{-7, -5, -3, -2, -1, 1, 2, 4, 6, 9}];
w = c["Weierstrass"];
den = LCM @@ Denominator /@ w;
w2 = {w[[1]] den, w[[2]] den^2, w[[3]] den^3, w[[4]] den^4, w[[5]] den^6};
{ECRank[w], ECRank[w2]}

Identical ✓. Scaling $a_i\mapsto u^ia_i$ is exactly the admissible change of variables with $u=1/\text{den}$ (Lesson 14), so the curves are $\mathbb{Q}$-isomorphic and the rank is unchanged. Only $\Delta$ scales, by $u^{-12}$.

Doing this in Mathematica before calling PARI is worth it: ellminimalmodel on a curve with huge denominators is slower than on the scaled integral version.

8.9 Search for a rank-8 curve from Mestre's construction.

Solution
found = {};
Do[
  Module[{as, c, r},
    as = RandomSample[Range[-20, 20], 10];
    c = MestreCurve[as];
    If[c =!= $Failed,
      r = ECRank[c["Weierstrass"]];
      If[r =!= $Failed && First[r] >= 8, AppendTo[found, {as, r}]]]],
  {2000}];
found

Rank 8 appears occasionally in a few thousand random trials — far more often than random curves of comparable size, where it would essentially never appear. Above 8 the hit rate drops sharply, because the ten constructed points satisfy at least one relation (Lesson 84 Ex 7.17) and generic choices give no more.

To go higher you must impose conditions, which is exactly Lesson 85 and the next lesson here.

Mestre, C. R. Acad. Sci. Paris 295 (1982) and 314 (1992). Wolfram documentation for Series at Infinity.

The step that turns a construction into a high-rank family. This is where Mathematica genuinely earns its keep.

Gröbner basis, briefly

For an ideal $I\subseteq k[x_1,\dots,x_n]$ and a monomial order $\prec$, a Gröbner basis is a generating set $G$ such that the leading terms of $G$ generate the ideal of leading terms of $I$. Consequences we use:

  • Ideal membership is decidable by reduction modulo $G$.
  • Elimination: with a lexicographic or block order, $G\cap k[x_{k+1},\dots,x_n]$ generates the elimination ideal — this is how you solve for one variable in terms of the others.
  • Dimension of the solution variety is readable from $G$.
The workflow
(* 1. Set up the symmetric Mestre family *)
bs = {b1, b2, b3, b4, b5};
m  = MestrePoly[Join[bs, -bs]];
R  = m["R"];                       (* even quartic: A x^4 + B x^2 + C *)
{A, B, C} = CoefficientList[R, x][[{5, 3, 1}]];

(* 2. Impose: force an extra rational point at x = c *)
cond1 = A c^4 + B c^2 + C - d^2;

(* 3. FIRST test feasibility modulo a prime -- fast *)
Timing @ GroebnerBasis[{cond1}, {b1, b2, b3, b4, b5, c, d},
                       Modulus -> 32003];

(* 4. Eliminate to solve for one parameter *)
gb = GroebnerBasis[{cond1}, {b5, b1, b2, b3, b4, c, d},
                   MonomialOrder -> EliminationOrder];

(* 5. Or just solve directly if the condition is low degree in one variable *)
sol = Solve[cond1 == 0, b5];
Practical rules
  1. Always test modulo a prime first. Modulus -> 32003 runs orders of magnitude faster and tells you whether the ideal is zero-dimensional, roughly how many solutions to expect, and whether the computation is feasible at all over $\mathbb{Q}$.
  2. Exploit symmetry before computing. Symmetric configurations cut ten variables to five and make $R$ even; that alone can be the difference between minutes and never.
  3. Impose conditions one at a time. Solve for one parameter, substitute, then impose the next. Batching conditions into one Gröbner call is usually much worse.
  4. Choose the elimination order deliberately. EliminationOrder with the variable you want to remove listed first. Pure lex is often catastrophically slow; a block order is usually better.
  5. Expect the variety to have no rational points. Solving the system may yield only irrational or complex solutions. That is a normal outcome and means you should change which conditions you impose, not how you solve them.
A worked, feasible example
(* Force R to have a rational root, i.e. a point with y = 0 
   -- this creates 2-torsion, which is sometimes wanted and sometimes not. *)
bs = {b1, b2, b3, b4, b5};
m  = MestrePoly[Join[bs, -bs]];
R  = m["R"];
{A, B, C} = CoefficientList[R, x][[{5, 3, 1}]];

(* R = A x^4 + B x^2 + C is a quadratic in x^2; it has a rational root
   iff B^2 - 4 A C is a square.  Force it to be a square of a parameter k: *)
cond = B^2 - 4 A C - k^2;

Timing @ GroebnerBasis[{cond}, {b1,b2,b3,b4,b5,k}, Modulus -> 32003];
sol = Solve[cond == 0, b5];        (* often solvable in closed form *)

(* substitute back and specialise *)
fam[b1_, b2_, b3_, b4_, k_] := ... (* R with b5 replaced *)
When Gröbner fails

If the computation does not terminate:

  • Reduce the number of variables (more symmetry, or fix one parameter numerically).
  • Work over $\mathbb{F}_p$ and lift, or use a modular Gröbner algorithm.
  • Try Magma's implementation, which is generally faster than Mathematica's for large systems.
  • Reconsider the geometry. Elkies' K3 families were not obtained by heavier elimination but by better geometric input — choosing surfaces with the right Picard lattice from the start. Better geometry beats better algebra here, consistently.

Exercises

8.10 Compute a Gröbner basis for a small toy system and read off the elimination ideal.

Solution
GroebnerBasis[{x^2 + y^2 - 1, x - y}, {x, y}]
(* {-1 + 2 y^2, x - y} *)

GroebnerBasis[{x^2 + y^2 - 1, x - y}, {x, y},
              MonomialOrder -> EliminationOrder]
(* eliminates x first: the y-only generator is -1 + 2 y^2 *)

The elimination ideal in $\mathbb{Q}[y]$ is generated by $2y^2-1$, so $y=\pm1/\sqrt2$ — no rational solutions. That is the mechanism you will use constantly: eliminate down to one variable and check whether the resulting polynomial has rational roots.

8.11 Time a Gröbner computation over $\mathbb{Q}$ versus modulo a prime.

Solution
vars = {b1, b2, b3, b4, b5};
m = MestrePoly[Join[vars, -vars]];
{A, B, C} = CoefficientList[m["R"], x][[{5, 3, 1}]];
cond = B^2 - 4 A C - k^2;

Timing @ GroebnerBasis[{cond}, Append[vars, k], Modulus -> 32003];
(* fast *)

TimeConstrained[
  Timing @ GroebnerBasis[{cond}, Append[vars, k]],
  120, $Aborted]
(* may abort *)

Typically 100×–10000× faster modulo a prime, because coefficient growth over $\mathbb{Q}$ is the dominant cost. Standard practice: run mod $p$ for several primes, infer the structure (dimension, degree), and only then attempt the rational computation — or reconstruct rationally from the modular results.

8.12 Impose one condition on the symmetric Mestre family, specialise, and check the rank went up.

Solution
(* impose that R has a rational root; solve for b5 *)
sol = Solve[B^2 - 4 A C == k^2, b5];   (* may be messy; take one branch *)

(* specialise the remaining parameters numerically and test *)
results = Table[
  Module[{as, c, r},
    as = {b1, b2, b3, b4, b5} /. {b1 -> i, b2 -> j, b3 -> 3, b4 -> 5} 
         /. First[sol];
    (* build the curve and test *)
    ], {i, 1, 5}, {j, 6, 10}];

The point of the exercise is the workflow rather than a specific number: impose, solve, substitute, specialise, verify with ECRank. Compare the rank distribution of the constrained family against the unconstrained one — the constrained family should show a shifted distribution, which is exactly the generic-rank increase Néron specialisation then propagates to every fibre.

If the constrained family's ranks are not higher, the condition you imposed did not add an independent point — a common outcome, and the reason this stage is iterative.

Cox, Little, O'Shea, Ideals, Varieties, and Algorithms. Mestre, C. R. Acad. Sci. 313 (1991). Kihara, Proc. Japan Acad. 77 (2001).

The compute-heavy stage. This lesson is engineering, not mathematics — but it is the stage that decides whether a search finishes.

The architecture
ComponentLanguageWhy
Family construction, conditionsMathematica / Magmasymbolic elimination
Residue tables (good $t\bmod p$)C / Rust, or GP oncesmall, done once
Candidate enumeration (CRT walk)C / Rusttight loop, no allocation
$a_p$ computation, Mestre–NagaoC / Rustthe inner loop; 90% of the time
Stage-3 verification (descent, points)PARI (via libpari or gp)correctness over speed
Orchestration, checkpointing, dedupGo / PythonI/O and coordination
The inner loop, done right

For each candidate $t_0$ you need $a_p$ for $p\le X$. The right implementation:

  1. Precompute per prime, once: the quadratic-character table $\chi(u)$ for $u\in\mathbb{F}_p$ as a byte array, and the cube table $x^3\bmod p$.
  2. Per candidate: $a_p=-\sum_{x}\chi(x^3+Ax+B)$ is one pass with table lookups and one multiply-add per $x$.
  3. Never call a general-purpose library per candidate. No ellinit, no allocation, no big integers if $A,B$ can be reduced mod $p$ first.

This is $O(p)$ per prime per candidate — asymptotically worse than SEA, but with a constant so small that it wins by orders of magnitude in this regime (Lesson 26).

The staged pipeline, in pseudocode
// Stage 0: setup (once)
for p in small_primes:
    chi[p]   = quadratic character table mod p
    cube[p]  = x^3 mod p table
    good[p]  = residues t mod p with most negative mean a_p

// Stage 1: cheap filter, X = 200
for t0 in crt_enumerate(good, bound):        // only selected residue classes
    (A, B) = specialise(family, t0)          // reduce mod each p as needed
    if is_singular(A, B): continue
    if is_cm(A, B): continue                 // Lesson 32: CM breaks the sieve
    s = mestre_nagao(A, B, X=200, chi, cube)
    if s < threshold1: emit stage1(t0)

// Stage 2: X = 5000
for t0 in stage1:
    s = mestre_nagao(A, B, X=5000)
    if s < threshold2: emit stage2(t0)

// Stage 3: X = 10^5 plus a quick descent
for t0 in stage2:
    s = mestre_nagao(A, B, X=100000)
    if s < threshold3:
        r_lo, r_hi = pari_ellrank(A, B)      // catches Selmer-inflated fakes
        if r_lo >= target: emit hit(t0)

// Stage 4: full point search on the survivors (Lesson 89)
Operational requirements
  • Checkpointing. A search runs for weeks. Record the last completed $t_0$ range per worker, and make restarts idempotent.
  • Deterministic sharding. Assign each worker a residue class or an index range, computed from a seed — never a dynamic queue, which makes reproducibility impossible.
  • Deduplication. Different $t_0$ can give isomorphic curves. Deduplicate on the minimal model's $(c_4,c_6)$ or on the conductor plus $a_p$ signature.
  • Threshold calibration. Before running, calibrate thresholds on curves of known rank from the same family (Lesson 87). Recalibrate if you change the family.
  • Provenance. Log the family, the conditions imposed, the residue tables, the thresholds, and the seed. A record claim needs to be reproducible.
The three ways searches fail
  1. Threshold too tight: you filter out the actual hits. Symptom: no survivors at all. Fix: calibrate against a known high-rank member of the family.
  2. Threshold too loose: stage 3 is swamped and becomes the bottleneck. Symptom: stage 2 emits millions. Fix: tighten, or add an intermediate stage.
  3. Selmer bias: survivors have large Ш, not large rank. Symptom: ellrank gives wide bounds on every survivor. Fix: add the descent check earlier, and reduce sieve aggressiveness.

Exercises

8.13 Write the residue-table builder and measure the sieve's selectivity.

Solution
\\ GP version -- port the hot version to C
buildtable(fam, p, frac) =
{ my(v = vector(p), ord);
  for(t = 0, p-1,
      my(c = fam(t), E = ellinit(apply(u -> lift(Mod(u,p)), c), p));
      v[t+1] = if(type(E) == "t_VEC", ellap(E,p), 0));
  ord = vecsort(v, , 1);
  vecextract(vector(p, i, i-1), Str("1..", max(1, floor(frac*p))))
    \\ indices of the most negative
}

? fam = (t) -> [0,0,0, t^2-3, t^3+1];
? tables = [ [p, buildtable(fam, p, 0.3)] | p <- [3,5,7,11,13] ];
? \\ selectivity:
? prod(i=1,#tables, #tables[i][2] / tables[i][1]) * 1.0

Selectivity around $0.3^5\approx0.0024$: you examine 0.24% of candidates. Then measure the mean $S(X)$ shift among survivors to confirm the bias is real and roughly additive across primes.

8.14 Implement checkpointing for a GP-driven sieve.

Solution
\\ sieve.gp
{
  my(start = 1, chkfile = "checkpoint.txt", hits = "hits.txt");
  if(fileexists(chkfile), start = eval(readstr(chkfile)[1]));
  print("resuming from ", start);
  for(n = start, 10^7,
    my(c = [0,0,0, n^2-3, n^3+1], E);
    if(4*c[4]^3 + 27*c[5]^2,
       E = ellinit(c);
       if(type(E) == "t_VEC" && ellcm(E) == 0,
          if(MN(E, 200) < -8.0,
             write(hits, n)))));
    if(n % 10000 == 0, write1(chkfile, Str(n)));
  );
}

Write the checkpoint after the batch it covers, and make the hit file append-only. On restart the worst case is re-doing one batch — which is fine, provided the hit file is deduplicated at the end.

8.15 Estimate the throughput needed to sieve $10^{12}$ candidates.

Solution

Stage 1 at $X=200$ needs $a_p$ for 46 primes, each costing $O(p)$ operations, total $\sum_{p\le200}p\approx4600$ operations per candidate.

$10^{12}$ candidates $\times$ $4600$ operations $=4.6\times10^{15}$ operations. At $10^9$ operations/second/core that is $4.6\times10^6$ core-seconds $\approx53$ core-days. On 128 cores: about 10 hours.

But: with congruence sieving at 0.24% selectivity you only evaluate $2.4\times10^9$ candidates, bringing it to under a core-hour. The enumeration of the CRT classes then becomes the bottleneck, which is why it must be a direct arithmetic-progression walk rather than test-and-reject.

This is the calculation to do before writing the code — it tells you where the effort must go.

Elkies, arXiv:0709.2908, Lecture III. Elkies & Klagsbrun, ANTS XIV (2020), for the description of a real search.

Everything assembled, as a checklist you could run on a claimed record.

The verification protocol
  1. Inputs. The Weierstrass coefficients $[a_1,a_2,a_3,a_4,a_6]$ and a list of $k$ points $P_1,\dots,P_k$.
  2. Curve is smooth. $\Delta\ne0$.
  3. Points are on the curve. One polynomial evaluation each — exact integer arithmetic, no floating point.
  4. No torsion in the list. Every $P_i$ has infinite order (check via ellorder, or via the reduction bound of Lesson 41).
  5. Independence. $\det\bigl(\langle P_i,P_j\rangle\bigr)\ne0$ with certified error bounds, and (optionally) a mod-$p$ certificate (Lesson 90).
  6. Conclude: $\operatorname{rank}\ge k$, unconditionally.
  7. Optional ceiling: root number, Bober bound, parity, BSD — clearly labelled as conditional.
A complete verifier
\\ verify.gp
verifyrank(coeffs, pts, prec) =
{ default(realprecision, prec);
  my(E, M, d, k = #pts);

  E = ellinit(coeffs);
  if(type(E) != "t_VEC", error("singular curve"));
  print("Delta has ", sizedigit(abs(E.disc)), " digits");

  for(i = 1, k,
      if(!ellisoncurve(E, pts[i]), error("point ", i, " is not on the curve")));
  print("all ", k, " points verified on the curve");

  for(i = 1, k,
      if(ellorder(E, pts[i]) != 0, error("point ", i, " is torsion")));
  print("all points are non-torsion");

  M = ellheightmatrix(E, pts);
  d = matdet(M);
  print("regulator = ", d);
  if(d == 0, error("determinant vanishes: points are dependent"));

  for(j = 1, k,
      if(matdet(M[1..j, 1..j]) <= 0, error("Gram matrix not positive definite")));
  print("Gram matrix is positive definite");

  print("CONCLUSION: rank >= ", k, "  (unconditional)");
  k;
}

conditionalceiling(coeffs) =
{ my(E = ellminimalmodel(ellinit(coeffs)), N, w);
  N = ellglobalred(E)[1];
  w = ellrootno(E);
  print("conductor has ", sizedigit(N), " digits");
  print("root number w = ", w, "  =>  analytic rank is ",
        if(w == 1, "even", "odd"));
  print("[explicit-formula bound requires the Bober computation -- see Lesson 76]");
}
Running it on a modest example
? read("verify.gp");
? E = ellinit([0,0,1,-7,6]);
? G = select(P -> ellorder(E,P) == 0, ellrank(E)[4]);
? verifyrank([0,0,1,-7,6], G, 80)
Delta has 8 digits
all 3 points verified on the curve
all points are non-torsion
regulator = 0.4171...
Gram matrix is positive definite
CONCLUSION: rank >= 3  (unconditional)
%  3
? conditionalceiling([0,0,1,-7,6])
conductor has 4 digits
root number w = -1  =>  analytic rank is odd
Scaling to a record curve

What changes with 150-digit coefficients:

  • Precision. Set \p to roughly (digits of the largest coordinate)/2 + 100. For 150-digit coefficients and points with 300-digit coordinates, use \p 250 or more.
  • Timing. A $30\times30$ height matrix is 465 pairwise canonical heights; each is an AGM computation. Seconds to minutes, not hours.
  • Ball arithmetic. For a publishable certificate, redo the determinant in Arb so the enclosure provably excludes 0.
  • Factoring. The conditional ceiling needs the bad primes; record the factorisation of $\Delta$ from the construction rather than trying to factor it afterwards.
The precision trap

If \p is too low, ellheightmatrix returns numbers that look plausible and a determinant that may be spuriously nonzero or spuriously zero. Always compute at two precisions and confirm agreement. A determinant that changes when you raise the precision is not a certificate.

? \p 60
? d1 = matdet(ellheightmatrix(E, G));
? \p 200
? d2 = matdet(ellheightmatrix(E, G));
? abs(d1 - d2) / abs(d2)                \\ should be tiny

Exercises

8.16 Run the verifier on a rank-5 curve and time each stage.

Solution
? \\ find a rank-5 curve first
? { for(a = -200, 200, for(b = -200, 200,
      if(4*a^3+27*b^2,
         my(E = ellinit([0,0,0,a,b]));
         if(type(E)=="t_VEC" && ellrank(E)[1] >= 5,
            print([a,b]); break(2))))); }
? \\ then verify:
? # 
? verifyrank([0,0,0,a,b], G, 100)
? ##

The height matrix dominates: $\binom{5}{2}+5=15$ canonical heights. Even at 100 digits this is milliseconds. Scaling to rank 30 gives 465 heights — still fast. Verification is cheap; discovery is expensive. That asymmetry is why record claims are easy to check and hard to make.

8.17 Add a mod-$p$ independence certificate to the verifier.

Solution
verifymodp(coeffs, pts, nprimes) =
{ my(E = ellinit(coeffs), L = 0, used = List(), cnt = 0);
  forprime(p = 100, 10^6,
    if(E.disc % p != 0,
       my(Lp = relmod(E, pts, p));
       if(Lp != 0,
          listput(used, p); cnt++;
          L = if(L == 0, Lp, matintersect(L, Lp));
          if(matsize(L)[2] == 0,
             print("independent, certified by primes ", Vec(used));
             return(1));
          if(cnt >= nprimes, break))));
  print("inconclusive after ", cnt, " primes");
  0;
}

? verifymodp([0,0,0,-7,6], G, 20)

Output is a certificate: the list of primes. Anyone can recheck it with exact finite arithmetic, no floating point, no trust in a height implementation. This is the artefact you would formalise in Lean (Lesson 90 Ex 7.36).

8.18 Deliberately break the verifier: feed it a dependent set and confirm it catches the error.

Solution
? E = ellinit([0,0,0,-7,6]);
? G = select(P -> ellorder(E,P)==0, ellrank(E)[4]);
? bad = concat(G, [elladd(E, G[1], G[2])]);       \\ P1 + P2 is dependent!
? verifyrank([0,0,0,-7,6], bad, 80)
*** determinant vanishes: points are dependent

Caught ✓. Also try: including a torsion point (caught by the order check), a point not on the curve (caught by ellisoncurve), and a set at insufficient precision (caught by the two-precision comparison, if you add it).

Testing your verifier against known-bad inputs is not optional. A verifier that never rejects anything is not a verifier.

Cremona, Algorithms, §3.4–3.5. FLINT/Arb documentation for certified evaluation. Dujella's tables for the format of published record data.

Reading, in order

  1. Silverman & Tate, Rational Points on Elliptic Curves — the gentle first pass. Covers Phases 1 and 4 of this course with almost no prerequisites.
  2. Silverman, The Arithmetic of Elliptic Curves (AEC), 2nd ed. — the standard. Chapters III (group law), VII (reduction), VIII (Mordell–Weil, heights), X (descent, Selmer, Ш) are Phases 1, 3, 4, 5 here.
  3. Silverman, Advanced Topics in the Arithmetic of Elliptic Curves (ATAEC) — CM, elliptic surfaces, Néron models, local heights, modular curves. Background for Phases 6–7.
  4. Cremona, Algorithms for Modular Elliptic Curves — free online; the computational bible, and the source for mwrank/eclib.
  5. Schütt & Shioda, Elliptic surfaces, arXiv:0907.0298 — Shioda–Tate, Mordell–Weil lattices, everything in Lessons 78–82.
  6. Elkies, Three lectures on elliptic surfaces and curves of high rank, arXiv:0709.2908 — the record-hunting methodology, from the person who set the standard. Read this once you have finished Phase 7.
  7. Bober, arXiv:1112.1503 — the conditional rank bound.
  8. Park, Poonen, Voight, Wood, JEMS 21 (2019) — the boundedness heuristic.
  9. Diamond & Shurman, A First Course in Modular Forms — for Phase 6 in proper depth.
  10. Bhargava & Shankar, Ann. of Math. 181 (2015) and companions — average Selmer ranks, the foundation of the modern statistical picture.

Software to install

ToolBest atGet it
PARI/GPheights, 2-descent, L-functions, root numbers, everything numericbrew install pari pari-elldata
SageMatheverything; wraps PARI, eclib, FLINT; can call Magmaconda-forge or the macOS app
Magma4-/8-descent, quadric-intersection search, big Gröbnercommercial; the online calculator for small jobs
eclib / mwrankreference 2-descent implementationbundled with Sage
ratpointsfast direct point searchbundled with Sage / PARI
FLINT (with Arb)certified ball arithmeticbrew install flint
LMFDBlookup: ranks, generators, Selmer data, isogeny classeslmfdb.org, JSON API
Mathematicasymbolic families, Mestre's construction, Gröbner elimination
Four projects, roughly in order of effort
  1. Mestre's construction, symbolically. A weekend. Ten points from ten parameters (Lesson 84), then push to a family over $\mathbb{Q}(t)$ with Gröbner conditions (Lesson 85). Self-contained and immediately verifiable against PARI. Start here.
  2. The Mathematica ⟷ PARI package. A week. Lesson 94's skeleton, fleshed out with batched wrappers, error handling, and a test suite. You will use it constantly afterwards.
  3. The sieve harness. A month. Distributed Mestre–Nagao evaluation with CRT-selected residue classes, checkpointing, deduplication, and calibrated thresholds (Lesson 97). This is the compute-heavy stage nobody has packaged well, and a good one exists in nobody's public repository.
  4. The independence certificate in Lean 4. Open-ended, and genuinely novel. Lesson 90's mod-$p$ method on top of Mathlib's WeierstrassCurve. A machine-checked "rank $\ge k$" proof, achievable before Mordell–Weil or heights reach Mathlib, because the method needs neither. As far as anyone knows, nobody has done it.
Where the open problems are
  • Is Ш finite? Not known for a single curve of rank $\ge2$. Everything algorithmic hinges on it.
  • BSD for rank $\ge2$. No curve is known to satisfy it. Euler systems produce one dimension; nobody knows how to get two.
  • Is the rank bounded? PPVW predicts yes (ceiling 21); a century of records suggests no. No method would settle it.
  • An effective height bound for generators. Would immediately give a rank algorithm. Known conditionally; open unconditionally.
  • Generic rank past 18 over $\mathbb{Q}(t)$. The K3 ceiling. Breaking it would be the next Elkies-scale advance.

A closing note on what this course was for

You now have the whole map: what the rank is (Lesson 52), why it is hard (Lesson 64), how it is bounded from below (Lesson 50) and above (Lessons 60, 76), and how records are built (Phase 7). The mathematics is a century old in parts and weeks old in others.

The two things worth remembering when you start building:

Exercises

8.19 Reproduce a published rank-8 curve and verify it independently.

Solution
? \\ Pull a high-rank curve from the LMFDB or from Dujella's tables,
? \\ then run the full verifier from Lesson 98:
? read("verify.gp");
? \\ e.g. a rank-8 curve of moderate conductor:
? E = ellinit([0, 0, 1, -79, 342]);      \\ substitute a genuine rank-8 example
? R = ellrank(E, 2);
? G = select(P -> ellorder(E,P) == 0, R[4]);
? verifyrank(E[1..5], G, 100)
? verifymodp(E[1..5], G, 20)

Doing this once, end to end, on someone else's curve is the best possible check that you have understood the pipeline. If your verifier agrees with the published claim, you have working code; if it disagrees, you have learned something specific.

8.20 Pick one of the four projects and write down its first three concrete steps.

Solution

Example — Project 4 (Lean certificate):

  1. Install Lean 4 and Mathlib; locate Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean and read the WeierstrassCurve.Affine.Point API. Confirm you can state and evaluate the group law on a concrete curve over $\mathbb{F}_{101}$.
  2. Define the reduction map $E(\mathbb{Q})\to\tilde E(\mathbb{F}_p)$ for a curve with good reduction at $p$, and prove it is a group homomorphism. This is the only substantial mathematical step; expect it to be most of the work.
  3. Write a Decidable instance for "$\sum a_i\bar P_i=\mathcal{O}$ in $\tilde E(\mathbb{F}_p)$" and use native_decide (or a verified kernel computation) to check that the intersection of the relation lattices is trivial for a small worked example — say rank 3 on $y^2=x^3-7x+6$.

Then generalise: from rank 3 to rank $k$, from one prime to a list, and finally to a curve with large coefficients. The mathematical content does not change; only the arithmetic gets bigger.

8.21 Write down, in one paragraph each, the statements of the five theorems this course most depends on.

Solution

Mordell–Weil (Lesson 52). For $E$ over a number field $K$, $E(K)$ is finitely generated: $E(K)\cong\mathbb{Z}^r\times E(K)_{\text{tors}}$. The proof is weak Mordell–Weil (finiteness of $E(K)/mE(K)$, from finiteness of the class group and finite generation of units) plus a height descent argument.

Néron–Tate height (Lesson 47). $\hat h(P)=\lim h(2^nP)/4^n$ exists, differs from the naive height by $O(1)$, satisfies $\hat h(mP)=m^2\hat h(P)$ exactly, and vanishes precisely on torsion. It makes $E(\mathbb{Q})/\text{tors}$ a positive-definite lattice, which is what allows independence to be certified by a determinant.

Modularity (Lesson 70). Every $E/\mathbb{Q}$ of conductor $N$ corresponds to a weight-2 newform of level $N$ with the same $a_n$. This gives $L(E,s)$ its analytic continuation and functional equation, without which BSD cannot even be stated.

Shioda–Tate (Lesson 80). For an elliptic surface with section, $\rho(S)=2+\sum_v(m_v-1)+\operatorname{rank}\mathcal{E}(\overline k(t))$. It is the budget constraint governing every high-rank construction, and it is why one keeps the discriminant squarefree.

Néron specialisation (Lesson 83). For a non-constant family $\mathcal{E}/\mathbb{Q}(t)$, the specialisation $\mathcal{E}(\mathbb{Q}(t))\to\mathcal{E}_{t_0}(\mathbb{Q})$ is injective for all but a thin set of $t_0$. It is what makes "build the rank once, inherit it everywhere" legitimate.

End of course. Corrections and additions welcome — this is a living document.