It is not surprising that this binary operation on
satisfies
. Also, the inverse of
is
. The only other axiom to check in order to
verify that
gives
an abelian group structure is the associative
law. This is simple but tedious to check using only elementary
methods. The right way to prove that the associate law holds is to
develop the theory of algebraic curves and define the group law in
terms of divisor classes, but this is outside the scope of this course.
For fun, we can coerce the amazingly cool (but complicated)
computer algebra system MAGMA into verifying
the associative law (over
) for us:
// Define the field K = Q(a,b,x0,x1,x2) K<a,b,x0,x1,x2> := FieldOfFractions(PolynomialRing(Rationals(),5)); // Define the polynomial ring R = K[y0,y1,y2] R<y0,y1,y2> := PolynomialRing(K,3); // Define a maximal ideal of R: I := ideal<R | y0^2 - (x0^3+a*x0+b), y1^2 - (x1^3+a*x1+b), y2^2 - (x2^3+a*x2+b)>; // The quotient L = R/I is a field that contains three // distinct "generic" points on E. L := quo<R|I>; // Define the elliptic curve y^2 = x^3 + a*x + b over L. E := EllipticCurve([L| a,b]); // Let P0, P1, and P2 be three distinct "generic" points on E. P0 := E![L|x0,y0]; P1 := E![L|x1,y1]; P2 := E![L|x2,y2]; // The algebraic formulas for the group law are built into MAGMA. lhs := (P0 + P1) + P2; rhs := P0 + (P1 + P2); // Verify the associative law. lhs eq rhs; true // Yeah, it works!