Equivariant CSM classes of coincident root loci.
This library contians a set of function to compute, among others, the GL(2)
-equivariant Chern-Schwartz-MacPherson classes of coincident root loci, which are subvarieties of the space of unordered n
-tuples of points in the complex projective line. To such an n
-tuples we can associate a partition of n
given by the multiplicities of the distinct points; this stratifies the set of all n
-tuples, and we call these strata "coincident root loci". This package is supplementary software for a forthcoming paper.
Characteristic classes of coincident root loci
Coincident root loci (or discriminant strata) are subsets of the space of homogeneous polynomials in two variables defined by root multiplicities: A nonzero degree n polynomial has n roots in the complex projective line P^1, but some of these can coincide, which gives us a partition of n. Hence for each partition lambda we get a set of polynomials (those with root multiplicities given by lambda), which together stratify the space of these polynomials, which (modulo multiplying by scalars) is P^n. These are quasi-projective varieties, invariant under the action of GL(2); their closures are highly singular projective varieties, making them a good example for studying invariants of singular varieties.
This package contains a number of different algorithms to compute invariants and characteristic classes of these varieties:
- degree
- Euler characteristic
- the fundamental class in equivariant cohomology
- Chern-Schwartz-MacPherson (CSM) class, Segre-SM class
- equivariant CSM class
- Hirzebruch Chi-y genus
- Todd class, motivic Hirzebruch class
- motivic Chern class
- equivariant motivic Chern class
Some of the algorithms are implemented in Mathematica instead of (or in addition to) Haskell.
Another (better organized) Mathematica implementation is available at https://github.com/bkomuves/mathematica-packages.
Example usage
For example if you want to know what is the equivariant CSM class of the (open) loci corresponding to the partition [2,2,1,1], you can use the following piece of code:
{-# LANGUAGE TypeApplications #-}
import Math.Combinat.Partitions
import Math.RootLoci.Algebra.SymmPoly ( AB )
import Math.Algebra.Polynomial.Pretty ( pretty )
import Math.RootLoci.CSM.Equivariant.Umbral
csm ps = umbralOpenCSM @AB (mkPartition ps)
main = do
putStrLn $ pretty $ csm [2,2,1,1]