m-torsion points of an elliptic curve

162 views
Skip to first unread message

Myriam Mahaman

unread,
Apr 26, 2013, 10:27:08 AM4/26/13
to sage-s...@googlegroups.com
Is there a function implemented in Sage which computes the m-torsion subgroup of an elliptic curve defined over Q? I want all the points, not only the rational points.

Thanks,

Myriam

--
Myriam MAHAMAN
African Institute for Mathematical Sciences
Email: myr...@aims.ac.za

John Cremona

unread,
Apr 26, 2013, 1:07:33 PM4/26/13
to SAGE support
On 26 April 2013 15:27, Myriam Mahaman <myr...@aims.ac.za> wrote:
> Is there a function implemented in Sage which computes the m-torsion
> subgroup of an elliptic curve defined over Q? I want all the points, not
> only the rational points.
>

Not as such. You can get the m-division polynomial and construct its
splitting field, then base change to that and ask for the m-torsion
there; either that's enough or you need to make a further quadratic
extension. Would it be useful to have all that done automatically?
Could you write such a function and contribute it?

John Cremona

> Thanks,
>
> Myriam
>
> --
> Myriam MAHAMAN
> African Institute for Mathematical Sciences
> Email: myr...@aims.ac.za
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-support...@googlegroups.com.
> To post to this group, send email to sage-s...@googlegroups.com.
> Visit this group at http://groups.google.com/group/sage-support?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Myriam Mahaman

unread,
Apr 26, 2013, 4:11:48 PM4/26/13
to sage-s...@googlegroups.com
Hi,

After googling a bit, I found that there are many ways to get the splitting field of a polynomial. In general, the division polynomial is not irreducible, so the function NumberField can't be used directly. In the end, I found a solution that John Cremona posted in the sage-support:
http://www.mail-archive.com/sage-s...@googlegroups.com/msg17397.html

Tell me if you know more better methods.

I tried the following code on an elliptic curve E:

var('x y')
E = EllipticCurve(y^2 == x^3 + x)

m = 4
div_poly = E.division_polynomial(m)
rts = div_poly.roots(ring=QQbar,multiplicities=False)
K,aroots,phi = number_field_elements_from_algebraics(rts)
E1 = E.change_ring(K)

G = E1.torsion_subgroup()

Then, I checked the order of the group G, and the order of the points in it.

G.order()

for P in G.points():
    print P.order()


I extract E[m] by filtering the points of order dividing m:

E_m = [ P for P in G.points() if m % P.order() == 0]

In the end, I should get the group E[m] with m^2 elements, all of order m.

So here is the feedback:
  • Sometimes it works: with y^2 == x^3 + x and m = 4,
    y^2 == x^3 + 1 and m = 3.
  • Most of the times it doesn't: with other values of m, the group G is too small, with points not of order m.
  • It is slow for larger values of m.

This is the limit of my knowledge, so do you have some ideas on how to improve this code, or on how to get the bigger quadratic extension that John Cremona talked about?

Thanks,

Myriam Mahaman

John Cremona

unread,
Apr 27, 2013, 6:39:02 AM4/27/13
to SAGE support
Since I wrote that someone did implement splitting_field as a method
for number fields, but not yet (I think) for polynomials. That might
be faster than using QQbar as in my previous suggestion, as that does
get very slow for large degrees (as these will usually have).

If K is the splitting field of the m-division polynomial and L the
m-division field (so that K is generated by the x-coordinates of the
m-torsion points whilc L also contains the y-coordinates) then it is
an exercise to show that [L:K] is at most 2. In fact either all the
m-torsion points are defined over K or none of them are, and in the
latter case a single quadratic extension suffices to get all the
y-coordinates. To do this in practice, let x be the x-coordinate of
any point of order m, set y2 = 4*x^3+b2*x^2+2*b4*x+b6 (where b2,b4,b6
are as usual) then L=K(sqrt(y2)).

It will certainly be slow, since the degree of L over Q is usually as
big as the order of GL(2,Z/mZ) which is of the order m^4.

I hope this works out for you!

John Cremona
Reply all
Reply to author
Forward
0 new messages