-
-
Notifications
You must be signed in to change notification settings - Fork 399
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
Elliptic curves with CM over number fields fail to find all isogenies #36780
Comments
Fixes sagemath#36780. For elliptic curves over number fields, with j-invariant 0 and 1728, the function isogeny_degrees_cm was forgetting to multiply a degree bound by 3 or 2 respectively (half the number of units), resulting in some isogenies being missed. - [ x] The title is concise, informative, and self-explanatory. - [ x] The description explains in detail what this PR is about. - [ x] I have linked a relevant issue or discussion. - [ x] I have created tests covering the changes. - [ x] I have updated the documentation accordingly. URL: sagemath#36786 Reported by: John Cremona Reviewer(s): Frédéric Chapoton
Fixes sagemath#36780. For elliptic curves over number fields, with j-invariant 0 and 1728, the function isogeny_degrees_cm was forgetting to multiply a degree bound by 3 or 2 respectively (half the number of units), resulting in some isogenies being missed. - [ x] The title is concise, informative, and self-explanatory. - [ x] The description explains in detail what this PR is about. - [ x] I have linked a relevant issue or discussion. - [ x] I have created tests covering the changes. - [ x] I have updated the documentation accordingly. URL: sagemath#36786 Reported by: John Cremona Reviewer(s): Frédéric Chapoton
Fixes sagemath#36780. For elliptic curves over number fields, with j-invariant 0 and 1728, the function isogeny_degrees_cm was forgetting to multiply a degree bound by 3 or 2 respectively (half the number of units), resulting in some isogenies being missed. - [ x] The title is concise, informative, and self-explanatory. - [ x] The description explains in detail what this PR is about. - [ x] I have linked a relevant issue or discussion. - [ x] I have created tests covering the changes. - [ x] I have updated the documentation accordingly. URL: sagemath#36786 Reported by: John Cremona Reviewer(s): Frédéric Chapoton
Fixes sagemath#36780. For elliptic curves over number fields, with j-invariant 0 and 1728, the function isogeny_degrees_cm was forgetting to multiply a degree bound by 3 or 2 respectively (half the number of units), resulting in some isogenies being missed. - [ x] The title is concise, informative, and self-explanatory. - [ x] The description explains in detail what this PR is about. - [ x] I have linked a relevant issue or discussion. - [ x] I have created tests covering the changes. - [ x] I have updated the documentation accordingly. URL: sagemath#36786 Reported by: John Cremona Reviewer(s): Frédéric Chapoton
Fixes sagemath#36780. For elliptic curves over number fields, with j-invariant 0 and 1728, the function isogeny_degrees_cm was forgetting to multiply a degree bound by 3 or 2 respectively (half the number of units), resulting in some isogenies being missed. - [ x] The title is concise, informative, and self-explanatory. - [ x] The description explains in detail what this PR is about. - [ x] I have linked a relevant issue or discussion. - [ x] I have created tests covering the changes. - [ x] I have updated the documentation accordingly. URL: sagemath#36786 Reported by: John Cremona Reviewer(s): Frédéric Chapoton
The curve is defined by This is all correct, the class has size 6 and 3- and 5- isogenies suffice to fill it. But the class contains two curves defined over Q for example and computing the isogeny class starting with E1 does not find the whole class as it misses 5-isogenies: sage: len(E1.isogeny_class()) The problem is in the function possible_isogeny_degrees_cm(): Here, "downward" primes are sgrees of isogenies to curves with a strictly smaller endomorphism ring and in this case should inlude 5. I cannot right now see the error in the code but am building the current development branch and will sort this out. |
Sorry for the noise: I was testing on an old Sage, there is no problem now (10.4.beta4). |
Steps To Reproduce
Define an elliptic curve E over a real quadratic number field, where j(E) = 0, compute E.isogeny_class(), and look at the degrees it finds. Example:
sage: L5. = NumberField(x^2-5)
sage: F = EllipticCurve(L5,[0,-4325477943600*r5-4195572876000])
sage: F.isogeny_class().matrix()
[1 3]
[3 1]
Expected Behavior
The matrix should include isogenies of degree 5 (and more).
Actual Behavior
It only find 3-isogenies (see above).
Additional Information
As reported to sage-support: https://groups.google.com/g/sage-support/c/1BfJIGIlb0M
The problem is in the function sage.schemes.elliptic_curves.isogeny_class.isogeny_degrees.cm, where the degree bound called n there needs to be multiplied by 3 for j=0, d=-3 (and by 2 for j=1728, d=-4).
A PR is in preparation. Only curves with j=0 or j=1728 are affected (and not all these).
Environment
Checklist
The text was updated successfully, but these errors were encountered: