# Divisors

This section contains functionality for working with divisors on varieties (integral schemes defined over a field) of dimension greater than one. Currently, divisors can only be created on projective schemes $X$ and there is also a restriction that $X$ is ordinary projective for many of the less formal intrinsics that rely on the coherent sheaf code. In a number of places it is also required that a divisor $D$ is Cartier (always true if $X$ is non-singular), which can be we explicitly checked in general using the `IsCartier` intrinsic. There are also a number of intrinsics that are specific to surfaces.

The scheme $X$ may be singular but is assumed to be a *normal* variety. In the absence of normality, problems may occur at along the non-normal locus $L$. In particular, any codimension $1$ irreducible components of $L$ will function badly as divisor components. Even when $L$ is of codimension $\ge 2$ in $X$, we may get strange behaviour at points of $L$. For example, a locally-principal (Cartier) effective divisor passing through a non-normal point $p$ may become non-Cartier at $p$ when its defining ideal $I$ is replaced by the “pure codimension 1” component of $I$. This replacement is carried out as a matter of course in certain places where we need to kill off higher-codimensional components of the defining ideal of an effective divisor that would affect a computation.

Integral divisors are represented as differences of effective divisors, which are represented as subschemes of the scheme they live on. Factorisation into multiples of irreducibles can also be performed and the result is stored once calculated. It is also possible to work with **Q**-divisors. These are represented internally as factorisations with rational multiplicity of components.

The package of divisor functions is at and early stage and a number of the intrinsics are not as general as they could be and/or could be made more efficient. However, it is useful functionality that seems worth exporting now. There is much further work still to be done.

## Divisor Groups

As for curves, there is a divisor group object associated to a variety $X$, which is the parent of all divisors on $X$. It is of type `DivSch`.

### `DivisorGroup(X): Sch -> DivSch`

The divisor group of variety $X$.

### `Variety(G): DivSch -> Sch`

The variety of the divisor group $G$.

### `G1 eq G2: DivSch, DivSch -> BoolElt`

Returns `true` if and only if the divisor groups $G1$ and $G2$ are for the same variety.

## Creation Of Divisors

Divisors are of type `DivSchElt`. Internally, an integral, effective divisor $D$ on variety $X$ is stored as an ideal which defines $D$ as a subscheme of $X$. A general divisor is represented internally in partially factored form as a list of pairs of ideals and rational multiplicities $[\langle I_i,m_i\rangle]$ which represents the **Q**-rational (integral, if all $m_i$ are integers) divisor $\sum_i m_i*D(I_i)$, where $D(I_i)$ is the effective divisor on $X$ defined by the ideal $I_i$. An integral, effective divisor may also have a factorisation stored. The internal factorisation can change over time with the $I_i$ being decomposed into products of larger ideals. When the $I_i$ are all prime ideals, we say that the factorisation is a prime factorisation of $D$.

This section contains the basic creation functions for divisors.

### `Divisor(X, f): Sch, FldFunFracSchElt -> DivSchElt`

### `Divisor(X, f): Sch, FldFunRatMElt -> DivSchElt`

### `Divisor(X, f): Sch, RngMPolElt -> DivSchElt`

These create the integral divisor on $X$ defined by a single global element $f$. In the first two cases, $f$ is an element of the function field (or the field of fractions of the coordinate ring of) the projective ambient of $X$. The divisor is non-effective (unless it is zero): the divisor of zeroes of $f$ minus its divisor of poles. In the last case $f$ should be a homogeneous polynomial in the coordinate ring of the ambient and the divisor is the effective divisor defined by the subscheme of $X$ whose ideal is generated by the ideal of $X$ and $f$.

### `Divisor(X, Q): Sch, SeqEnum -> DivSchElt`

### `Divisor(X, Y): Sch, Sch -> DivSchElt`

### `Divisor(X, I): Sch, RngMPol -> DivSchElt`

```magma
CheckSaturated       : BoolElt                    Default: false
CheckDimension       : BoolElt                    Default: false
UseCodimensionOnePart: BoolElt                    Default: false
```

These three intrinsics define an integral, effective divisor on projective variety $X$ defined by an ideal or subscheme. For the first, $Q$ is a sequence of elements in the coordinate ring of $X$ and it is equivalent to passing the ideal generated by the ideal of $X$ and $Q$. For the second, $Y$ is a subscheme of $X$ that should define an effective divisor on $X$. For the third, $I$ is an ideal in the coordinate ring of the ambient of $X$, whose saturation $J$ should contain the ideal of $X$. The effective divisor is given by the closed subscheme of $X$ whose ideal is $J$.

The parameter `CheckSaturated` can be set to `true` in the third case if it is known that $I$ is already saturated or in the second case if it is known that the ideal of $Y$ is already saturated. The parameter `CheckDimension` can be set to `true` in any of the cases if it is known that the subscheme defining the divisor is of pure codimension 1 in $X$. Otherwise this condition is checked with the following exception. In the third case, if parameter `UseCodimensionOnePart` is set to `true` the non-codimension 1 part of the ideal is ignored in creating the divisor.

### `HyperplaneSectionDivisor(X): Sch -> DivSchElt`

Creates a divisor given by a hyperplane section of projective variety $X$.

### `ZeroDivisor(X): Sch -> DivSchElt`

The zero divisor on variety $X$.

### `CanonicalDivisor(X): Sch -> DivSchElt`

A canonical divisor on variety $X$ which must be ordinary projective and should be a Gorenstein scheme for this to give a correct result. It uses the canonical sheaf on $X$ and the next intrinsic.

### `SheafToDivisor(S): ShfCoh -> DivSchElt`

The argument $S$ is a coherent sheaf that should be invertible (locally free, rank 1) on a variety $X$. Then $S$ is isomorphic to $L(D)$ for a (Cartier) divisor $D$ (defined up to rational equivalence) on $X$. Returns such a divisor $D$ which is effective if possible.

### `RoundDownDivisor(D): DivSchElt -> DivSchElt`

For an integral divisor $D$ just returns $D$. For a non-integral (**Q**-rational) divisor with a factorisation into sum of rational multiples of prime components, returns the divisor of the integer multiple sum of primes given by rounding down all of the original rational coefficients.

### `RoundUpDivisor(D): DivSchElt -> DivSchElt`

For an integral divisor $D$ just returns $D$. For a non-integral (**Q**-rational) divisor with a factorisation into sum of rational multiples of prime components, returns the divisor of the integer multiple sum of primes given by rounding up all of the original rational coefficients.

### `FractionalPart(D): DivSchElt -> DivSchElt`

Returns $D-$ `RoundDownDivisor`($D$).

### `IntegralMultiple(D): DivSchElt -> DivSchElt, RngIntElt`

Finds a positive integer $N$ such that $E=N*D$ is an integral divisor. Returns $E$ and $N$. This does not attempt to find the smallest possible $N$ by analysing the full prime factorisation of $D$.

### `EffectiveHypersurfaceTwist(D): DivSchElt -> DivSchElt, RngMPolElt`

The divisor $D$ should be an integral divisor on an ordinary projective variety $X$. Let $H$ denotes a hyperplane divisor of $X$. Returns an effective divisor $D_1$ linearly equivalent to $D+rH$ for some $r \ge 0$. In fact, it also returns a non-zero homogeneous polynomial $F$ of degree $r$ in the coordinate ring of the ambient of $X$ such that $D_1 = D + (F)$ where $(F) \sim rH$ is the divisor of vanishing of $F$ on $X$. The $D_1$ returned will have an effective ideal factorisation (i.e., all multiplicities $m_i$ in the stored factorisation will be positive integers). If $D$ already has an effective ideal factorisation, $D$ itself is returned with $F=1$.

## Ideals and Factorisations

Divisors are stored in ideal or factored form as described in the introduction to the last section. This section contains functions related to these representing structures.

### `Ideal(D): DivSchElt -> RngMPol`

Returns the defining ideal for an effective, integral divisor $D$.

### `Support(D): DivSchElt -> Sch`

The subscheme of the variety of effective **Q**-divisor $D$ that gives its support.

### `IdealOfSupport(D): DivSchElt -> RngMPol`

The ideal in the coordinate ring of the ambient of the variety of the effective **Q**-divisor $D$ that defines it’s support.

### `SignDecomposition(D): DivSchElt -> DivSchElt, DivSchElt`

The decomposition of $D$ into two effective divisors $A$ and $B$ such that $D=A-B$. $A$ and $B$ are returned. Note that they are not guaranteed to be relatively prime for this intrinsic.

### `IdealFactorisation(D): DivSchElt -> SeqEnum`

