Opened 4 years ago

Closed 4 years ago

#18662 closed enhancement (fixed)

Implement (semi-)global minimal models for elliptic curves over number fields with h>1

Reported by: cremona Owned by:
Priority: major Milestone: sage-6.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) 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 4 years ago by cremona

  • Branch set to u/cremona/ticket/18661

comment:2 Changed 4 years ago by cremona

  • Branch changed from u/cremona/ticket/18661 to u/cremona/ticket/18662
  • Commit set to b7e3b61cf46a9664588ecf7574bff6bde16b01f4

New commits:

b42a986#18662: added solve_CRT() method for number fields
0d32218added representative_prime() method for number field ideal classes
b7e3b61#18662: implement elliptic curve minimal models when h>1

comment:3 Changed 4 years ago by cremona

  • Status changed from new to 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 non-pairwise 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 4 years ago by cremona

  • Status changed from needs_review to needs_work

comment:5 Changed 4 years ago by git

  • Commit changed from b7e3b61cf46a9664588ecf7574bff6bde16b01f4 to 4dc4d86b76a32a53c2e5cddb6711a5c2d2c673be

Branch pushed to git repo; I updated commit sha1. New commits:

4dc4d86#18662: isogeny codomains automatically minimised

comment:6 Changed 4 years ago by cremona

  • Status changed from needs_work to 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 a-invariants). 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 follow-up: Changed 4 years ago by wuthrich

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 in reply to: ↑ 7 Changed 4 years ago by cremona

Replying to wuthrich:

This will allow to close the now duplicate #11697.

Sorry I missed that ticket -- I'm sure I looked (and see that I already did comment on it).

Not sure if I will get to look at it over the weekend. Monday is more certain.

That would be great if you could!

comment:9 follow-up: Changed 4 years ago by wuthrich

  • Reviewers set to Chris Wuthrich
  • Status changed from needs_review to positive_review

All tests pass. The code looks good (of course) and this should definitely go in ! Thanks John for the work.

comment:10 in reply to: ↑ 9 Changed 4 years ago by cremona

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 4 years ago by vbraun

  • Branch changed from u/cremona/ticket/18662 to 4dc4d86b76a32a53c2e5cddb6711a5c2d2c673be
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.