# SymmetricDivisorM0nbar -- the class of S_n symmetric divisors on the moduli space of stable n-pointed genus 0 curves

## Description

This type implements $S_n$ symmetric divisors on the moduli space of stable n-pointed genus 0 curves $\bar{M}_{0,n}$.

The standard basis of the $Q$-vector space of $S_n$ symmetric divisors on $\bar{M}_{0,n}$ is given by the boundary divisors B_i, as we now explain. Let $\Delta_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= \sum_{\#I=i} \Delta_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 $\bar{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.

## Methods that use an object of class SymmetricDivisorM0nbar :

• - SymmetricDivisorM0nbar -- negate a symmetric divisor
• "coefficientList(SymmetricDivisorM0nbar)" -- see coefficientList -- the coefficients of a symmetric divisor D in the standard basis
• expression(SymmetricDivisorM0nbar) (missing documentation)
• "isExtremalSymmetricFDivisor(SymmetricDivisorM0nbar)" -- see isExtremalSymmetricFDivisor -- tests whether an S_n symmetric divisor spans an extremal ray of the cone of symmetric F-divisors
• "isSymmetricFDivisor(SymmetricDivisorM0nbar)" -- see isSymmetricFDivisor -- checks whether a symmetric divisor intersects all the F-curves nonnegatively
• "killsCurves(SymmetricDivisorM0nbar)" -- see killsCurves -- given an S_n symmetric divisor D, produces a list of symmetric F-curves C such that C dot D = 0
• net(SymmetricDivisorM0nbar) (missing documentation)
• Number * SymmetricDivisorM0nbar -- multiply a symmetric divisor by a number
• "scale(SymmetricDivisorM0nbar)" -- see scale -- reduces a list or divisor by the gcd of its coefficients
• "symmetricCurveDotDivisorM0nbar(List,SymmetricDivisorM0nbar)" -- see symmetricCurveDotDivisorM0nbar -- the intersection number of a symmetric F-curve C with the symmetric divisor D
• SymmetricDivisorM0nbar + SymmetricDivisorM0nbar -- add two $S_n$ symmetric divisors
• SymmetricDivisorM0nbar == SymmetricDivisorM0nbar -- test equality of two symmetric divisor classes on $\bar{M}_{0,n}$

## For the programmer

The object SymmetricDivisorM0nbar is a type, with ancestor classes HashTable < Thing.