Skip to content
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

sums of elliptic-curve morphisms #36637

Merged

Conversation

yyyyx4
Copy link
Member

@yyyyx4 yyyyx4 commented Nov 3, 2023

Here we add a new EllipticCurveHom child class representing formal sums of elliptic-curve morphisms with the same domain and codomain. One of the main features is a conversion function from formal sums to a more explicit representation of the same morphism as an isogeny chain, which will come in handy for endomorphism-ring-related computations.

In the process, we also generalize point_of_order() from primes to prime powers.

There is certainly a lot of potential for optimizations; some ideas are mentioned in the code. Since I think it's fair to say that this version is already much better than what we currently have for sums of isogenies (i.e., nothing), I'd suggest merging this as is and dealing with bottlenecks later as they arise.

Cc: @JohnCremona @defeo @GiacomoPope @remyoudompheng

@yyyyx4 yyyyx4 force-pushed the public/sums_of_elliptic_curve_morphisms branch from b717065 to 5de7eb6 Compare November 3, 2023 13:57
@JohnCremona
Copy link
Member

I can review this, but not until Tuesday, sorry. Feel free to proceed without me!

Copy link
Member

@JohnCremona JohnCremona left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have made a few comments, at least one of which requires a change, and will think further about the question of computing deg(phi+psi) more directly.

src/sage/schemes/elliptic_curves/ell_point.py Show resolved Hide resolved
src/sage/schemes/elliptic_curves/hom_sum.py Outdated Show resolved Hide resolved
src/sage/schemes/elliptic_curves/hom_sum.py Show resolved Hide resolved
src/sage/schemes/elliptic_curves/hom_sum.py Show resolved Hide resolved
B += phi.degree() + 2*sqrt(B * phi.degree())
return integer_floor(B)

def _compute_degree(self):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel sure that there must be a way to compute the degree of the sum of two morphisms; if so you caould call it repeateldy here. But I'll need to think about that a bit more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose what definitely works is the identity $\deg(\varphi+\psi) = \deg(\varphi)+\deg(\psi)+\mathrm{tr}(\varphi\widehat\psi)$, now that we have #35546. But there should be cases where computing multiple such trace pairings will certainly be slower than the current one-shot method, so this might require some thinking...

@JohnCremona
Copy link
Member

JohnCremona commented Nov 7, 2023 via email

@JohnCremona
Copy link
Member

JohnCremona commented Nov 7, 2023 via email

@JohnCremona
Copy link
Member

JohnCremona commented Nov 7, 2023 via email

Copy link

Documentation preview for this PR (built with commit fbe441e; changes) is ready! 🎉

@JohnCremona
Copy link
Member

All the suggestions I made in my review and follow-ups have been implemented (or corrected), so this can have a positive review from me assuming that tests pass.

@yyyyx4
Copy link
Member Author

yyyyx4 commented Nov 12, 2023

Thanks a lot, @JohnCremona! The failures appear to be unrelated to these changes.

vbraun pushed a commit to vbraun/sage that referenced this pull request Dec 4, 2023
    
Here we add a new `EllipticCurveHom` child class representing formal
sums of elliptic-curve morphisms with the same domain and codomain. One
of the main features is a conversion function from formal sums to a more
explicit representation of the same morphism as an isogeny chain, which
will come in handy for endomorphism-ring-related computations.

In the process, we also generalize `point_of_order()` from primes to
prime powers.

There is certainly a lot of potential for optimizations; some ideas are
mentioned in the code. Since I think it's fair to say that this version
is already much better than what we currently have for sums of isogenies
(i.e., nothing), I'd suggest merging this as is and dealing with
bottlenecks later as they arise.

Cc: @JohnCremona @defeo @GiacomoPope @remyoudompheng
    
URL: sagemath#36637
Reported by: Lorenz Panny
Reviewer(s): John Cremona, Lorenz Panny
@vbraun vbraun merged commit 2b9f3e0 into sagemath:develop Dec 6, 2023
21 of 22 checks passed
@mkoeppe mkoeppe added this to the sage-10.3 milestone Dec 6, 2023
@yyyyx4 yyyyx4 deleted the public/sums_of_elliptic_curve_morphisms branch December 6, 2023 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants