Here are some applications of the procedures developed in the previous post.
Example 1
We consider example 2.4/problem 3.4 from Silverman;

By inspection we can identify some integer points, such as P1=(-2,3) and P3=(2,5). A brute force search for x in the range -1000 to 1000 generates the following results-
> #naive point search;
> for k from -1000 to 1000 do
> if(type(simplify((k^3+17)^(1/2)),integer)) then print(k,simplify((k^3+17)^(1/2))); end;
> end;
-2, 3
-1, 4
2, 5
4, 9
8, 23
43, 282
52, 375
Silverman tells us there is a further point, P8=(5234,378661), plus we have missed all the inverses of our points (since only the positive square root was computed). Brute force on the range -6000 to 6000 of course uncovers P8, but this computation takes 70.6 seconds, 10.24mb of memory and produces alarming sounds from my new office computer. Silverman observes that (due to a result of Nagell) the rational points are generated by integer combinations of P1, P3, so we can proceed by testing some of these instead:
> read “gla.mpl”;
> a_1:=0;a_3:=0;a_2:=0;a_4:=0;a_6:=17; #setting
up the curve;
>#smarter search
> for i from -5 to 5 do
> for j from -5 to 5 do
> if(type(mnadd(i,j,-2,3,-1,4)[1],integer) and type(mnadd(i,j,-2,3,-1,4)[2],integer)) then print(i,j,mnadd(i,j,-2,3,-1,4));
> end if;
> end:
> end:
-3, -2, 43, -282
-2, -3, 5234, -378661
-2, -1, 2, -5
-2, 0, 8, 23
-1, -1, 4, 9
-1, 0, -2, -3
-1, 1, 52, -375
0, -1, -1, -4
0, 1, -1, 4
1, -1, 52, 375
1, 0, -2, 3
1, 1, 4, -9
2, 0, 8, -23
2, 1, 2, 5
2, 3, 5234, 378661
3, 2, 43, 282
All sixteen points are recovered in 0.02 seconds, consuming merely 0.31mb of memory!
Of course, for this example I’m cheating somewhat because I know where I’d like to get to in that I know this list is complete; although a priori there’s no indication of how large the arguments m,n needed to be to generate points such as P7 or P8. Nonetheless, this indicates that the procedures allow for more rapid exploration of points on the curve, even if they don’t prove anything (besides existence) by themselves.
Example 2
Maple’s own algcurves package can also be useful to tackle problems given in projective terms. For instance, we can rapidly demonstrate the first result claimed in Exercise 3.3b. Here we are concerned with the curve

which homogenizing away from Z=0 gives

However, this is not of Weierstrass form; but we can retrieve this from Maple:
> with(algcurves):
> f:=x^3+y^3-A
> Weierstrassform(f,x,y,x0,y0)
This yields


But this is not quite of the Weierstrass form as used in Silverman; we substitute -x0 for x0 to arrive at



That is, we have that the curve coefficients ai are all zero except a6=27A2/4; we also have an isomorphism φ between E and its Weierstrass form given coordinatewise. We can verify with the procedure j_invariant that these are indeed the same curve (it turns out to have j invariant zero, too). Moreover, we can show the desired result, that
For this, let P=(x_0,y_0) a point on the curve in Weierstrass form. Then we compute -P:
> a_1:=0;a_3:=0;a_2:=0;a_4:=0,a_6=-27*A^2/4:
> read “gla.mpl”:
> ellm(x_0,y_0);
x_0, -y_0
Then, identifying P with a projective point via the isomorphism, we find
)=\phi^{-1}([x_0,y_0,1])=\left[\frac{9A+2y_0}{6x_0},\frac{9A-2y_0}{6x_0},1\right]:=[X,Y,Z]\in E)
=\phi^{-1}((x_0,-y_0))=\left[\frac{9A-2y_0}{6x_0},\frac{9A+2y_0}{6x_0},1\right]=[Y,X,Z])
Which is the desired result.