-
-
Notifications
You must be signed in to change notification settings - Fork 482
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
EllipticCurveIsogeny raising a value error that an isogeny doesn't exist while it most certainly does! #21883
Comments
comment:1
Weird. I thought this used to work, but now I am having a very hard time finding an example that does. I managed to compute this one (a multiplication endomorphism):
but many similar examples fail. Note that "normalized" is very important here:
Given two isogenous elliptic curves, Sage only knows how to compute an isogeny between them if the models are normalized (isogeny sends invariant differential of codomain onto invariant differential of domain). Actually, I think the best algorithm to compute non-normalized isogenies between elliptic curves in characteristic 0 is still factoring the division polynomial, which Sage does not implement. There are better algorithms for finite fields (Couveignes, Lercier-Sirvent), but they are a pain to implement. Note that you can do better if your goal is to compute the dual: choose enough points (about 2 times deg φ), for each of them compute φ(P) and [deg φ]P, and deduce φ by interpolation. Sadly, Sage has many specialized algorithms for isogenies, but is severly lacking generic ones. |
comment:2
Since this phi is normalised this is just a plain Bug. The sentence "Actually, ..." is extremely misleading. Sage absolutely does implement the computation of isogenies via finding appropriate factors of the division polynomial. I spent a long time (and supervised part of a PhD thesis) showing how to do this -- picking an appropriate subset of the factors of the division polynomial is not trivial. But is is also very slow which is why the rest of the aforementioned thesis which is all implemented in Sage -- has been here for years now -- does this for all isogenies of prime degree p such that Sage's isogeny capabilities are in my opinion very good. It is the only software in which one can compute isogenies as easily, or compute complete isogeny classes over arbitrary number fields -- there are hundreds (or more) lines devoted to this in several files. I implemented all that because I needed it in my own work (e.g. to compute the full isogeny classes for all the elliptic curves in the LMFDB, which are defined over number fields of degree up to 6). If other people need different capabilities, for example implementations which work better over large finite fields, they are welcome to implement them. But the fact that not everything of this type has been implemented does not imply that "Sage is severely lacking generic [algorithms]". I strongly dispute that statement, even without "severely". Constructing isogenies given only domain and codomain and degree is something which is important for elliptic curves over finite fields because of elliptic curve cryptography, but much less so over number fields. So someone else can implement it. Now I will put on my to-do list to actually fix the bug which leads to the reported behaviour. |
comment:3
Hi John. I'm sorry if you got offended by my comment. It's 3 years old, I did not know about your code for grouping factors of the division polynomial back then (if it was already in Sage at the time). I realize now that my diagnosis was misguided: indeed,
I haven't really had any time to do "maths" developement in Sage in the past 3 years, but I hope things to change soon... I'll open a separate ticket for my suggestion of falling back to the generic code when the models are not normalized. |
comment:4
No worries -- I just did not want the misleading impression to go uncorrected. The code I mentioned went in soon after Kimi's thesis was finished in 2013. |
I had forgotten all about this but it really needs to be fixed. Trying all curves of conductor <1000 and all prime degrees of isogeny, the ones where computing the dual fails are these (only degree 3 for some reason): 27a1, phi of degree 3, dual fails |
This appears to be a precision issue in |
…eny_stark() For the specific case of curves with $j=0$ and isogeny degree $\ell=3$, the `compute_isogeny_stark()` function sometimes fails to find an isogeny even though it exists. In this simple patch we increase the precision of the power-series arithmetic in `compute_isogeny_stark()` by one digit, which makes the computation succeed for this special case too. Fixes sagemath#21883. URL: sagemath#36909 Reported by: Lorenz Panny Reviewer(s):
…eny_stark() For the specific case of curves with $j=0$ and isogeny degree $\ell=3$, the `compute_isogeny_stark()` function sometimes fails to find an isogeny even though it exists. In this simple patch we increase the precision of the power-series arithmetic in `compute_isogeny_stark()` by one digit, which makes the computation succeed for this special case too. Fixes sagemath#21883. URL: sagemath#36909 Reported by: Lorenz Panny Reviewer(s):
…eny_stark() For the specific case of curves with $j=0$ and isogeny degree $\ell=3$, the `compute_isogeny_stark()` function sometimes fails to find an isogeny even though it exists. In this simple patch we increase the precision of the power-series arithmetic in `compute_isogeny_stark()` by one digit, which makes the computation succeed for this special case too. Fixes sagemath#21883. URL: sagemath#36909 Reported by: Lorenz Panny Reviewer(s):
…eny_stark() For the specific case of curves with $j=0$ and isogeny degree $\ell=3$, the `compute_isogeny_stark()` function sometimes fails to find an isogeny even though it exists. In this simple patch we increase the precision of the power-series arithmetic in `compute_isogeny_stark()` by one digit, which makes the computation succeed for this special case too. Fixes sagemath#21883. URL: sagemath#36909 Reported by: Lorenz Panny Reviewer(s):
The above might seem like a silly example, since I am asking for an object I already know. But it is the underlying problem of why:
is also broken.
Component: elliptic curves
Issue created by migration from https://trac.sagemath.org/ticket/21883
The text was updated successfully, but these errors were encountered: