-
-
Notifications
You must be signed in to change notification settings - Fork 553
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
composite elliptic-curve isogenies #32744
Comments
Dependencies: #32502 |
Author: Lorenz Panny |
This comment has been minimized.
This comment has been minimized.
Commit: |
Branch pushed to git repo; I updated commit sha1. New commits:
|
This comment has been minimized.
This comment has been minimized.
Branch pushed to git repo; I updated commit sha1. New commits:
|
This comment has been minimized.
This comment has been minimized.
comment:7
I've been using this code privately for a while now and it's very useful to me. I'm sure it would also be useful to others who work on similar things, so I think it would be really nice to get this into the 9.5 release. Can I convince anyone to review? (To reemphasize, the code in this ticket is marked experimental and explicitly opt-in. The changes in the dependency #32502 should be strictly backwards compatible as well. Therefore, applying this shouldn't cause any real harm even if things are terribly broken.) |
comment:8
I am looking at it right now. If I do have suggestions, I'll try hard to make it so that they can be implemented in a later ticket. Thanks for doing this. |
comment:9
In the richcmp method, the code for curves over number fields does not do what the docstring says, and as written returns True/False if for just one point of infinite order (defined over the base field or a quadratic extension) the maps have the same image. I don't think this is what is intended. How about: test a whole lot of random points, return False if they disagree on any, otherwise (if all the points pass this) do the harder work of comparing rational maps. I think the number of points to test should depend on the degree, 100 is rather overkill since over number fields it is very unlikely to see large degrees (the record in the LMFDB now is 147, see http://www.lmfdb.org/EllipticCurve/6.6.453789.1/1.1/a/). I should 10 would be plenty (before reverting to the exact test). Task for the future: in computing the isogeny class C of an elliptic curve E over QQ, or over a number field, I only use prime degree isogenies, so while C.matrix() shows the full matrix of all pairwise degrees, C.isogenies() has a 0 (just a placeholder) in position (i,j) when the isogeny from the i'th to the j'th curve is not of prime degree. Using this new functionality we'll be able to fill those in too. But not on this ticket. |
comment:10
Thank you, John! Replying to @JohnCremona:
My reasoning was that the isogenies |
comment:11
Your are certainly right, apologies for not seeing that. I had thought that you were avoiding points of finite order just to stay away from the kernel. It would have been nice to have had a comment to the effect that "if two isogenies agree on a point of infinite order then they must be equal", just as you explained, but never mind. |
Reviewer: John Cremona |
Changed keywords from none to elliptic curve isogenies |
comment:13
I only looked at the diffs for this ticket. So I will go and look at the dependent ticket #32502 as well (probably not today though). |
Changed branch from public/composite_elliptic_curve_isogenies to |
Changed commit from |
Changed author from Lorenz Panny to Lorenz Panny, Lukas Zobernig |
This patch introduces two important improvements for isogeny-minded users:
Implement
EllipticCurveHom_composite
, a type of elliptic-curve morphism that's fundamentally a formal composite map, but designed to behave almost exactly likeEllipticCurveIsogeny
. Leaving the isogeny decomposed can be exponentially more efficient in some scenarios (such as in cryptography).Implement "factored" isogenies, that is, construction of an isogeny from a smooth-order kernel subgroup in time logarithmic in the degree (whereas
EllipticCurveIsogeny
is linear in the degree).The new code is marked as experimental and not used anywhere by default, but adventurous users can opt-in by calling
EllipticCurveHom_composite.make_default()
or passingalgorithm="factored"
toE.isogeny()
. Changes to the existing codebase are intentionally kept minimal.Here's a diff without the dependency:
Most of the algorithms are straightforward, except perhaps for equality testing: This relies on the fact that distinct isogenies cannot act the same on "too many" points (the bound is four times the degree). See also #31850.
Depends on #32502
CC: @defeo @JohnCremona @loefflerd
Component: elliptic curves
Keywords: elliptic curve isogenies
Author: Lorenz Panny, Lukas Zobernig
Branch:
72ab0b8
Reviewer: John Cremona
Issue created by migration from https://trac.sagemath.org/ticket/32744
The text was updated successfully, but these errors were encountered: