This type implements S_{n} symmetric divisors on the moduli space of stable n-pointed genus 0 curves M_{0,n}.
The standard basis of the Q-vector space of S_{n} symmetric divisors on M_{0,n} is given by the boundary divisors B_{i}, as we now explain. Let Δ_{I} be the closure of the locus of curves with two irreducible components meeting at one node such that the marked points with labels in I lie on the first component, and the marked points with labels in I^{c} lie on the second component. Then B_{i}= ∑_{#I=i} Δ_{I}, and the divisors B_{2}, ..., B_{[n/2]} form a basis of the space of symmetric divisors. See [KM].
Symmetric divisors are implemented as hash tables. The key "NumberOfPoints" records the number of marked points, i.e., the n in M_{0,n}. The keys must be integers between 2 and [n/2]; the value of the key i is the coefficient of B_{i} when a divisor D is written in the standard basis.
An object of the "SymmetricDivisorM0nbar" class can be created using the function symmetricDivisorM0nbar in either one of two ways: by entering n and a linear polynomial in the B_{i}’s, or entering n and a list of coefficients.
Methods are included for adding two symmetric divisors, negating a divisor, multiplying a divisor by a scalar, and testing equality of two divisors. The function coefficientList returns the list of the coefficients.
The object SymmetricDivisorM0nbar is a type, with ancestor classes HashTable < Thing.