This is ConformalBlocks.info, produced by Macaulay2, version 1.25.05

ConformalBlocks -- for vector bundles of conformal blocks on the moduli space of curves
***************************************************************************************

Description
===========

Vector bundles of conformal blocks are vector bundles on the moduli stack of
Deligne-Mumford stable n-pointed genus g curves $\bar{M}_{g,n}$ that arise in
conformal field theory.  Each triple $(\mathbf{g},l,(\lambda_1,...,\lambda_n))$
with $\mathbf{g}$ a simple Lie algebra, $l$ a nonnegative integer called the
level, and $(\lambda_1,...,\lambda_n)$ an n-tuple of dominant integral weights
of $\mathbf{g}$ specifies a conformal block bundle
$V=V(\mathbf{g},l,(\lambda_1,...,\lambda_n))$.  This package computes ranks and
first Chern classes of conformal block bundles on $\bar{M}_{0,n}$ using
formulas from Fakhruddin's paper [Fakh].

Most of the functions are in this package are for $S_n$ symmetric divisors
and/or symmetrizations of divisors, but a few functions are included for
non-symmetric divisors as well.

Some of the documentation nodes refer to books, papers, and preprints.  Here is
a link to the Bibliography.

Between versions 1.x and 2.0, the package was rewritten in a more
object-oriented way, and the basic Lie algebra functions were moved into a
separate package called LieTypes.

Author
======

  * Dave Swinarski <dswinarski@fordham.edu>

Certification a gold star
=========================

Version 0.5 of this package was accepted for publication in volume 8 (see
https://msp.org/jsag/2018/8-1/ ) of The Journal of Software for Algebra and
Geometry (see https://msp.org/jsag/ ) on 2 August 2018, in the article Software
for computing conformal block divisors on bar M_0,n (see
https://msp.org/jsag/2018/8-1/p08.xhtml ) (DOI: 10.2140/jsag.2018.8.81 (see
https://doi.org/10.2140/jsag.2018.8.81 )). That version can be obtained from
the journal (see https://msp.org/jsag/2018/8-1/jsag-v8-n1-x08-ConformalBlocks.
m2 ).

Version
=======

This documentation describes version 2.4 of ConformalBlocks.

Citation
========

If you have used this package in your research, please cite it as follows:

+----------------------------------------------------------------------------+
|@misc{ConformalBlocksSource,                                                |
|  title = {{ConformalBlocks: for conformal block divisors. Version~2.4}},   |
|  author = {Dave Swinarski},                                                |
|  howpublished = {A \emph{Macaulay2} package available at                   |
|    \url{https://github.com/Macaulay2/M2/tree/master/M2/Macaulay2/packages}}|
|}                                                                           |
|                                                                            |
|@article{ConformalBlocksArticle,                                            |
|  title = {{Software for computing conformal block divisors on bar M_0,n}}, |
|  author = {Dave Swinarski},                                                |
|  journal = {The Journal of Software for Algebra and Geometry},             |
|  volume = {8},                                                             |
|  year = {2018},                                                            |
|}                                                                           |
|                                                                            |
+----------------------------------------------------------------------------+

Exports
=======

  * Types
      * ConformalBlockVectorBundle -- the
        class of conformal block vector bundles on the moduli space of
        n-pointed genus g curves
      * SymmetricDivisorM0nbar -- the class of
        S_n symmetric divisors on the moduli space of stable n-pointed genus 0
        curves
  * Functions and commands
      * basisOfSymmetricCurves -- produces a
        basis of symmetric curves
      * canonicalDivisorM0nbar -- returns the
        class of the canonical divisor on the moduli space of stable n-pointed
        genus 0 curves
      * coefficientList -- the coefficients of a
        symmetric divisor D in the standard basis
      * conformalBlockDegreeM04bar, --
        computes the degree of a conformal block bundle on $\bar{M}_{0,4}$
      * conformalBlockRank -- computes the rank of
        the conformal block vector bundle
      * conformalBlockVectorBundle, --
        creates an object of class ConformalBlockVectorBundle
      * FCurveDotConformalBlockDivisor,
        -- intersection of an F-curve with a conformal block divisor
      * FdotBjIntMat -- matrix of intersection numbers
        between F-curves and divisors on $\bar{M}_{0,n}$
      * isExtremalSymmetricFDivisor, --
        tests whether an S_n symmetric divisor spans an extremal ray of the
        cone of symmetric F-divisors
      * isSymmetricFDivisor -- checks whether a
        symmetric divisor intersects all the F-curves nonnegatively
      * kappaDivisorM0nbar -- the class of the
        divisor kappa
      * killsCurves -- given an S_n symmetric divisor D,
        produces a list of symmetric F-curves C such that C dot D = 0
      * psiDivisorM0nbar -- returns the class of the
        divisor $\Psi$
      * scale -- reduces a list or divisor by the gcd of its
        coefficients
      * symmetricCurveDotDivisorM0nbar,
        -- the intersection number of a symmetric F-curve C with the symmetric
        divisor D
      * symmetricDivisorM0nbar -- create a
        symmetric divisor on the moduli space of stable pointed genus 0 curves
      * symmetricFCurves -- a list of all symmetric
        F-curves given n
      * symmetrizedConformalBlockDivisor
        -- computes the symmetrization of the
        first Chern class of a conformal block vector bundle
  * Methods
      * - SymmetricDivisorM0nbar -- negate a
        symmetric divisor
      * "basisOfSymmetricCurves(ZZ)" -- see basisOfSymmetricCurves,
        -- produces a basis of symmetric curves
      * "canonicalDivisorM0nbar(ZZ)" -- see canonicalDivisorM0nbar,
        -- returns the class of the canonical divisor
        on the moduli space of stable n-pointed genus 0 curves
      * "coefficientList(SymmetricDivisorM0nbar)" -- see coefficientList,
        -- the coefficients of a symmetric divisor D in the
        standard basis
      * "conformalBlockDegreeM04bar(ConformalBlockVectorBundle)" -- see
        conformalBlockDegreeM04bar, -- computes the
        degree of a conformal block bundle on $\bar{M}_{0,4}$
      * "conformalBlockRank(ConformalBlockVectorBundle)" -- see
        conformalBlockRank, -- computes the rank of the
        conformal block vector bundle
      * "conformalBlockVectorBundle(LieAlgebra,ZZ,List,ZZ)" -- see
        conformalBlockVectorBundle, -- creates an
        object of class ConformalBlockVectorBundle
      * expression(ConformalBlockVectorBundle) (missing documentation)
      * expression(SymmetricDivisorM0nbar) (missing documentation)
      * "FCurveDotConformalBlockDivisor(List,ConformalBlockVectorBundle)" --
        see FCurveDotConformalBlockDivisor,
        -- intersection of an F-curve with a
        conformal block divisor
      * "FdotBjIntMat(ZZ)" -- see FdotBjIntMat, -- matrix
        of intersection numbers between F-curves and divisors on
        $\bar{M}_{0,n}$
      * "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
      * "kappaDivisorM0nbar(ZZ)" -- see kappaDivisorM0nbar,
        -- the class of the divisor kappa
      * "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(ConformalBlockVectorBundle) (missing documentation)
      * net(SymmetricDivisorM0nbar) (missing documentation)
      * Number * SymmetricDivisorM0nbar
        -- multiply a symmetric divisor by a number
      * "psiDivisorM0nbar(ZZ)" -- see psiDivisorM0nbar,
        -- returns the class of the divisor $\Psi$
      * "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(ZZ,Expression)" -- see
        symmetricDivisorM0nbar, -- create a symmetric
        divisor on the moduli space of stable pointed genus 0 curves
      * "symmetricDivisorM0nbar(ZZ,IndexedVariable)" -- see
        symmetricDivisorM0nbar, -- create a symmetric
        divisor on the moduli space of stable pointed genus 0 curves
      * "symmetricDivisorM0nbar(ZZ,List)" -- see symmetricDivisorM0nbar,
        -- create a symmetric divisor on the moduli
        space of stable pointed genus 0 curves
      * SymmetricDivisorM0nbar + SymmetricDivisorM0nbar
        -- add two $S_n$
        symmetric divisors
      * SymmetricDivisorM0nbar == SymmetricDivisorM0nbar
        -- test equality of
        two symmetric divisor classes on $\bar{M}_{0,n}$
      * "symmetricFCurves(ZZ)" -- see symmetricFCurves,
        -- a list of all symmetric F-curves given n
      * "symmetrizedConformalBlockDivisor(ConformalBlockVectorBundle)" -- see
        symmetrizedConformalBlockDivisor,
        -- computes the symmetrization of the
        first Chern class of a conformal block vector bundle

For the programmer
==================

The object ConformalBlocks, is a package (Macaulay2Doc),
defined in ConformalBlocks.m2.

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:815:0.

- SymmetricDivisorM0nbar -- negate a symmetric divisor
******************************************************

  * Operator: - (Macaulay2Doc),
  * Usage:
        -D
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * E, an instance of the type SymmetricDivisorM0nbar,

Description
===========

Let $Pic(\bar{M}_{0,n})_Q^{S_n}$ denote the vector space of $S_n$-invariant
divisors with rational coefficients.  Here, given an $S_n$ symmetric
$Q$-divisor $D$ on $\bar{M}_{0,n}$, the function returns $-D$.

+---------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,{2,3}) |
|                                       |
|o1 = 2*B  + 3*B                        |
|        2      3                       |
|                                       |
|o1 : S_6-symmetric divisor on M-0-6-bar|
+---------------------------------------+
|i2 : E=-D                              |
|                                       |
|o2 = - 2*B  - 3*B                      |
|          2      3                     |
|                                       |
|o2 : S_6-symmetric divisor on M-0-6-bar|
+---------------------------------------+

Ways to use this method:
========================

  * - SymmetricDivisorM0nbar -- negate a
    symmetric divisor
-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:987:0.

basisOfSymmetricCurves -- produces a basis of symmetric curves
**************************************************************

  * Usage:
        basisOfSymmetricCurves(8)
  * Inputs:
      * n, an integer (Macaulay2Doc),
  * Outputs:
      * B, a list (Macaulay2Doc),

Description
===========

This function returns the list of F curves, $\{F_{1,1,i,n-i-2}:
1 \leq i \leq [n/2]\}$.  This set of curves is a basis for
$H_2(\bar{M}_{0,n})_{Q}^{S_n}$; see e.g. see [AGSS].  The
symmetric F-curve $F_{1,1,i,n-i-2}$ is represented by the list of integers
\{1,1,i,n-i-2\}.

+-----------------------------------------------+
|i1 : basisOfSymmetricCurves(8)                 |
|                                               |
|o1 = {{5, 1, 1, 1}, {4, 2, 1, 1}, {3, 3, 1, 1}}|
|                                               |
|o1 : List                                      |
+-----------------------------------------------+

Ways to use basisOfSymmetricCurves:
===================================

  * "basisOfSymmetricCurves(ZZ)"

For the programmer
==================

The object basisOfSymmetricCurves, is a
method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1149:0.

Bibliography -- Bibliography for the ConformalBlocks package
************************************************************

[AS] Alexeev and Swinarski.  Nef divisors on $\bar{M}_{0,n}$ from GIT. p. 1–21
in Geometry and arithmetic,  EMS Ser. Congr. Rep., Eur. Math. Soc., Zurich,
2012.

[AGSS] Arap, Gibney, Stankewicz, and Swinarski.  $sl_n$ level 1 conformal
blocks on $\bar{M}_{0,n}$.  Int. Math. Res. Not. 7 (2012), 1634-1680.

[Beauville] Beauville.  Conformal blocks, fusion rules, and the Verlinde
formula, (Ramat Gan, 1993),  Israel Math. Conf. Proc., vol. 9, Bar-Ilan Univ.,
Ramat Gan, 1996, pp. 75-96.

[Bourbaki] Bourbaki.  Lie Groups and Lie Algebras.  Chapters 4-6.

[DMS] Di Francesco, Mathieu, and Senechal.  Conformal Field Theory.  Graduate
Texts in Contemporary Physics, Springer.

[Fakh] Fakhruddin.  Chern classes of conformal blocks.  Compact moduli spaces
and vector bundles, 145-176, Contemp. Math., 564 Amer. Math. Soc., Providence,
RI, 2012.

[Humphreys] Humphreys.  Introduction to Lie Algebras and Representation Theory.
Graduate Texts in Mathematics, Springer.

[KM] Keel and McKernan.  Contractible extremal rays. p. 113-128 in Handbook of
Moduli, Vol. II.  Higher Education \& International Press, Beijing-Boston,
2012.

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:845:0.

canonicalDivisorM0nbar -- returns the class of the canonical divisor on the moduli space of stable n-pointed genus 0 curves
***************************************************************************************************************************

  * Usage:
        canonicalDivisorM0nbar(14)
  * Inputs:
      * n, an integer (Macaulay2Doc),
  * Outputs:
      * K, an instance of the type SymmetricDivisorM0nbar,

Description
===========

This function returns the class of the canonical divisor $K$ on the moduli
space $\bar{M}_{0,n}$. See e.g. see [KM], for a formula for $K$
in the standard basis.

+----------------------------------------------------+
|i1 : canonicalDivisorM0nbar(14)                     |
|                                                    |
|        2       7      14      19      22      23   |
|o1 = - --*B  + --*B  + --*B  + --*B  + --*B  + --*B |
|       13  2   13  3   13  4   13  5   13  6   13  7|
|                                                    |
|o1 : S_14-symmetric divisor on M-0-14-bar           |
+----------------------------------------------------+

Ways to use canonicalDivisorM0nbar:
===================================

  * "canonicalDivisorM0nbar(ZZ)"

For the programmer
==================

The object canonicalDivisorM0nbar, is a
method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1333:0.

coefficientList -- the coefficients of a symmetric divisor D in the standard basis
**********************************************************************************

  * Usage:
        coefficientList(D)
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * L, a list (Macaulay2Doc),

Description
===========

This function returns a list of the coefficients of a symmetric divisor on
$\bar{M}_{0,n}$ in the standard basis.

+--------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,2*B_2+3*B_3)|
|                                            |
|o1 = 2*B  + 3*B                             |
|        2      3                            |
|                                            |
|o1 : S_6-symmetric divisor on M-0-6-bar     |
+--------------------------------------------+
|i2 : coefficientList(D)                     |
|                                            |
|o2 = {2, 3}                                 |
|                                            |
|o2 : List                                   |
+--------------------------------------------+

See also
========

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

Ways to use coefficientList:
============================

  * "coefficientList(SymmetricDivisorM0nbar)"

For the programmer
==================

The object coefficientList, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1069:0.

conformalBlockDegreeM04bar -- computes the degree of a conformal block bundle on $\bar{M}_{0,4}$
************************************************************************************************

  * Usage:
        conformalBlockDegreeM04bar(V)
  * Inputs:
      * V, an instance of the type ConformalBlockVectorBundle,
  * Outputs:
      * d, an integer (Macaulay2Doc),

Description
===========

This function implements the formula given in [Fakh],
Corollary 3.5 for computing the degree of a conformal block vector bundle $V$
on $\bar{M}_{0,4}$.

The first line of the example below shows that the conformal block bundle
$V(sl_3,1,(\omega_1,\omega_1,\omega_2,\omega_2))$ has degree 1 on
$\bar{M}_{0,4} \cong \mathbb{P}^1$. The second line shows that this vector
bundle is a line bundle.  Hence,
$V(sl_3,1,(\omega_1,\omega_1,\omega_2,\omega_2))$ is isomorphic to
$\mathcal{O}(1)$.

+----------------------------------------------------------------------+
|i1 : sl_3 = simpleLieAlgebra("A",2);                                  |
+----------------------------------------------------------------------+
|i2 : V=conformalBlockVectorBundle(sl_3,1,{{1,0},{1,0},{0,1},{0,1}},0);|
+----------------------------------------------------------------------+
|i3 : conformalBlockDegreeM04bar(V)                                    |
|                                                                      |
|o3 = 1                                                                |
+----------------------------------------------------------------------+
|i4 : conformalBlockRank(V)                                            |
|                                                                      |
|o4 = 1                                                                |
+----------------------------------------------------------------------+

Ways to use conformalBlockDegreeM04bar:
=======================================

  * "conformalBlockDegreeM04bar(ConformalBlockVectorBundle)"

For the programmer
==================

The object conformalBlockDegreeM04bar, is a
method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1518:0.

conformalBlockRank -- computes the rank of the conformal block vector bundle
****************************************************************************

  * Usage:
        conformalBlockRank(V)
  * Inputs:
      * V, an instance of the type ConformalBlockVectorBundle,
  * Outputs:
      * r, an integer (Macaulay2Doc),

Description
===========

This function uses propagation and factorization to recursively compute ranks
in terms of the ranks on $\bar{M}_{0,3}$.  These are determined by the
so-called fusion rules and are computed via the function
fusionCoefficient (LieTypes), in the LieTypes,
package.  See [Beauville], for details on
these topics.

In the example below we compute the rank of the conformal block bundle
$V(sl_3,2,(\omega_1,\omega_1,\omega_2,\omega_2))$.

+---------------------------------------------------------------------+
|i1 : sl_3=simpleLieAlgebra("A",2);                                   |
+---------------------------------------------------------------------+
|i2 : V=conformalBlockVectorBundle(sl_3,2,{{1,0},{1,0},{0,1},{0,1}},0)|
|                                                                     |
|o2 = V                                                               |
|                                                                     |
|o2 : Conformal block vector bundle on M-0-4-bar                      |
+---------------------------------------------------------------------+
|i3 : conformalBlockRank(V)                                           |
|                                                                     |
|o3 = 2                                                               |
+---------------------------------------------------------------------+

Ways to use conformalBlockRank:
===============================

  * "conformalBlockRank(ConformalBlockVectorBundle)"

For the programmer
==================

The object conformalBlockRank, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1452:0.

ConformalBlockVectorBundle -- the class of conformal block vector bundles on the moduli space of n-pointed genus g curves
*************************************************************************************************************************

Description
===========

This type implements conformal block vector bundles on the moduli space of
n-pointed genus g curves.

Conformal block vector bundles are implemented as hash tables.  The key
"LieAlgebra" records the Lie algebra used to define the conformal block.  The
key "Level" records the level.  The key "Weights" records the weights.  The key
"Genus" records the $g$ in $\bar{M}_{g,n}$.  The key "NumberOfPoints" records
the number of marked points, i.e., the $n$ in $\bar{M}_{g,n}$.

An object of the "ConformalBlockVectorBundle" class can be created using the
function conformalBlockVectorBundle.

Functions and methods returning an object of class ConformalBlockVectorBundle:
==============================================================================

  * conformalBlockVectorBundle -- creates an
    object of class ConformalBlockVectorBundle

Methods that use an object of class ConformalBlockVectorBundle:
===============================================================

  * "conformalBlockDegreeM04bar(ConformalBlockVectorBundle)" -- see
    conformalBlockDegreeM04bar, -- computes the
    degree of a conformal block bundle on $\bar{M}_{0,4}$
  * "conformalBlockRank(ConformalBlockVectorBundle)" -- see
    conformalBlockRank, -- computes the rank of the
    conformal block vector bundle
  * expression(ConformalBlockVectorBundle) (missing documentation)
  * "FCurveDotConformalBlockDivisor(List,ConformalBlockVectorBundle)" -- see
    FCurveDotConformalBlockDivisor, --
    intersection of an F-curve with a conformal block divisor
  * net(ConformalBlockVectorBundle) (missing documentation)
  * "symmetrizedConformalBlockDivisor(ConformalBlockVectorBundle)" -- see
    symmetrizedConformalBlockDivisor, --
    computes the symmetrization of the first Chern class of a conformal block
    vector bundle

For the programmer
==================

The object ConformalBlockVectorBundle, is a
type (Macaulay2Doc), with ancestor classes HashTable (Macaulay2Doc),
< Thing (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:887:0.

conformalBlockVectorBundle -- creates an object of class ConformalBlockVectorBundle
***********************************************************************************

  * Usage:
        conformalBlockVectorBundle(g,l,w,genus)
  * Inputs:
      * g, an instance of the type LieAlgebra (LieTypes),
      * l, an integer (Macaulay2Doc),
      * w, a list (Macaulay2Doc),
      * genus, an integer (Macaulay2Doc),
  * Outputs:
      * V, an instance of the type ConformalBlockVectorBundle,

Description
===========

This function creates an object of the type ConformalBlockVectorBundle.

In the example below we create the conformal block bundle
$V(sl_3,2,(\omega_1,\omega_1,\omega_1,\omega_2,\omega_2,\omega_2))$ on
$\bar{M}_{0,6}$.

+-----------------------------------------------------------------------------+
|i1 : sl_3=simpleLieAlgebra("A",2);                                           |
+-----------------------------------------------------------------------------+
|i2 : V=conformalBlockVectorBundle(sl_3,2,{{1,0},{1,0},{1,0},{0,1},{0,1},{0,1 |
|                                                                             |
|o2 = V                                                                       |
|                                                                             |
|o2 : Conformal block vector bundle on M-0-6-bar                              |
|-----------------------------------------------------------------------------|
|}},0)                                                                        |
+-----------------------------------------------------------------------------+

Ways to use conformalBlockVectorBundle:
=======================================

  * "conformalBlockVectorBundle(LieAlgebra,ZZ,List,ZZ)"

For the programmer
==================

The object conformalBlockVectorBundle, is a
method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1414:0.

F curve -- F curves in the moduli space of stable n-pointed genus zero curves
*****************************************************************************

Let $P={P_0,P_1,P_2,P_3}$ be a partition of $\{1,...,n\}$ into four nonempty
subsets.  Fix four (arithmetic) genus zero at worst nodal curves $C_j$ for
$j=0,1,2,3$, and $\#(P_j)$ marked points on each curve.  We call the curves
$C_j$ the tails.  Mark one additional point $x_j$ on each tail. Next, consider
$\mathbb{P}^1$ with four marked points, $y_0,...,y_3$; we call this the spine.
Glue the four tails to the spine by identifying $x_j$ and $y_j$.  Then, as the
cross ratio of $y_0,...,y_3$ varies, we sweep out a curve $F_{P}$ in
$\bar{M}_{0,n}$.

The homology class of $F_{P}$ only depends on the partition $P$, and not on the
choice of the tails $C_j$ or the choices of marked points.  The classes of the
F-curves span $H_2(\bar{M}_{0,n},Q)$.

If we only consider F-curves up to $S_n$ symmetry, then it is enough to keep
track of the four integers $\#(P_0)$, $\#(P_1)$, $\#(P_2)$, $\#(P_3)$.

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:871:0.

FCurveDotConformalBlockDivisor -- intersection of an F-curve with a conformal block divisor
*******************************************************************************************

  * Usage:
        FCurveDotConformalBlockDivisor(C,V)
  * Inputs:
      * C, a list (Macaulay2Doc),
      * V, an instance of the type ConformalBlockVectorBundle,
  * Outputs:
      * k, an integer (Macaulay2Doc),

Description
===========

This function implements the formulas given in [Fakh],
Prop. 2.7 and Cor. 3.5.  Note: in contrast with most of the other functions in
this package, this function is for UNsymmetrized curves and bundles.  The
F curve, must be entered as a partition of the set {1,...,n} into four
nonempty subsets.

The example below shows that the first Chern class of the conformal block
bundle $V(sl_2,1,(1,1,1,1,1,1))$ intersects the F curve $F_{123,4,5,6}$
positively, and intersects $F_{12,34,5,6}$ in degree zero.

+----------------------------------------------------------------------------+
|i1 : sl_2=simpleLieAlgebra("A",1);                                          |
+----------------------------------------------------------------------------+
|i2 : V=conformalBlockVectorBundle(sl_2,1,{{1},{1},{1},{1},{1},{1}},0);      |
+----------------------------------------------------------------------------+
|i3 : FCurveDotConformalBlockDivisor({{1,2,3},{4},{5},{6}},V)                |
|                                                                            |
|o3 = 1                                                                      |
+----------------------------------------------------------------------------+
|i4 : FCurveDotConformalBlockDivisor({{1,2},{3,4},{5},{6}},V)                |
|                                                                            |
|o4 = 0                                                                      |
+----------------------------------------------------------------------------+
|i5 : sl_3=simpleLieAlgebra("A",2);                                          |
+----------------------------------------------------------------------------+
|i6 : W=conformalBlockVectorBundle(sl_3,1,{{0,1},{1,0},{1,0},{1,0},{1,0}},0);|
+----------------------------------------------------------------------------+
|i7 : FCurveDotConformalBlockDivisor({{4,5},{1},{2},{3}},W)                  |
|                                                                            |
|o7 = 1                                                                      |
+----------------------------------------------------------------------------+

Ways to use FCurveDotConformalBlockDivisor:
===========================================

  * "FCurveDotConformalBlockDivisor(List,ConformalBlockVectorBundle)"

For the programmer
==================

The object FCurveDotConformalBlockDivisor,
is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1554:0.

FdotBjIntMat -- matrix of intersection numbers between F-curves and divisors on $\bar{M}_{0,n}$
***********************************************************************************************

  * Usage:
        FdotBjIntMat(n)
  * Inputs:
      * n, an integer (Macaulay2Doc),
  * Outputs:
      * M, a matrix (Macaulay2Doc),

Description
===========

This function produces the matrix of intersection numbers between the
standard basis, of $S_n$ symmetric divisors and the most
popular basis of $S_n$ symmetric F curves.  Specifically, the
i,j-th entry of the matrix is $F_{n-i-2,i,1,1} . B_j$. This matrix can be used
for instance to write a divisor in the standard basis if its intersection
numbers with the F curves are known. See [AGSS], Section 4
for explicit formulas.

These intersection numbers are integers, but we create the matrix over the
rational numbers so that Macaulay2 will invert it correctly if we want to do so
later.

In the example below, we use this function to find the divisor class of an
$S_{12}$ symmetric divisor $D$ on $\bar{M}_{0,12}$ such that $D .
F_{1,1,i,12-i-2} = 1$ if $i=0$, and 0 otherwise.  Then we check that $D$ has
the correct intersection numbers.

+---------------------------------------------------------------------+
|i1 : M=FdotBjIntMat(12)                                              |
|                                                                     |
|o1 = | 3 -1 0  0  0  |                                               |
|     | 0 2  -1 0  0  |                                               |
|     | 1 -1 2  -1 0  |                                               |
|     | 1 0  -1 2  -1 |                                               |
|     | 1 0  0  -2 2  |                                               |
|                                                                     |
|              5       5                                              |
|o1 : Matrix QQ  <-- QQ                                               |
+---------------------------------------------------------------------+
|i2 : N=M^-1                                                          |
|                                                                     |
|o2 = | 2/11   2/11  2/11  2/11  1/11  |                              |
|     | -5/11  6/11  6/11  6/11  3/11  |                              |
|     | -10/11 1/11  12/11 12/11 6/11  |                              |
|     | -13/11 -2/11 9/11  20/11 10/11 |                              |
|     | -14/11 -3/11 8/11  19/11 15/11 |                              |
|                                                                     |
|              5       5                                              |
|o2 : Matrix QQ  <-- QQ                                               |
+---------------------------------------------------------------------+
|i3 : v=N*(matrix{{1},{0},{0},{0},{0}})                               |
|                                                                     |
|o3 = | 2/11   |                                                      |
|     | -5/11  |                                                      |
|     | -10/11 |                                                      |
|     | -13/11 |                                                      |
|     | -14/11 |                                                      |
|                                                                     |
|              5       1                                              |
|o3 : Matrix QQ  <-- QQ                                               |
+---------------------------------------------------------------------+
|i4 : D=symmetricDivisorM0nbar(12,flatten entries v)                  |
|                                                                     |
|      2       5      10      13      14                              |
|o4 = --*B  - --*B  - --*B  - --*B  - --*B                            |
|     11  2   11  3   11  4   11  5   11  6                           |
|                                                                     |
|o4 : S_12-symmetric divisor on M-0-12-bar                            |
+---------------------------------------------------------------------+
|i5 : symmetricCurveDotDivisorM0nbar({1,1,1,9},D)                     |
|                                                                     |
|o5 = 1                                                               |
|                                                                     |
|o5 : QQ                                                              |
+---------------------------------------------------------------------+
|i6 : apply(5, i-> symmetricCurveDotDivisorM0nbar({1,1,i+1,12-i-3},D))|
|                                                                     |
|o6 = {1, 0, 0, 0, 0}                                                 |
|                                                                     |
|o6 : List                                                            |
+---------------------------------------------------------------------+

Ways to use FdotBjIntMat:
=========================

  * "FdotBjIntMat(ZZ)"

For the programmer
==================

The object FdotBjIntMat, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1208:0.

isExtremalSymmetricFDivisor -- tests whether an S_n symmetric divisor spans an extremal ray of the cone of symmetric F-divisors
*******************************************************************************************************************************

  * Usage:
        isExtremalSymmetricFDivisor(D)
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * b, a Boolean value (Macaulay2Doc),

Description
===========

We say a symmetric divisor on $\bar{M}_{0,n}$ is a symmetric F-divisor if $D  .
F \geq 0$ for every F curve.

Let $SF_{0,n}$ denote the cone of all $S_n$ symmetric divisors on
$\bar{M}_{0,n}$ that intersect all the F-curves nonnegatively.  This cone
contains the cone of $S_n$ symmetric nef divisors. (Fulton's F Conjecture
predicts that the two cones are equal).  See [AGSS],
Section 2 for more details.

This function first checks to see if $D$ is an F-divisor.  If not, the function
returns false.  If so, the function goes on to check  whether $D$ is an
extremal ray of the cone $SF_{0,n}$. It does so by finding all the F-curves
which $D$ intersects in degree zero (i.e., finding how many facets of the cone
$D$ lies on) and then checking to see whether this set contains sufficiently
many independent hyperplanes to determine an extremal ray.

In the example below, we check that the divisor $3B_2+2B_3+4B_4$ is extremal in
the cone $SF_{0,8}$ for $n=8$.  We also check that the divisor kappa (see
kappaDivisorM0nbar), which is known to be very ample, is
not an extremal ray of $SF_{0,8}$.

+--------------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(8,3*B_2+2*B_3+4*B_4)|
|                                                  |
|o1 = 3*B  + 2*B  + 4*B                            |
|        2      3      4                           |
|                                                  |
|o1 : S_8-symmetric divisor on M-0-8-bar           |
+--------------------------------------------------+
|i2 : isExtremalSymmetricFDivisor(D)               |
|                                                  |
|o2 = true                                         |
+--------------------------------------------------+
|i3 : D=kappaDivisorM0nbar(8)                      |
|                                                  |
|     5      8      9                              |
|o3 = -*B  + -*B  + -*B                            |
|     7  2   7  3   7  4                           |
|                                                  |
|o3 : S_8-symmetric divisor on M-0-8-bar           |
+--------------------------------------------------+
|i4 : isExtremalSymmetricFDivisor(D)               |
|                                                  |
|o4 = false                                        |
+--------------------------------------------------+

Ways to use isExtremalSymmetricFDivisor:
========================================

  * "isExtremalSymmetricFDivisor(SymmetricDivisorM0nbar)"

For the programmer
==================

The object isExtremalSymmetricFDivisor, is a
method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1306:0.

isSymmetricFDivisor -- checks whether a symmetric divisor intersects all the F-curves nonnegatively
***************************************************************************************************

  * Usage:
        isSymmetricFDivisor(D)
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * b, a Boolean value (Macaulay2Doc),

Description
===========

We say a symmetric divisor on $\bar{M}_{0,n}$ is a symmetric F-divisor if $D  .
F_{I_1,I_2,I_3,I_4} \geq 0$ for every F curve.

In the example below, we see that for $n=8$, the divisor $3B_2+2B_3+4B_4$ is a
symmetric F-divisor, while the divisor $B_2$ is not.

+-----------------------------------------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(8,3*B_2+2*B_3+4*B_4)                           |
|                                                                             |
|o1 = 3*B  + 2*B  + 4*B                                                       |
|        2      3      4                                                      |
|                                                                             |
|o1 : S_8-symmetric divisor on M-0-8-bar                                      |
+-----------------------------------------------------------------------------+
|i2 : isSymmetricFDivisor(D)                                                  |
|                                                                             |
|o2 = true                                                                    |
+-----------------------------------------------------------------------------+
|i3 : D=symmetricDivisorM0nbar(8,B_2)                                         |
|                                                                             |
|o3 = B                                                                       |
|      2                                                                      |
|                                                                             |
|o3 : S_8-symmetric divisor on M-0-8-bar                                      |
+-----------------------------------------------------------------------------+
|i4 : isSymmetricFDivisor(D)                                                  |
|This divisor has negative intersection with the F curve F_{3, 2, 2, 1} (and  |
|                                                                             |
|o4 = false                                                                   |
|-----------------------------------------------------------------------------|
|maybe others too)                                                            |
+-----------------------------------------------------------------------------+

Ways to use isSymmetricFDivisor:
================================

  * "isSymmetricFDivisor(SymmetricDivisorM0nbar)"

For the programmer
==================

The object isSymmetricFDivisor, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1267:0.

kappaDivisorM0nbar -- the class of the divisor kappa
****************************************************

  * Usage:
        kappaDivisorM0nbar(14)
  * Inputs:
      * n, an integer (Macaulay2Doc),
  * Outputs:
      * D, an instance of the type SymmetricDivisorM0nbar,

Description
===========

On $\bar{M}_{0,n}$, the divisor kappa may be defined by $K + \Delta$, where $K$
is the canonical divisor, and $\Delta$ is the sum of the boundary classes
$B_i$.  A fun fact is that kappa . $F_{I_1,I_2,I_3,I_4} =1$ for every F curve.

+--------------------------------------------------+
|i1 : kappaDivisorM0nbar(14)                       |
|                                                  |
|     11      20      27      32      35      36   |
|o1 = --*B  + --*B  + --*B  + --*B  + --*B  + --*B |
|     13  2   13  3   13  4   13  5   13  6   13  7|
|                                                  |
|o1 : S_14-symmetric divisor on M-0-14-bar         |
+--------------------------------------------------+

Ways to use kappaDivisorM0nbar:
===============================

  * "kappaDivisorM0nbar(ZZ)"

For the programmer
==================

The object kappaDivisorM0nbar, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1359:0.

killsCurves -- given an S_n symmetric divisor D, produces a list of symmetric F-curves C such that C dot D = 0
**************************************************************************************************************

  * Usage:
        killsCurves(D)
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * L, a list (Macaulay2Doc),

Description
===========

Given a symmetric divisor D on $\bar{M}_{0,n}$, this function returns the list
of symmetric F curves, $C$ such that $D  .  C=0$.

Here is an example from the paper [AGSS],: When n is even,
the divisor $D^n_{1,n/2}$ is  zero on even F-curves and 1 on odd F-curves.
(Here the parity of $F_{a,b,c,d}$ is defined to be the parity of the product
$abcd$.)  In the calculations below, we check this claim for $n=8$.

+--------------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(8,3*B_2+2*B_3+4*B_4)|
|                                                  |
|o1 = 3*B  + 2*B  + 4*B                            |
|        2      3      4                           |
|                                                  |
|o1 : S_8-symmetric divisor on M-0-8-bar           |
+--------------------------------------------------+
|i2 : killsCurves(D)                               |
|                                                  |
|o2 = {{4, 2, 1, 1}, {3, 2, 2, 1}, {2, 2, 2, 2}}   |
|                                                  |
|o2 : List                                         |
+--------------------------------------------------+

Ways to use killsCurves:
========================

  * "killsCurves(SymmetricDivisorM0nbar)"

For the programmer
==================

The object killsCurves, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1236:0.

Number * SymmetricDivisorM0nbar -- multiply a symmetric divisor by a number
***************************************************************************

  * Operator: * (Macaulay2Doc),
  * Usage:
        c*D
  * Inputs:
      * c, a number (Macaulay2Doc),
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * E, an instance of the type SymmetricDivisorM0nbar,

Description
===========

Let $Pic(\bar{M}_{0,n})_R^{S_n}$ denote the vector space of $S_n$-invariant
divisors with coefficients in a ring $R$.  Here, given an $S_n$ symmetric
$R$-divisor $D$ on $\bar{M}_{0,n}$ and a number $c$, the function returns $cD$.

+---------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,{2,3}) |
|                                       |
|o1 = 2*B  + 3*B                        |
|        2      3                       |
|                                       |
|o1 : S_6-symmetric divisor on M-0-6-bar|
+---------------------------------------+
|i2 : 6*D                               |
|                                       |
|o2 = 12*B  + 18*B                      |
|         2       3                     |
|                                       |
|o2 : S_6-symmetric divisor on M-0-6-bar|
+---------------------------------------+

Ways to use this method:
========================

  * Number * SymmetricDivisorM0nbar,
    -- multiply a symmetric divisor by a number
-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1014:0.

psiDivisorM0nbar -- returns the class of the divisor $\Psi$
***********************************************************

  * Usage:
        psiDivisorM0nbar(14)
  * Inputs:
      * n, an integer (Macaulay2Doc),
  * Outputs:
      * D, an instance of the type SymmetricDivisorM0nbar,

Description
===========

Let $U$ be the universal family over $M=\bar{M}_{0,n}$, let $\omega_{U/M}$ be
the relative dualizing sheaf, and let $\sigma_i: M \rightarrow U$ be the
sections defining the marked points. The divisors $\psi_i$ are defined by
$\psi_i := \sigma_i^*(\omega_{U/M})$.  We define the class $\Psi$ by $\Psi =
\psi_1 + ... + \psi_n.$

+--------------------------------------------------+
|i1 : psiDivisorM0nbar(14)                         |
|                                                  |
|     24      33      40      45      48      49   |
|o1 = --*B  + --*B  + --*B  + --*B  + --*B  + --*B |
|     13  2   13  3   13  4   13  5   13  6   13  7|
|                                                  |
|o1 : S_14-symmetric divisor on M-0-14-bar         |
+--------------------------------------------------+

Ways to use psiDivisorM0nbar:
=============================

  * "psiDivisorM0nbar(ZZ)"

For the programmer
==================

The object psiDivisorM0nbar, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1383:0.

scale -- reduces a list or divisor by the gcd of its coefficients
*****************************************************************

  * Usage:
        scale(D)
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * E, an instance of the type SymmetricDivisorM0nbar,

Description
===========

Let $D$ be an $S_n$ symmetric $Q$-divisor on $\bar{M}_{0,n}$.  This function
reduces a symmetric divisor $D$ by the gcd of its coefficients in the
standard basis.  This gives a canonical representative of each
nonzero ray in $Pic(\bar{M}_{0,n})_Q^{S_n}$.

+------------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,288*B_2+144*B_3)|
|                                                |
|o1 = 288*B  + 144*B                             |
|          2        3                            |
|                                                |
|o1 : S_6-symmetric divisor on M-0-6-bar         |
+------------------------------------------------+
|i2 : scale(D)                                   |
|                                                |
|o2 = 2*B  + B                                   |
|        2    3                                  |
|                                                |
|o2 : S_6-symmetric divisor on M-0-6-bar         |
+------------------------------------------------+

Ways to use scale:
==================

  * "scale(SymmetricDivisorM0nbar)"

For the programmer
==================

The object scale, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1095:0.

standard basis -- The standard basis of symmetric divisors for the moduli space of stable n-pointed genus zero curves
*********************************************************************************************************************

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].

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:855:0.

symmetricCurveDotDivisorM0nbar -- the intersection number of a symmetric F-curve C with the symmetric divisor D
***************************************************************************************************************

  * Usage:
        symmetricCurveDotDivisorM0nbar({3,1,1,1},D)
  * Inputs:
      * C, a list (Macaulay2Doc),
      * D, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * k, a rational number (Macaulay2Doc),

Description
===========

This function implements the basic formula of [KM],
Corollary 4.4 for intersecting an $S_n$-symmetric F curve, with
an $S_n$ symmetric divisor on $\bar{M}_{0,n}$.

+------------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,2*B_2+B_3)      |
|                                                |
|o1 = 2*B  + B                                   |
|        2    3                                  |
|                                                |
|o1 : S_6-symmetric divisor on M-0-6-bar         |
+------------------------------------------------+
|i2 : symmetricCurveDotDivisorM0nbar({3,1,1,1},D)|
|                                                |
|o2 = 5                                          |
+------------------------------------------------+
|i3 : E=symmetricDivisorM0nbar(6,B_2+3*B_3)      |
|                                                |
|o3 = B  + 3*B                                   |
|      2      3                                  |
|                                                |
|o3 : S_6-symmetric divisor on M-0-6-bar         |
+------------------------------------------------+
|i4 : symmetricCurveDotDivisorM0nbar({3,1,1,1},E)|
|                                                |
|o4 = 0                                          |
+------------------------------------------------+

Ways to use symmetricCurveDotDivisorM0nbar:
===========================================

  * "symmetricCurveDotDivisorM0nbar(List,SymmetricDivisorM0nbar)"

For the programmer
==================

The object symmetricCurveDotDivisorM0nbar,
is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1124:0.

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.

Functions and methods returning an object of class SymmetricDivisorM0nbar:
==========================================================================

  * canonicalDivisorM0nbar -- returns the class
    of the canonical divisor on the moduli space of stable n-pointed genus 0
    curves
  * kappaDivisorM0nbar -- the class of the divisor
    kappa
  * psiDivisorM0nbar -- returns the class of the
    divisor $\Psi$
  * scale -- reduces a list or divisor by the gcd of its
    coefficients
  * symmetricDivisorM0nbar -- create a symmetric
    divisor on the moduli space of stable pointed genus 0 curves
  * symmetrizedConformalBlockDivisor,
    -- computes the symmetrization of the first Chern class of a conformal
    block vector bundle

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 (Macaulay2Doc), with ancestor classes HashTable (Macaulay2Doc),
< Thing (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:909:0.

symmetricDivisorM0nbar -- create a symmetric divisor on the moduli space of stable pointed genus 0 curves
*********************************************************************************************************

  * Usage:
        symmetricDivisorM0nbar(n,L), symmetricDivisorM0nbar(n,f)
  * Inputs:
      * n, an integer (Macaulay2Doc),
      * L, a list (Macaulay2Doc),
  * Outputs:
      * D, an instance of the type SymmetricDivisorM0nbar,

Description
===========

A symmetric divisor on $\bar{M}_{0,n}$ may be created in either one of two
ways.  The user may either enter the number of marked points $n$ and a linear
polynomial in the standard basis, classes $B_i$, or
enter $n$ and a list of the coefficients of $D$ in the standard basis.  Both
usages are demonstrated in the example below.

+--------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,{2,3})      |
|                                            |
|o1 = 2*B  + 3*B                             |
|        2      3                            |
|                                            |
|o1 : S_6-symmetric divisor on M-0-6-bar     |
+--------------------------------------------+
|i2 : E=symmetricDivisorM0nbar(6,2*B_2+3*B_3)|
|                                            |
|o2 = 2*B  + 3*B                             |
|        2      3                            |
|                                            |
|o2 : S_6-symmetric divisor on M-0-6-bar     |
+--------------------------------------------+
|i3 : D==E                                   |
|                                            |
|o3 = true                                   |
+--------------------------------------------+