Returns the current stored factorisation of $D$ as a sequence of pairs of ideals and rational multiplicities.

### `CombineIdealFactorisation(~D): DivSchElt`

Simplify the current ideal factorisation of $D$ by combining terms with the same ideal.

### `ComputeReducedFactorisation(~D): DivSchElt`

### `ReducedFactorisation(D): DivSchElt -> SeqEnum`

Replace the ideal factorisation of $D$ with an equivalent reduced factorisation where all ideals occurring are primary. The first intrinsic just does the replacement internally. The second intrinsic also returns the result.

### `ComputePrimeFactorisation(~D): DivSchElt`

### `PrimeFactorisation(D): DivSchElt -> SeqEnum`

Replace the ideal factorisation of $D$ with an equivalent prime factorisation where all ideals occurring are prime. The first intrinsic just does the replacement internally. The second intrinsic also returns the result.

### `Multiplicity(D, E): DivSchElt, DivSchElt -> FldRatElt`

The multiplicity of prime divisor $E$ in divisor $D$. The ideal factorisation of $D$ is replaced by a factor representing $E$ to the multiplicity along with factors which are the original ideal factors of $D$ with the maximum powers of $E$ divided out. This refactorisation comes from the computation which iteratively calculates the colon ideal by $E$ of the original factors.

### `MultiplicityFast(D, E): DivSchElt, DivSchElt -> FldRatElt`

This is a fast version of `Multiplicity` that can be applied when the variety $X$ of $D$ and $E$ is affine or ordinary projective and $E$ is known to be Cartier. It is usually faster than the general version, not having to compute colon ideals, but has the drawback of not refactorising the ideal factorisation of $D$ into a power of $E$ and remainders. As a fast version, it also does not check that $E$ is prime whereas the usual multiplicity intrinsic does.

### `Multiplicities(D, P): DivSchElt, SeqEnum[DivSchElt] -> SeqEnum`

This is a fast (usually) variant of `Multiplicity` for working with divisors that are all supported on a known set of prime divisors. The argument $D$ is a divisor on variety $X$ and $P$ should be a sequence of prime divisors containing *all* of the primes that $D$ is supported on. Returns the sequence of multiplicities of $p$ in $D$ for $p\in P$. $X$ must be ordinary projective here.

The method used to is reduce to the dimension $1$ case for $X$ by cutting with random hyperplanes and then use Magma’s divisor and place functionality for curves to compute the result. We have to be careful in choosing hyperplanes such that at each stage of reducing the dimension by 1: the cut $X$ is purely of dimension one less than before; all of the cut divisors $p$ are purely of dimension one less than before and have no component lying in the singular locus of cut $X$; no components of a pair of cut $p$ coincide.

The reason for requiring that all prime factors in the support of $D$ lie in $P$ is that other factors of $D$ outside of $P$ could end up coinciding with a factor $p$ in $P$ on repeated cutting by hyperplanes. This would lead to a multiplicity for $p$ that is too large. This actually occurs in the example below.

This intrinsic is particularly useful when $X$ lies in a fairly small dimensional ambient and the user is interested in computing multiplicities of a number of divisors that are supported on a fixed set of prime divisors and can have quite high multiplicities with respect to these.

### `Example: Sch Div Mults (ex-ce56dc)`

We take a (singular but normal) degree 3 Del Pezzo surface $S$ in ${\bf P}^3$ and 3 lines on it that form a hyperplane section $H$ as our initial set of $P$. We let $D$ be the hypersurface divisor with equation the cube of the equation of $H$ multiplied by the square of a different linear form that vanishes on the third line but not the other two. The expected multiplicities are thus $[3,3,5]$. However, not including the second prime divisor of the second linear form leads to the wrong result! The chosen cutting merges the ignored prime divisor of the support with the third line and leads to a value for the third multiplicity that is too high. When we include the final divisor of the support of $D$ in our set $P$, we get the correct result.

```magma
> P<x,y,z,t> := ProjectiveSpace(Rationals(),3);
> F := x^3+y^3+z^3+3*y^2*t+3*y*z*t+3*z^2*t+3*y*t^2+3*z*t^2+t^3;
> S := Surface(P,F);
> R := CoordinateRing(P);
> Ils := [ideal<R|[u,x+y+z+t-u]> : u in [x,y,z]]; //ideals of the three lines
> P := [Divisor(S,I) : I in Ils];
> g1 := x+y+z+t; // hyperplane = the sum of the lines
> g2 := x+y+t;   // hyperplane through only the 3rd line
> D := Divisor(S,g1^3*g2^2);
> Multiplicities(D,P);
[3,3,9]
> // wrong! we need to include the extra prime divisor of the support.
> D1 := Divisor(S,g2);
> PrimeFactorisation(D1);
[
    <Ideal of Polynomial ring of rank 4 over Rational Field
    Order: Graded Reverse Lexicographical
    Variables: x, y, z, t
    Homogeneous, Dimension 2, Radical, Prime
    Groebner basis:
    [
        z^2 + 3*y*t + 3*z*t + 3*t^2,
        x + y + t
    ], 1>,
    <Ideal of Polynomial ring of rank 4 over Rational Field
    Order: Graded Reverse Lexicographical
    Variables: x, y, z, t
    Homogeneous, Dimension 2, Radical, Prime
    Groebner basis:
    [
        x + y + t,
        z
    ], 1>
]
> P4 := Divisor(S,$1[1][1]);
> Multiplicities(D,P cat [P4]); //this gives the correct result!
[ 3, 3, 5, 2 ]

```

## Basic Divisor Predicates

### `IsZeroDivisor(D): DivSchElt -> BoolElt`

Returns whether $D$ is the zero divisor.

### `IsIntegral(D): DivSchElt -> BoolElt`

Returns whether $D$ is an integral divisor. If this isn’t immediately obvious from the current factorisation, will convert to a prime factorisation and try to combine terms.

### `IsEffective(D): DivSchElt -> BoolElt`

Returns whether $D$ is an effective divisor. If this isn’t immediately obvious from the current factorisation, will convert to a prime factorisation and try to combine terms.

### `IsPrime(D): DivSchElt -> BoolElt`

Returns whether $D$ is a prime divisor.

### `IsFactorisationPrime(D): DivSchElt -> BoolElt`

Returns whether the current factorisation of $D$ is a prime factorisation (i.e. all ideals occurring are prime).

### `IsDivisible(D): DivSchElt -> BoolElt, RngIntElt`

Returns whether $D$ is integral and divisible as an integral divisor by an integer $n > 1$. If so, also returns the maximum such $n$.

## Arithmetic of Divisors

### `D1 + D2: DivSchElt, DivSchElt -> DivSchElt`

### `D1 + D2: DivSchElt, DivTorElt -> DivSchElt`

### `D1 + D2: DivTorElt, DivTorElt -> DivSchElt`

### `D1 - D2: DivSchElt, DivSchElt -> DivSchElt`

### `D1 - D2: DivSchElt, DivTorElt -> DivSchElt`

### `D1 - D2: DivTorElt, DivSchElt -> DivSchElt`

### `- D: DivSchElt -> DivSchElt`

Addition, subtraction and unitary minus on divisors. For addition and subtraction, one argument may be a toric divisor whose toric variety is the variety of the scheme divisor.

### `n * D: RngIntElt, DivSchElt -> DivSchElt`

### `r * D: FldRatElt, DivSchElt -> DivSchElt`

Multiplication of a divisor $D$ by an integer $n$ or rational number $r$. Note that the multiplication by $r$ is the only current primitive method for constructing non-integral divisors.

### `D1 eq D2: DivSchElt, DivSchElt -> BoolElt`

Returns whether divisors $D1$ and $D2$ lie on the same variety and are equal.

## Further Divisor Properties

More complicated predicates on divisors.

### `IsCanonical(D): DivSchElt -> BoolElt`

Returns whether $D$ is a canonical divisor by testing whether its associated sheaf is isomorphic to the canonical sheaf. The variety of $D$ must be ordinary projective here and should be Gorenstein.

### `IsAnticanonical(D): DivSchElt -> BoolElt`

Returns whether $D$ is an anticanonical divisor by testing whether its associated sheaf is isomorphic to the dual of the canonical sheaf. The variety of $D$ must be ordinary projective here and should be Gorenstein.

### `IsCanonicalWithTwist(D): DivSchElt -> BoolElt, RngIntElt`

Returns whether $D$ is the sum of a hypersurface divisor of degree $d$ and a canonical divisor by testing whether its associated sheaf is isomorphic to a twist of the canonical sheaf. If so, also returns $d$. The variety of $D$ must be ordinary projective here and should be Gorenstein.

