If E is an irreducible plane curve of degree 3 then the set of smooth points of C is a principal homogeneous space under the group Pic_0 E of invertible sheaves of degree 0. Thus if we choose a smooth point o the map p -> O_E(p-o) identifies the set of smooth points with such invertible sheaves.
This script computes the sum of smooth points p,q with respect to the group law in which o is the zero point, where the group operation makes p+q = r if, as divisors, r is linearly equivalent to p+q-o. The functions addition and negative, based on linearSeries, allow us to implement the group law.
The points o,p,q may be represented either by their homogeneous coordinates or by ideal in the ring E. The functions fromCoordinates and toCoordinates pass between these two representations.
Here is an example with a smooth plane cubic:
|
|
|
|
|
|
|
|
|
It is known that when one takes multiples of a point that is not torsion, the "height" - roughly the number of digits in the coordinates - is doubled with each iteration, that is, the number of digits doubles:
|
|
|
On the other hand, over a finite field, a curve has only finitely many points, so any subgroup of the Jacobian is finite:
|
|
|
|
|
|
|
|
|
|
A cubic with a node or cusp is also arithmetic genus 1; in the case of a node, the smooth points are in correspondence with P^1 minus {0, infinity} and the Jacobian is the multiplicative group of the field. To allow the program to consider this as a curve of arithmetic genus 1, use the optional argument Conductor.
|
|
|
|
|
|
|
|
|
|
|
In the case of rational curve with a cusp, the smooth points correspond to the additive group of the field
|
|
|
|
|
the singular point is the image {0,0,1} of the point (0,1) in P^1, so we may take the origin to be the image {1,1,1} of (1,1) and take another smooth point p to be the image {1,0,0} of (1,0).
|
|
|
|
|
so 7p ~ o.
"The Practice of Algebraic Curves" Ch. 4, by David Eisenbud and Joe Harris, American Mathematical Society
Some aspects of the program use random arguments, so one should be wary of computation over very small fields
The object addition is a method function with options.