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 Pi belonging to Riemann surface X and a sequence V of integers ni, construct the formal divisor ∑i niPi.
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= ∑i niPi with all ni nonzero, the sequence of points Pi and the sequence of their multiplicities ni are returned.
Degree(D) : DivRieSrfElt -> RngIntElt
The sum of the multiplicities ni of the points Pi supporting the divisor D = ∑I NIpI is returned.
RandomDivisor(X,d) : RieSrf, RngIntElt -> RieSrfDivElt
    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.
V2.28, 13 July 2023