I am trying to construct the isogeny described in Example 2.5 of this paper in SageMath, but as far as I can tell (say from this post), there is no way to directly construct an isogeny from its rational maps.
The suggested workaround in the second linked post is to pass the kernel polynomial as a lone parameter into E.isogeny()
, but I am getting an error when trying that. Here's a MWE showing the error:
sage: R.<x,y,z,t> = PolynomialRing(GF(43), 4)
sage: E1 = EllipticCurve(y^2 - (x^3 - 14*x^2 - 6*x + 17))
sage: f = (x-37)^2*(x-40)^2
sage: E1.isogeny(f)
and I get an error saying that I have invalid parameters for the isogeny constructor. Where is this error coming from, and how can I construct the isogeny?
Sage doesn't accept multivariate polynomials as kernel polynomials. Use .univariate_polynomial()
to convert f:
sage: R.<x,y,z,t> = PolynomialRing(GF(43), 4)
E1 = EllipticCurve(y^2 - (x^3 - 14*x^2 - 6*x + 17))
sage: f = (x-37)^2*(x-40)^2
sage: E1.isogeny(f.univariate_polynomial())
Note however that that particular polynomial does not define an isogeny.