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)
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.