### `IsPrincipal(D): DivSchElt -> BoolElt, FldFunFracSchElt`

Returns whether $D$ with variety $X$ is a principal divisor and, if so, also returns an element $f$ of the function field of the ambient of $X$ such that $D = div(f)$. $X$ should be ordinary projective and $D$ a Cartier divisor here. Uses the Riemann-Roch space of $D$.

### `IsCartier(D): DivSchElt -> BoolElt`

Returns whether $D$ is a Cartier divisor on its variety $X$. This is equivalent to $D$ being *locally*-principal. That is, $X$ can be covered by Zariski-open subsets $U_i$ such that the restriction of $D$ to each $U_i$ is equal to the restriction of $div(f_i)$ to $U_i$ for some $f_i$. $X$ must be ordinary projective here.

### `Example: Divs Cartier Ex (ex-8f4659)`

Many divisors are automatically Cartier. If $X$ is non-singular, all divisors are. If $X$ is ordinary projective, the easiest divisors to construct are the hypersurface divisors defined by a homogeneous form that doesn’t vanish on all of $X$. These are also all Cartier whether $X$ is singular or not.

On the other hand, on an anticanonically-embedded degenerate Del Pezzo surface, a line that passes through a singular point is usually not Cartier. We give an example of a degenerate degree $4$ Del Pezzo with $2$ $A_1$ singularities where we verify this for a particular line using `IsCartier`.

```magma
> P<x,y,z,t,u> := ProjectiveSpace(RationalField(), 4);
> S := Surface(P,[z^2-z*t-y*u, y*z-x*t-z*t-y*u]);
> p := S![0,0,0,0,1];
> IsSingular(p);
true (0 : 0 : 0 : 0 : 1)
> l := Scheme(P,[y,z-t,x+z]); // l is a line thorugh p
> l subset S; // and l lies in S
true
> D := Divisor(S,Ideal(l));
> IsCartier(D);
false

```

### `IsLinearlyEquivalent(D, E): DivSchElt, DivSchElt -> BoolElt, FldFunFracSchElt`

Returns whether two divisors $D$ and $E$ on variety $X$ are linearly equivalent and, if so, also returns an element $f$ of the function field of the ambient of $X$ such that $D = E+{\rm div}(f)$. Uses `IsPrincipal` for the difference between the two divisors, so $X$ must be ordinary projective.

### `BaseLocus(D): DivSchElt -> Sch`

### `IsBasePointFree(D): DivSchElt -> BoolElt`

### `IsMobile(D): DivSchElt -> BoolElt`

The first intrinsic computes the base locus of the linear system $|[D]|$ (i.e. the reduced intersection of all effective divisors in the linear system) where [$D$] is the round down of $D$ . This uses the Riemann-Roch space of [$D$], which means that this divisor has to be Cartier and the variety $X$ of $D$ has to be ordinary projective.

The second intrinsic returns whether this base locus is empty and the third whether it is of codimension at least two in $X$ (i.e. there are no common divisor components to the full linear system). $X$ and $D$ obviously have to satisfy the same conditions.

### `IntersectionNumber(D1, D2): DivSchElt, DivSchElt -> FldRatElt`

The arguments $D1$ and $D2$ are divisors on a variety $X$ which must be of dimension 2. One of the two divisors is assumed to be Cartier. Computes the intersection pairing number $D1.D2$.

### `SelfIntersection(D): DivSchElt -> FldRatElt`

The intersection number of $D$ with itself where the divisor $D$ on $X$ must satisfy the conditions for the last intrinsic.

### `Degree(D): DivSchElt -> FldRatElt`

### `Degree(D, H): DivSchElt, DivSchElt -> FldRatElt`

The argument $D$ (resp. $D$ and $H$) lies on a variety $X$ of dimension 2. The first computes the intersection number of $D$ with respect to a hyperplane divisor. The second computes the intersection number of $D$ with $H$ (so is just equivalent to `IntersectionNumber(D,H)`).

### `IsNef(D): DivSchElt -> BoolElt`

The argument $D$ should be a **Q**-Cartier divisor on a projective surface $X$. Currently, it also has to be effective. Returns whether $D$ is a nef divisor: i.e. whether it has non-negative intersection with all effective divisors on $X$.

### `IsNefAndBig(D): DivSchElt -> BoolElt`

