# Divisors on Riemann Surfaces

A rather simple concept of a divisor for a Riemann surface is supported. Here the divisors are realised as finite sums of points with integer coefficients. The type name for these Riemann surface divisors is `DivRieSrfElt`. The main application of these divisors is to the computation of the Abel–Jacobi map.

## `Divisor(S, V): SeqEnum[RieSrfPt], SeqEnum[RngIntElt] -> DivRieSrfElt`

Given a sequence $S$ of points $P_i$ belonging to Riemann surface $X$ and a sequence $V$ of integers $n_i$, construct the formal divisor $\sum_i n_iP_i$.

## `ZeroDivisor(X): RieSrfElt -> DivRieSrfElt`

Construct the zero divisor for the Riemann surface $X$.

## `RiemannSurface(D): DivRieSrfElt -> RieSrf`

The Riemann surface associated with the divisor $D$ is returned.

## `Support(D): DivRieSrfElt -> SeqEnum[RieSrfPt], SeqEnum[RngIntElt]`

Given a divisor $D= \sum_i n_iP_i$ with all $n_i$ nonzero, the sequence of points $P_i$ and the sequence of their multiplicities $n_i$ are returned.

## `Degree(D): DivRieSrfElt -> RngIntElt`

The sum of the multiplicities $n_i$ of the points $P_i$ supporting the divisor $D = \sum_I N_Ip_I$ is returned.

## `RandomDivisor(X, d): RieSrf, RngIntElt -> RieSrfDivElt`

```magma
Ht  : RngIntElt                    Default: 10^5
Zero: BoolElt                      Default: true
```

Given a Riemann surface $X$ and a positive integer $d$ return a random divisor for $X$ of degree $d$. The maximum size of the coefficients can be bounded by assigning a positive integer to the parameter `Ht`. If parameter `Zero` is set to `true`, the degree of the returned divisor will be zero.
