Rational point sets on a Jacobian¶
EXAMPLES:
sage: x = QQ['x'].0
sage: f = x^5 + x + 1
sage: C = HyperellipticCurve(f); C
Hyperelliptic Curve over Rational Field defined by y^2 = x^5 + x + 1
sage: C(QQ)
Set of rational points of Hyperelliptic Curve over Rational Field
defined by y^2 = x^5 + x + 1
sage: P = C([0,1,1])
sage: J = C.jacobian(); J
Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^5 + x + 1
sage: Q = J(QQ)(P); Q
(x, y - 1)
sage: Q + Q
(x^2, y - 1/2*x - 1)
sage: Q*3
(x^2 - 1/64*x + 1/8, y + 255/512*x + 65/64)
>>> from sage.all import *
>>> x = QQ['x'].gen(0)
>>> f = x**Integer(5) + x + Integer(1)
>>> C = HyperellipticCurve(f); C
Hyperelliptic Curve over Rational Field defined by y^2 = x^5 + x + 1
>>> C(QQ)
Set of rational points of Hyperelliptic Curve over Rational Field
defined by y^2 = x^5 + x + 1
>>> P = C([Integer(0),Integer(1),Integer(1)])
>>> J = C.jacobian(); J
Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^5 + x + 1
>>> Q = J(QQ)(P); Q
(x, y - 1)
>>> Q + Q
(x^2, y - 1/2*x - 1)
>>> Q*Integer(3)
(x^2 - 1/64*x + 1/8, y + 255/512*x + 65/64)
sage: F.<a> = GF(3)
sage: R.<x> = F[]
sage: f = x^5 - 1
sage: C = HyperellipticCurve(f)
sage: J = C.jacobian()
sage: X = J(F)
sage: a = x^2 - x + 1; b = -x + 1; c = x - 1; d = 0
sage: D1 = X([a,b]); D1
(x^2 + 2*x + 1, y + x + 2)
sage: D2 = X([c,d]); D2
(x + 2, y)
sage: D1 + D2
(x^2 + 2*x + 2, y + 2*x + 1)
>>> from sage.all import *
>>> F = GF(Integer(3), names=('a',)); (a,) = F._first_ngens(1)
>>> R = F['x']; (x,) = R._first_ngens(1)
>>> f = x**Integer(5) - Integer(1)
>>> C = HyperellipticCurve(f)
>>> J = C.jacobian()
>>> X = J(F)
>>> a = x**Integer(2) - x + Integer(1); b = -x + Integer(1); c = x - Integer(1); d = Integer(0)
>>> D1 = X([a,b]); D1
(x^2 + 2*x + 1, y + x + 2)
>>> D2 = X([c,d]); D2
(x + 2, y)
>>> D1 + D2
(x^2 + 2*x + 2, y + 2*x + 1)