# How to construct an isogeny [i] such that [i]^2= -1?

Let $E: y^2 = x^3 + x$ be an elliptic curve over a field $K$ of characteristic $p\neq 2, 3$. It is well known that the map $[i]$ defined as below is an endomorphism on $E$ and $[i]^2=-1$

$[i]:(x,y)\mapsto(-x, iy)$

I'm wondering how to construct this isogeny on sage when $K$ is a finite field. If I can define an isogeny by giving its rational maps then I can simply compute a fourth root of unity $i$ in $K$ and let $\phi = (-x, iy)$, but as I know of sage doesn't let you define an isogeny from rational maps?

edit retag close merge delete

Sort by » oldest newest most voted

You can use the .automorphisms() method to get all the automorphisms of $E$.

sage: E = EllipticCurve(GF(13), [1, 0])
sage: Aut = E.automorphisms()
sage: Aut
[Generic endomorphism of Abelian group of points on Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 13
Via:  (u,r,s,t) = (1, 0, 0, 0),
Generic endomorphism of Abelian group of points on Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 13
Via:  (u,r,s,t) = (5, 0, 0, 0),
Generic endomorphism of Abelian group of points on Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 13
Via:  (u,r,s,t) = (8, 0, 0, 0),
Generic endomorphism of Abelian group of points on Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 13
Via:  (u,r,s,t) = (12, 0, 0, 0)]


Your map $[i]$ would be the second or the third map above, depending on your choice for $i ∈ 𝔽_p$. Automorphisms in Sage (currently version 9.4) do not inherit from isogenies, so they lack some of their methods (e.g., degree), and you cannot compose them with other isogenies, so it's a bit annoying to work with them. However the isogeny package is evolving quickly these days, so it's possible that future versions will handle these things better.

more

Thank you for your answer. As long as I can evaluate the map point-wise it would be okay.

( 2022-02-01 17:07:59 +0200 )edit

Starting from Sage 10.3, you can use next(a for a in E.automorphisms() if a^2 == -1).

more