-
-
Notifications
You must be signed in to change notification settings - Fork 657
Description
The core of the elliptic-curve isogeny functionality in Sage is from #5976 — almost 13 years old! — and quite a few things in the EllipticCurveIsogeny
class look somewhat dated by now.
In this patch, we make an effort to clean up ell_curve_isogeny.py
. Besides plenty of style improvements, the main changes are:
-
The documentation used to claim that only normalized, cyclic isogenies are supported. This is false for most of the codebase; these limitations only apply to a few selected algorithms (Kohel's formulas, Starks).
-
The
EllipticCurveIsogeny
class contained some unused member variables, and some whose design choices seemed a bit random at times. I've streamlined the fields used to store the data ofEllipticCurveIsogeny
; among other things, this means we can unify the implementation of.degree()
for allEllipticCurveHom
children. -
The
degree
parameter for theisogeny_codomain
method was unused; I've removed it. -
The
split_kernel_polynomial()
function appears to be equivalent to calling.radical()
on the polynomial, which also seems a little bit faster. -
The
.n()
method only raised aNotImplementedError
, but simply letting the call fall through to the parent class also fails gracefully. I've thus removed the specialized implementation. -
The
.get_{pre,post}_isomorphism()
methods won't really make sense once the corresponding (already deprecated) setters are removed. I added a remark to that effect.
Depends on #33582
Depends on #33214
CC: @shumow @JohnCremona @categorie @defeo @fchapoton @tscrim @videlec @slel @seblabbe
Component: elliptic curves
Author: Lorenz Panny
Branch/Commit: 2833869
Reviewer: John Cremona, Kwankyu Lee
Issue created by migration from https://trac.sagemath.org/ticket/33619