== To-do list for elliptic curves in Sage ==

This is a list of things (small or large) which came up during SD22 at MSRI as deserving to be fixed or implemented in Sage.

   -- Note: Items 1,2, and 4 are all *broken* until we resolve the bug with simon_two_descent. That is my project now since computing ranks (and descending to $\mathbb{Q}$: thanks Erin!) will be important in the Elkies-Watkins search over $\mathbb{Q}[i]$. (Jeremy)


   1.  Regulators over number fields.   NB over $\mathbf{Q}$ there are two functions, regulator() and regulator_of_points(), and it is the second of these which can be trivially implemented.  Just copy the code from ell_rational_field.py into ell_number_field.py; also copy height_pairing_matrix().  In each case I mean "move" rather than "copy".  Then in each case add doctests with a couple of examples over number fields.  The other function (regulator) is something which depends on having an actual MW basis, so is not for now.  See ticket #9372: JEC has uploaded a patch which is ready for review. (Aly and Jeremy -- reviewed, assuming just the doctest needed changed, positive review)

   2.  Linear dependencies of points over number fields (and over Q), modulo torsion.  The  attached file [[attachment:mwnf.m]] has Magma code for this (written by me) which may be useful, though you will have to find the Sage equivalent of LLLgram().  That  function takes a gram matrix (of not-necessarily full rank) and returns a reduced gram matrix and a matrix in GL(n,Z) and the rank r. (Aly, Jeremy, Jim)  $\mathbf{Note:}$ the Sage equivalent of LLLgram() is LLL_gram() which is a method for integer matrices. Second Note: Pari supports LLL_gram for real matrices as well, which we apparently need. There is already a wrapper, but we should add a member method to real matrices (I don't know exactly where this should go yet, haven't looked -- Jeremy).


   3.  Finish ticket #8829 on saturation over number fields.  [This depends on item 1.]   Probably a job for JEC since he reviewed robertwb's patch and suggested changes, which he will now implement.

   4.  Kilford's rank function patch #9342:  completed needs review. (Aly and Jeremy)(Done, has a positive review)

   5.  Integral points over number fields: ongoing project work re-implementing Nook's Magma code. - This code is done, and output matches the Magma code (and, over Q, it matches what is already implemented in sage). (Jackie and Rado)[[attachment:intpts.sage]]

   6.  $S$-integral points over number fields: ongoing project work, based on Smart-Stephens and taking as a model the code over $\mathbb{Q}$ for $S$-integral points.

   7.  $S$-class groups: on going project work.

   8.  K-Selmer groups esp.  $K(S,4)$ and $K(S,2)_4$: ongoing project work.

   9.  All curves with e.g.r.: putting together a lot of the above!  When the time comes, I have some complete lists over imaginary quadratic fields of class number 1 which will be helpful.

   10.  All curves with e.g.r. outside $S$ (using most of the above again)

   11.  Iterating through number field elements by height;   special case for integers;   simpler version not by height.  Ongoing project work.

   12.  Heights on projective space over number fields (Jackie's code: make into a ticket+patch)

   13.  Elkies-Watkins over number fields -- post what code you have by the end of the week.
        -- This works very well now. I am working to get access to sage.math to run it on that server (rather than on my computer at home). I need to find a good place, if there is one, to add this into the sage library. Maybe in a miscellaneous file somewhere. (Jeremy)

   14.  Implement a $2$-torsion rank function over number fields.  Jamie is working on this: #9371. Patch is up, needs review. Generalized to any field at Sage Days 29. Positive Review.

   15.  Given an elliptic curves defined over $K$, determine whether it is isomorphic over $K$ to a curves defined over $\mathbb{Q}$.  [Get the j_invariant, decide if it is rational, if so construct a curve over Q with that j-invariant, base change itback to K, and test for the quadratic twist.  All these steps are implemented already.  See attached example [[attachment:eg.sage]] ]  (Erin - patch posted #9384)
          *I've fixed this function, descend_to. It now returns the correct twist for the general case and works when j=0,1728.
     However, I haven't posted a replacement patch yet because I want the output to be an elliptic curve that sage recognizes is defined over the subfield K of L.
     This will hopefully be fixed by the end of the day.
          *Update: Fixed!