-
-
Notifications
You must be signed in to change notification settings - Fork 419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Saturation for MW-groups of elliptic curves over number fields. #8829
Comments
comment:1
Some dependance on #8828. |
comment:2
I have had a quick look and will go through this in more detail later (after #8828 is completed, probably). I spent a long time on my C++ implementation of this (over QQ but the algorithm is general) so am quite familiar with the details. Here are two references you should give: [1] S. Siksek "Infinite descent on elliptic curves", Rocky Mountain J of M, Vol 25 No. 4 (1995), 1501-1538. [2] M. Prickett, "Saturation of Mordell-Weil groups of elliptic curves over number fields", U of Nottingham PhD thesis (2004), http://etheses.nottingham.ac.uk/52/. Martin Prickett implemented this in Magma, but the code was very slow and hard to read so it never got incorporated into Magma releases. Incidentally, it was for this that I implemented group structure for curves over GF(q) in the first place! In my C++ implementation I cache a lot of the information of this group structure so that when you do p-saturation for larger and larger p, the structures are already there. A good example is to take one of those curves of very high rank: I think I once successfully p-saturated the rank 24 curve at all p < Another point which might be useful over number fields: it suffices to use degree one primes to reduce modulo. |
Attachment: 8829-ec-nf-sat.patch.gz |
comment:3
Replying to @JohnCremona:
Ah, those look like good references to read too :).
The way I do it is consider many p at once, and for each curve over GF(q) I see which primes in my set it could help with, though this won't scale as far. I'm sure there's still lots of room for improvement.
That reminds me--I was wondering if there's any way to go from min(h(P)) to a bound on the regulator for rank > 1.
Good point. Those get pretty rare for large degree number fields though, right? |
comment:4
You might also like to look at my C++ code which is in eclib, in src/qcurves. I can point to the right files if it is not clear. In case you wonder, "TLSS" stands for "Tate-Lichtenbaum-Samir_Siksek" since I use the TL map when the p-torsion in E(GF(q)) is not cyclic and Samir's original method when it is. Samir only used reduction modulo primes where p exactly divided the order, and in particular for which the reduction had cyclic p-part. But Martin and I discovered that this can fail when there is a p-isogeny. Here, fail means in the sense that there can exist points which are not multiples of p in E(QQ) but which map to zero in E(GF(q))/p for all q. In MP's thesis he proves that this cannot happen if you use all q, or all but a finite number, or all but a finite number of degree 1 primes, .... some of these results we then found had been proved elsewhere (3 or 4 times, independently, within 3 or 4 years!). But it can happen if you leave out the q for which the quotient has non-cyclic p-part. |
comment:5
Patch applies fine to 4.4.1 and tests pass. This functionality is badly needed! We now have heights for points on curves defined over number_fields Line 439 uses a function self.height_function() which does not exist. In the rank one code: when large primes p (say, over 20!) are being The function list_of_multiples(P,n) duplicated the generic function I don't like the loop through all linear combinations for small The main code with reduction etc looks fine to me (but I did not check The gens function for E(K) when E is defined over Q and [K:Q]=2 looks
This is caused as follows: The height matrix is [0] with det=0 but Most of the above is easy to deal with. The hard part is computing a |
Author: Robert Bradshaw |
Reviewer: John Cremona |
comment:6
Thank you for all your input. I probably won't fix and polish this up before finishing my thesis, but at the latest we should be able to get it done during the workshop at MSRI next month. |
comment:7
Replying to @robertwb:
OK -- looking forward to it! I'll take a look at #8828 by then as well. |
comment:8
Since rwb is now busy at Google, and I want this functionality, I am now implementing the changes I suggested above! |
comment:9
I made a separate ticket for the regulator functions. See #9372. |
comment:10
How is this going John? It seems to have been awhile.... |
comment:11
See #12509: until we can fix the height computation, saturation cannot be carried out properly. It's still on my to-do list though. |
comment:12
Replying to @JohnCremona:
#12509 is now up for review. |
Dependencies: #8828 |
comment:75
I hope I got it right this time. The correct branch is public/8829 and I basically redid the edits I had already done this morning on the wrong branch. Last 10 new commits:
|
Changed branch from u/cremona/8829 to public/8829 |
Reviewer: David Roe, Kiran Kedlaya, Frédéric Chapoton |
comment:76
It looks like you've addressed everything. I ran all tests and checked that the loop in comment 5 is no longer a problem. |
comment:77
Thanks a lot! This ticket was opened in 2010, so I'll be celebrating. Now, if any of you would like to head on over to #22345... |
comment:78
Very well, and I share your joy, but you introduced a .next(), which is not compatible with python3 (see patchbot plugin report). To be fixed in a later ticket, please. |
comment:79
That's a pity I thought the next () was rather neat. You can fix it here if you want. |
comment:80
no, no, let us wait and do that later |
comment:81
By the way, John, could you tell LMFDB people about #23671, please ? |
Branch pushed to git repo; I updated commit sha1 and set ticket back to needs_review. New commits:
|
comment:83
Replying to @fchapoton:
Isn't it just this one-line change? If so, no reason to postpone it... |
comment:84
Looks good to me! |
Changed branch from public/8829 to |
Changed commit from |
comment:86
This is causing doctest failures: #23840. |
comment:87
I'm pretty certain it will be the usual nonsense of mathematically equivalent outputs. I'll look at #23840 and judge properly. |
Implementation of saturation of points on elliptic curves over number fields. Original patch by Robert Bradshaw in 2010, refactored and made into a git branch by John Cremona in 2015.
I also implemented the simple case of E.gens() for E(K) when E/Q and [K:Q] = 2.
CC: @pjbruin @kedlaya
Component: elliptic curves
Keywords: saturation
Author: Robert Bradshaw, John Cremona
Branch:
ae6b11c
Reviewer: David Roe, Kiran Kedlaya, Frédéric Chapoton
Issue created by migration from https://trac.sagemath.org/ticket/8829
The text was updated successfully, but these errors were encountered: