### Navigation

- index
- modules |
- next |
- previous |
- Schemes »

# Divisors on schemes

AUTHORS:

- William Stein
- David Kohel
- David Joyner
- Volker Braun (2010-07-16): Documentation, doctests, coercion fixes, bugfixes.

EXAMPLES:

    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: D1 = C.divisor(pts[0])*3
    sage: D2 = C.divisor(pts[1])
    sage: D3 = 10*C.divisor(pts[5])
    sage: D1.parent() is D2.parent()
    True
    sage: D = D1 - D2 + D3; D
    3*(x, y) - (x, z) + 10*(x + 2*z, y + z)
    sage: D[1][0]
    -1
    sage: D[1][1]
    Ideal (x, z) of Multivariate Polynomial Ring in x, y, z over Finite Field of size 5
    sage: C.divisor([(3, pts[0]), (-1, pts[1]), (10,pts[5])])
    3*(x, y) - (x, z) + 10*(x + 2*z, y + z)

`sage.schemes.generic.divisor.``CurvePointToIdeal`(C, P)

  Return the vanishing ideal of a point on a curve.

  EXAMPLES:

      sage: x,y = AffineSpace(2, QQ, names='xy').gens()
      sage: C = Curve(y^2 - x^9 - x)
      sage: from sage.schemes.generic.divisor import CurvePointToIdeal
      sage: CurvePointToIdeal(C, (0,0))
      Ideal (x, y) of Multivariate Polynomial Ring in x, y over Rational Field

class `sage.schemes.generic.divisor.``Divisor_curve`(v, parent=None, check=True, reduce=True)

  Bases: `sage.schemes.generic.divisor.Divisor_generic`

  For any curve \(C\), use `C.divisor(v)` to construct a divisor on \(C\). Here \(v\) can be either

  - a rational point on \(C\)
  - a list of rational points
  - a list of 2-tuples \((c,P)\), where \(c\) is an integer and \(P\) is a rational point.

  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`.

  EXAMPLES:

      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
      (x, y)
      sage: 10*D
      10*(x, y)
      sage: E.divisor([P, P])
      2*(x, y)
      sage: E.divisor([(3,P), (-4,5*P)])
      3*(x, y) - 4*(x - 1/4*z, y + 5/8*z)

  `coef`(P)

    Synonym for `coefficient()`

    Warning

    This method is deprecated. It will be removed in a future release of Sage. Please use the `coefficient(P)` method instead.

    EXAMPLES:

        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(pts[0])
        sage: D.coefficient(pts[0])
        1

  `coefficient`(P)

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

    EXAMPLES:

        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(pts[0])
        sage: D.coefficient(pts[0])
        1
        sage: D = C.divisor([(3,pts[0]), (-1,pts[1])]); D
        3*(x, y) - (x - 2, y - 2)
        sage: D.coefficient(pts[0])
        3
        sage: D.coefficient(pts[1])
        -1

  `support`()

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

    EXAMPLES:

        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_group()([(3,pts[0]), (-1, pts[1])]); D
        3*(x, y) - (x - 2, y - 2)
        sage: D.support()
        [(0, 0), (2, 2)]

    TESTS:

    This checks that trac ticket #10732 is fixed:

        sage: R.<x, y, z> = GF(5)[]
        sage: C = Curve(x^7 + y^7 + z^7)
        sage: pts = C.rational_points()
        sage: D = C.divisor([(2, pts[0])])
        sage: D.support()
        [(0 : 4 : 1)]
        sage: (D + D).support()
        [(0 : 4 : 1)]
        sage: E = C.divisor([(-3, pts[1]), (1, pts[2])])
        sage: (D - 2*E).support()
        [(0 : 4 : 1), (1 : 2 : 1), (2 : 1 : 1)]
        sage: (D - D).support()
        []

class `sage.schemes.generic.divisor.``Divisor_generic`(v, parent, check=True, reduce=True)

  Bases: `sage.structure.formal_sum.FormalSum`

  A Divisor.

  `scheme`()

    Return the scheme that this divisor is on.

    EXAMPLES:

        sage: A.<x, y> = AffineSpace(2, GF(5))
        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*(x, y) - (x - 2, y - 2)
        sage: D.scheme()
        Affine Curve over Finite Field of size 5 defined by -x^9 + y^2 - x

`sage.schemes.generic.divisor.``is_Divisor`(x)

  Test whether `x` is an instance of `Divisor_generic`

  INPUT:

  - `x` – anything.

  OUTPUT:

  `True` or `False`.

  EXAMPLES:

      sage: from sage.schemes.generic.divisor import is_Divisor
      sage: x,y = AffineSpace(2, GF(5), names='xy').gens()
      sage: C = Curve(y^2 - x^9 - x)
      sage: is_Divisor( C.divisor([]) )
      True
      sage: is_Divisor("Ceci n'est pas un diviseur")
      False

### Navigation

- index
- modules |
- next |
- previous |
- Schemes »