23.12 Divisors on schemes

Module: sage.schemes.generic.divisor

Author Log:

sage: x,y,z = ProjectiveSpace(2, GF(5), names='x,y,z').gens()
sage: C = Curve(y^2*z^7 - x^9 - x*z^8)
sage: pts = C.rational_points(); pts
[(0 : 0 : 1), (0 : 1 : 0), (2 : 2 : 1), (2 : 3 : 1), (3 : 1 : 1), (3 : 4 :
1)]
sage: D = C.divisor(pts[0])*3 - C.divisor(pts[1]) + C.divisor(pts[5])*10; D
-(z, x) + 3*(y, x) + 10*(z + y, 2*z + x)
sage: D[1][0]
3
sage: D[1][1]
Ideal (y, x) of Polynomial Ring in x, y, z over Finite Field of size 5
sage: C.divisor([(3, pts[0]), (-1, pts[1]), (10,pts[5])])
-(z, x) + 3*(y, x) + 10*(z + y, 2*z + x)

Module-level Functions

CurvePointToIdeal( C, P)

is_Divisor( Div)

is_DivisorGroup( Div)

Class: Divisor_curve

class Divisor_curve
For any curve $ C$ , use C.divisor(v) to construct a divisor on $ C$ . Here $ v$ can be either

TODO: Divisors shouldn't be restricted to rational points. The problem is that the divisor group is the formal sum of the group of points on the curve, and there's no implemented notion of point on $ E/K$ that has coordinates in $ L$ . This is what should be implemented, by adding an appropriate class to schemes/generic/morphism.py.

sage: E = EllipticCurve([0, 0, 1, -1, 0])
sage: P = E(0,0)
sage: 10*P
(161/16 : -2065/64 : 1)
sage: D = E.divisor(P)
sage: D
(y, x)
sage: 10*D
10*(y, x)
sage: E.divisor([P, P])
2*(y, x)
sage: E.divisor([(3,P), (-4,5*P)])
3*(y, x) - 4*(-1/4*z + x, 5/8*z + y)
Divisor_curve( self, v, [check=None], [reduce=True], [parent=True])

INPUT:
    v -- a list of pairs (c, P), where c is an integer
         and P is a point on a curve.  The P's must
         all lie on the same curve.

To create the 0 divisor use [(0, P)], so as to give the curve.

TODO: Include an extension field in the definition of the divisor group.

Functions: coeff,$  $ support

coeff( self, P)

Return the coefficient of a given point P in this divisor.

sage: x,y = AffineSpace(2, GF(5), names='xy').gens()
sage: C = Curve(y^2 - x^9 - x)
sage: pts = C.rational_points(); pts
[(0, 0), (2, 2), (2, 3), (3, 1), (3, 4)]
sage: D = C.divisor([(3,pts[0]), (-1,pts[1])]); D
3*(y, x) - (3 + y, 3 + x)
sage: D.coeff(pts[0])
3
sage: D.coeff(pts[1])
-1

support( self)

Return the support of this divisor, which is the set of points that occur in this divisor with nonzero coefficients.

sage: x,y = AffineSpace(2, GF(5), names='xy').gens()
sage: C = Curve(y^2 - x^9 - x)
sage: pts = C.rational_points(); pts
[(0, 0), (2, 2), (2, 3), (3, 1), (3, 4)]
sage: D = C.divisor([(3,pts[0]), (-1, pts[1])]); D
3*(y, x) - (3 + y, 3 + x)
sage: D.support()
[(0, 0), (2, 2)]

Special Functions: _repr_

Class: Divisor_generic

class Divisor_generic

Functions: scheme

scheme( self)

Return the scheme that this divisor is on.

sage: x, y = AffineSpace(2, GF(5), names='x,y').gens()
sage: C = Curve(y^2 - x^9 - x)
sage: pts = C.rational_points(); pts
[(0, 0), (2, 2), (2, 3), (3, 1), (3, 4)]
sage: D = C.divisor(pts[0])*3 - C.divisor(pts[1]); D
3*(y, x) - (3 + y, 3 + x)
sage: D.scheme()
Affine Curve over Finite Field of size 5 defined by y^2 + 4*x + 4*x^9

See About this document... for information on suggesting changes.