All published worksheets from http://sagenb.org
Image: ubuntu2004
We choose an elliptic curve E:
We choose a Heegner discriminant for E:
With the choice of a Heegner discriminant, -3, we list possible Kolyvagin primes:
We define the field L=Q(E[2]):
Indeed, the 2-division polynomial of E factors completely over L:
We use Robert Miller's awesome number field Selmer group function!
The key difficulty is implementing the L-Selmer group as a vector space. Robert Miller's function only gives a basis as elements of L--we need the structure of the actual group.
Two functions: this one goes from a vector to a Selmer class.
This one goes the opposite way. It is by far the most time-consuming operation here.
Here we learn the Galois action on 2-torsion points.
W represents the tensor product vector space.
Functions for dealing with the tensor product:
Now we can write the Galois generators as matrices. They are big, but Sage handles them beautifully.
Our problem is reduced to finding the common Eigenspace of these two matrices.
We have bounded the Selmer group inside a group of size 4. Now finding it exactly is a matter of checking a modified local condition at primes above 2. However, we cheat our way out of this process using a different property of the standard Selmer group:
The first nonzero element in the list above is the true Selmer generator. The others fail (in calculations not shown here). Hence the 2-Selmer group has rank 1, and so does E!
Now let's try a modified Selmer group, using the Kolyvagin prime 17.
To narrow down this group of size 8, we must check the transverse condition at primes above 17. The function below will do this: