// means comment and is not executed by magma.
//
// For magma the point (x,y) is represented by (x : y : 1).
// The point O (or point at infinity) is (0 : 1 : 0).
//
E:=EllipticCurve([0,0,0,-3409/48,-143623/864]);
// EllipticCurve([0,0,0,a,b]) is the curve with equation y^2 = x^3 + ax + b.
print("E= "); E;
//
G,m:=MordellWeilGroup(E);
// G is the Mordell Weil Group as an abstract abelian group.
// m is the map M: G --> Set of Points of E.
print("G= "); G;
// The notation Z/m means Z_m.
// In this specific example we see that the subgroup of torsion points
// (= peperasmenhs taxhs shmeia) is isomorphic to Z_2 x Z_2. We find them using the map m?
T1:=m([1,0,0,0]);
print("T1= "); T1;
// The order of T1 is 2. Indeed,
print("2*T1= "); 2*T1;
//
T2:=m([0,1,0,0]);
print("T2= "); T2;
// The order of T2 is 2. Indeed,
print("2*T2= "); 2*T2;
// From the shape of G we see that the subgroup of points of infinite order is isomorphic to Z x Z.
// We find them using the map m.
P1:=m([0,0,1,0]);
print("P1= "); P1;
P2:=m([0,0,0,1]);
print("P2= "); P2;
// Now let us compute various points, for example,
print("3*P1-5*P2+T1+T2= "); 3*P1-5*P2+T1+T2;