1 | initial version |
I think this does approximately what you want:
sage: E = EllipticCurve(GF(11), [0,0,0,1,1])
sage: P = E.division_polynomial(2)
sage: phi = EllipticCurveIsogeny(E,P/P.leading_coefficient(),codomain=E)
sage: [2*u+phi(u) for u in E.points()]
sage: {2*u+phi(u) for u in E.points()}
{(0 : 1 : 0)}
Note that this apparently happens to construct the multiplication-by-(-2) map, which has the same kernel.
2 | No.2 Revision |
I think this does approximately what you want:
sage: E = EllipticCurve(GF(11), [0,0,0,1,1])
sage: P = E.division_polynomial(2)
sage: phi = EllipticCurveIsogeny(E,P/P.leading_coefficient(),codomain=E)
sage: [2*u+phi(u) for u in E.points()]
sage: {2*u+phi(u) for u in E.points()}
{(0 : 1 : 0)}
Note that this apparently happens to construct the multiplication-by-(-2) map, which has the same kernel.
3 | No.3 Revision |
I think this does approximately what you want:
sage: E = EllipticCurve(GF(11), [0,0,0,1,1])
sage: P = E.division_polynomial(2)
sage: phi = EllipticCurveIsogeny(E,P/P.leading_coefficient(),codomain=E)
sage: {2*u+phi(u) for u in E.points()}
{(0 : 1 : 0)}
Note that this apparently happens to construct the multiplication-by-(-2) map, which has the same kernel.kernel. To get the multiplication-by-2 isogeny reliably, perhaps use
sage: E.multiplication_by_m_isogeny(2)