Opened 7 years ago
Closed 7 years ago
#18662 closed enhancement (fixed)
Implement (semi)global minimal models for elliptic curves over number fields with h>1
Reported by:  John Cremona  Owned by:  

Priority:  major  Milestone:  sage6.8 
Component:  elliptic curves  Keywords:  Weierstrass models 
Cc:  Merged in:  
Authors:  John Cremona  Reviewers:  Chris Wuthrich 
Report Upstream:  N/A  Work issues:  
Branch:  4dc4d86 (Commits, GitHub, GitLab)  Commit:  4dc4d86b76a32a53c2e5cddb6711a5c2d2c673be 
Dependencies:  Stopgaps: 
Description
Whe E is an elliptic curve defined over a number field K of class number 1, then it has a global minimal model, and we have a method to compute it, namely E.global_minimal_model().
In the general case global minimal models may or may not exist. This ticket will introduce a method E.has_minimal_model() which will determine this, and to find it when it does  one cannot proceed one prime at a time as in the h=1 case. Moreover, when there is no global minimal model the obstruction is that a certain ideal class is not principal, and we will provide a function which returns that class. When the obstruction is not trivial there exist models which are minimal at all primes except at one prime in that class where the discriminant valuation is 12 more than the minimal valuation, and we provide a method returning such a model.
The above functionality is implemented using work of Kraus which gives a condition for when a pair of number field elements c4, c6 belong to an integral Weierstrass model. This occurs if and only if it occurs locally at each prime, and only primes dividing 2 or 3 are hard to deal with. In order to compute the corresponding integral model one needs to combine together the local transformations implicit in Kraus into a single global one.
I have written code which does this and tested it on thousands of curves defined over real quadratic fields of class numbers between 2 and 5, in order to have nicer models for these curves in the LMFDB.
Change History (11)
comment:1 Changed 7 years ago by
Branch:  → u/cremona/ticket/18661 

comment:2 Changed 7 years ago by
Branch:  u/cremona/ticket/18661 → u/cremona/ticket/18662 

Commit:  → b7e3b61cf46a9664588ecf7574bff6bde16b01f4 
comment:3 Changed 7 years ago by
Status:  new → needs_review 

Notes for reviewers: The first two commits add small functionality for number fields (solving CRT systems modulo pairwise coprime ideal lists) and class groups (get a prime representing any ideal class). The first could be extended to the nonpairwise coprime case, with suitable error being raised if there is no solution, but I did not need that.
The main commit is the third one which adds a new file kraus.py, implementing just about everything in the Kraus paper cited there: see the docstring at the top of that file for details. The new functionality for elliptic curves over number fields is achieved by adding some methods, and enhancing the existing method global_minimal_model() in ell_number_field.py.
The examples used in the doctests are taken from the LMFDB. The code here has been run on around a hundred thousand curves over real quadratic fields (during which time bugs were found and fixed). Not many higher degree fields have been tested.
comment:4 Changed 7 years ago by
Status:  needs_review → needs_work 

comment:5 Changed 7 years ago by
Commit:  b7e3b61cf46a9664588ecf7574bff6bde16b01f4 → 4dc4d86b76a32a53c2e5cddb6711a5c2d2c673be 

Branch pushed to git repo; I updated commit sha1. New commits:
4dc4d86  #18662: isogeny codomains automatically minimised

comment:6 Changed 7 years ago by
Status:  needs_work → needs_review 

The last commit applied the global minimal model reduction to the codomain of any isogeny over a number field (previously this was done over QQ only), which resulted in a lot of doctest changes, not just the changes of models but the resulting reordering of the curves in an isogeny class (which has no implicit meaning and s done using lexicographic order on the ainvariants). This most of the changes in this last commit are trivial.
However one of the high degree examples in ell_number_field now takes too long. Either that example now has to be removed (not tested), or we should make this automatic minimization just an option. Still, the code needs review.
comment:7 followup: 8 Changed 7 years ago by
This will allow to close the now duplicate #11697. Not sure if I will get to look at it over the weekend. Monday is more certain.
comment:8 Changed 7 years ago by
comment:9 followup: 10 Changed 7 years ago by
Reviewers:  → Chris Wuthrich 

Status:  needs_review → positive_review 
All tests pass. The code looks good (of course) and this should definitely go in ! Thanks John for the work.
comment:10 Changed 7 years ago by
Replying to wuthrich:
All tests pass. The code looks good (of course) and this should definitely go in ! Thanks John for the work.
Thanks  sorry there were so many lines to look at (file size doubled at least adding docstrings and tests).
comment:11 Changed 7 years ago by
Branch:  u/cremona/ticket/18662 → 4dc4d86b76a32a53c2e5cddb6711a5c2d2c673be 

Resolution:  → fixed 
Status:  positive_review → closed 
New commits:
#18662: added solve_CRT() method for number fields
added representative_prime() method for number field ideal classes
#18662: implement elliptic curve minimal models when h>1