Ways to use symmetricDivisorM0nbar:
===================================

  * "symmetricDivisorM0nbar(ZZ,Expression)"
  * "symmetricDivisorM0nbar(ZZ,IndexedVariable)"
  * "symmetricDivisorM0nbar(ZZ,List)"

For the programmer
==================

The object symmetricDivisorM0nbar, is a
method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:934:0.

SymmetricDivisorM0nbar + SymmetricDivisorM0nbar -- add two $S_n$ symmetric divisors
***********************************************************************************

  * Operator: + (Macaulay2Doc),
  * Usage:
        D+E
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
      * E, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * F, an instance of the type SymmetricDivisorM0nbar,

Description
===========

Let $Pic(\bar{M}_{0,n})_Q^{S_n}$ denote the vector space of $S_n$-invariant
divisors with rational coefficients.  Here, given two $S_n$ symmetric
$Q$-divisors $D$ and $E$ on $\bar{M}_{0,n}$, the function returns $D+E$.

+--------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,{1/2,1/3})  |
|                                            |
|     1      1                               |
|o1 = -*B  + -*B                             |
|     2  2   3  3                            |
|                                            |
|o1 : S_6-symmetric divisor on M-0-6-bar     |
+--------------------------------------------+
|i2 : E=symmetricDivisorM0nbar(6,2*B_2+3*B_3)|
|                                            |
|o2 = 2*B  + 3*B                             |
|        2      3                            |
|                                            |
|o2 : S_6-symmetric divisor on M-0-6-bar     |
+--------------------------------------------+
|i3 : D+E                                    |
|                                            |
|     5      10                              |
|o3 = -*B  + --*B                            |
|     2  2    3  3                           |
|                                            |
|o3 : S_6-symmetric divisor on M-0-6-bar     |
+--------------------------------------------+

Ways to use this method:
========================

  * SymmetricDivisorM0nbar + SymmetricDivisorM0nbar
    -- add two $S_n$ symmetric
    divisors
-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:960:0.

SymmetricDivisorM0nbar == SymmetricDivisorM0nbar -- test equality of two symmetric divisor classes on $\bar{M}_{0,n}$
*********************************************************************************************************************

  * Operator: == (Macaulay2Doc),
  * Usage:
        D==E
  * Inputs:
      * D, an instance of the type SymmetricDivisorM0nbar,
      * E, an instance of the type SymmetricDivisorM0nbar,
  * Outputs:
      * b, a Boolean value (Macaulay2Doc),

Description
===========

Two objects of type SymmetricDivisorM0nbar are equal if their underlying hash
tables have the same pairs.

+------------------------------------------------------+
|i1 : D=symmetricDivisorM0nbar(6,{2,1})                |
|                                                      |
|o1 = 2*B  + B                                         |
|        2    3                                        |
|                                                      |
|o1 : S_6-symmetric divisor on M-0-6-bar               |
+------------------------------------------------------+
|i2 : E=scale symmetricDivisorM0nbar(6,288*B_2+144*B_3)|
|                                                      |
|o2 = 2*B  + B                                         |
|        2    3                                        |
|                                                      |
|o2 : S_6-symmetric divisor on M-0-6-bar               |
+------------------------------------------------------+
|i3 : D==E                                             |
|                                                      |
|o3 = true                                             |
+------------------------------------------------------+

Ways to use this method:
========================

  * SymmetricDivisorM0nbar == SymmetricDivisorM0nbar
    -- test equality of two
    symmetric divisor classes on $\bar{M}_{0,n}$
-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1041:0.

symmetricFCurves -- a list of all symmetric F-curves given n
************************************************************

  * Usage:
        symmetricFCurves(8)
  * Inputs:
      * n, an integer (Macaulay2Doc),
  * Outputs:
      * B, a list (Macaulay2Doc),

Description
===========

This is the list of F curves, up to $S_n$ symmetry, i.e., this
function generates partitions of the integer $n$ into 4 positive integers, not
partitions of the set {1,...,n} into four nonempty subsets.

+---------------------------------------------------------------------------+
|i1 : symmetricFCurves(8)                                                   |
|                                                                           |
|o1 = {{5, 1, 1, 1}, {4, 2, 1, 1}, {3, 3, 1, 1}, {3, 2, 2, 1}, {2, 2, 2, 2}}|
|                                                                           |
|o1 : List                                                                  |
+---------------------------------------------------------------------------+

Ways to use symmetricFCurves:
=============================

  * "symmetricFCurves(ZZ)"

For the programmer
==================

The object symmetricFCurves, is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1173:0.

symmetrizedConformalBlockDivisor -- computes the symmetrization of the first Chern class of a conformal block vector bundle
***************************************************************************************************************************

  * Usage:
        symmetrizedConformalBlockDivisor(V)
  * Inputs:
      * V, an instance of the type ConformalBlockVectorBundle,
  * Outputs:
      * D, an instance of the type SymmetricDivisorM0nbar,

Description
===========

This function implements the formula given in [Fakh],
Corollary 3.6.  It computes the symmetrization of the first Chern class of a
conformal block vector bundle: $\sum_{S_n} c_1 V(\mathbf{g},l,(\lambda_{\sigma
1},...\lambda_{\sigma n}))$.

NEW in Version 2.1: Previously there was a separate, faster function to use in
the case that $\lambda_1 = ... = \lambda_n$.  However, now this function
automatically checks for symmetry and uses the faster formula if applicable, so
the user does not need to use two separate functions.

In the example below, we compute the symmetrization of the divisor class of the
conformal block bundle $V(sl_4,1,(\omega_1,\omega_1,\omega_2,\omega_2,\omega_3
,\omega_3))$.

+-----------------------------------------------------------------------------+
|i1 : sl_4 =simpleLieAlgebra("A",3);                                          |
+-----------------------------------------------------------------------------+
|i2 : V=conformalBlockVectorBundle(sl_4,1,{{1,0,0},{1,0,0},{0,1,0},{0,1,0},{0,|
|-----------------------------------------------------------------------------|
|0,1},{0,0,1}},0);                                                            |
+-----------------------------------------------------------------------------+
|i3 : D=symmetrizedConformalBlockDivisor(V)                                   |
|                                                                             |
|o3 = 288*B  + 288*B                                                          |
|          2        3                                                         |
|                                                                             |
|o3 : S_6-symmetric divisor on M-0-6-bar                                      |
+-----------------------------------------------------------------------------+

Ways to use symmetrizedConformalBlockDivisor:
=============================================

  * "symmetrizedConformalBlockDivisor(ConformalBlockVectorBundle)"

For the programmer
==================

The object symmetrizedConformalBlockDivisor,
is a method function (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in ConformalBlocks.m2:1486:0.