Implementing the Group Law Algorithm in Maple- finite fields
October 29th, 2006I’ve added a couple of extra toys to my Maple procedures for elliptic curves. The major change is that it now supports calculation over some finite fields; that is, the integers modulo some prime. To activate this, set workModM to true and specify a modulus M. Then the usual commands ella, ellm, ncopies and mnadd will compute answers mod M instead.
This also makes it much more likely that you’ll be interested in the order of a point, so a procedure modgetorder is included to calculate this by brute force- that is, repeated addition until the zero element is reached.
This makes questions of the type I faced in MA40188: Algebraic Curves much easier. For instance, consider the curve
Over the field with 37 elements, and with a suitable dehomogenisation, the point P: (x,y)=(0,23) is easily verified as an element of E. Then we may easily determine the point Q=-2P, the third intersection of E with the tangent to E at P:
>read “gla.mpl”;
> a_1:=0;a_2:=0;a_4:=-9;a_3:=0;a_6:=11;
>workModM:=true;
>
>M:=37;
>Q:=ncopies(-2,0,23);
1,22
So Q=(1,22). Further, Q is an inflexion point: that is, the tangent to E at Q meets E three times at Q. In terms of the group law, this means -2Q=Q, or equivalently 3Q=0. We can verify this in a couple of ways:
> ncopies(3,Q);
zero
> modgetorder(Q);
3
Since Q=-2P and 3Q=0, it should follow that 6P=0. Which, fortunately, it does:
> modgetorder(0,23);
6