The divisor $D$ on $X$ is as above. The divisor $D$ must be effective. Returns whether $D$ is a nef divisor *and* has positive self-intersection.

### `NegativePrimeDivisors(D): DivSchElt -> SeqEnum`

The divisor $D$ on $X$ again should satisfy the same conditions as in `IsNef`. Returns a sequence of prime divisor components of $D$ which have negative intersection with $D$.

### `ZariskiDecomposition(D): DivSchElt -> DivSchElt, DivSchElt`

The divisor $D$ on $X$ again should satisfy the same conditions as in `IsNef`. Returns a pair of **Q**-divisors $P$ and $N$ such that $D=P+N$, $P$ is nef and $N$ has negative-definite support (i.e. the intersection pairing on its prime components is negative definite).

### `Reduction(D, p): DivSchElt, Any -> DivSchElt`

```magma
parent: Sch                    Default: false
```

The variety $X$ of the divisor $D$ should be an ordinary projective scheme defined over $K$, the rational field or a number field. If $K$ is the rationals then argument $p$ should be a rational prime and if $K$ is a number field, $p$ should be a place or a prime ideal in an order of $K$.

Computes and returns $D_p$, the reduction mod $p$ of $D$, which is a divisor on $X_p$, the reduction of the flat closure of $X$ as defined by the intrinsic ([`Reduction`](anfs.md#function-sch-red-mod-p)). Note that it is not checked whether $X_p$ is normal or even a variety over $k_p$ (the residue class field of $p$). The reduction is carried out on the components in the current ideal factorisation of $D$ in the same way the reduction of $X$ itself is computed.

If the reduction of $X$ has already been computed as $Y$, say, and the user wishes the result $D_p$ to be a divisor on $Y$, this can be achieved by setting the parameter `parent` equal to $Y$.

## Riemann-Roch Spaces

This section contains functions to compute and work with Riemann-Roch spaces for a divisor $D$. It is always assumed that $X$, the variety of $D$, is an ordinary projective space here. The Riemann-Roch space is the finite-dimensional subspace of the vector space (over the basefield) of rational functions on $X$ consisting of zero and all $f \ne 0$ such that $D+div(f)$ is an effective divisor. Thus, the Riemann-Roch space of $D$ is the same as the Riemann-Roch space of $[D]$, `RoundDownDivisor(D)`. Because the sheaf code is used (or a slight variant for non-effective divisors), it is also required that $[D]$ is Cartier for all relevant intrinsics.

### `Sheaf(D): DivSchElt -> ShfCoh`

The invertible sheaf corresponding to the divisor class of divisor $D$. If $D$ is not integral, its round down $[D]$ is used. This divisor must be Cartier and its variety $X$ must be ordinary projective. Is effectively the same function as in the Sheaf package when $D$ is effective and uses a slight variant otherwise.

### `RiemannRochBasis(D): DivSchElt -> SeqEnum`

### `RiemannRochSpace(D): DivSchElt -> ModTupFld, Map`

The first returns a basis of the Riemann-Roch space of the round down $[D]$ of divisor $D$ (as a sequence of elements in the function field $F$ of the ambient of $D$’s variety, $X$). The second returns the Riemann-Roch space as an abstract vector space $V$ over the base field along with a map from $V$ to $F$. The variety $X$ must be ordinary projective and $[D]$ Cartier. If $D$ is effective, this is the same as using the coherent sheaf function that computes the associated invertible sheaf and Riemann-Roch basis. If $D$ is non-effective a slight variant is used.

### `RiemannRochCoordinates(f, D): Any, DivSchElt -> BoolElt, SeqEnum`

Returns whether $f$ can be coerced into the function field of the ambient of $D$’s variety $X$ and whether $f$ then lies in the Riemann-Roch space of $D$. If so also returns the coordinates of $f$ with respect to the basis of the Riemann-Roch space returned by `RiemannRochBasis(D)`. As usual, $X$ must be ordinary projective and $[D]$, the round down of $D$, must be Cartier.

### `IsLinearSystemNonEmpty(D): DivSchElt -> BoolElt, DivSchElt`

Returns whether there is an effective divisor linearly equivalent to $D$ and, if so, returns such a divisor. Uses the Riemann-Roch space of $D$. The conditions on $D$ and $X$, its variety, are as for the preceding intrinsics.
