coincident-root-loci 0.2 → 0.3
raw patch · 37 files changed
+8626/−612 lines, 37 filesdep +polynomial-algebradep ~coincident-root-locidep ~combinatdep ~containersbinary-addedPVP ok
version bump matches the API change (PVP)
Dependencies added: polynomial-algebra
Dependency ranges changed: coincident-root-loci, combinat, containers
API changes (from Hackage documentation)
- Math.RootLoci.Algebra.FreeMod: FreeMod :: Map base coeff -> FreeMod coeff base
- Math.RootLoci.Algebra.FreeMod: [unFreeMod] :: FreeMod coeff base -> Map base coeff
- Math.RootLoci.Algebra.FreeMod: add :: (Ord b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: coeffOf :: (Ord b, Num c) => b -> FreeMod c b -> c
- Math.RootLoci.Algebra.FreeMod: filterBase :: (Ord a, Ord b) => (a -> Maybe b) -> FreeMod c a -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: findMaxTerm :: (Ord b) => FreeMod c b -> Maybe (b, c)
- Math.RootLoci.Algebra.FreeMod: findMinTerm :: (Ord b) => FreeMod c b -> Maybe (b, c)
- Math.RootLoci.Algebra.FreeMod: flatMap :: (Ord b1, Ord b2, Eq c, Num c) => (b1 -> FreeMod c b2) -> FreeMod c b1 -> FreeMod c b2
- Math.RootLoci.Algebra.FreeMod: flatMap' :: (Ord b1, Ord b2, Eq c2, Num c2) => (c1 -> c2) -> (b1 -> FreeMod c2 b2) -> FreeMod c1 b1 -> FreeMod c2 b2
- Math.RootLoci.Algebra.FreeMod: fromList :: (Eq c, Num c, Ord b) => [(b, c)] -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: generator :: Num c => b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: histogram :: (Ord b, Num c) => [b] -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: instance (GHC.Base.Monoid b, GHC.Classes.Ord b, GHC.Classes.Eq c, GHC.Num.Num c) => GHC.Num.Num (Math.RootLoci.Algebra.FreeMod.FreeMod c b)
- Math.RootLoci.Algebra.FreeMod: instance (GHC.Classes.Eq coeff, GHC.Classes.Eq base) => GHC.Classes.Eq (Math.RootLoci.Algebra.FreeMod.FreeMod coeff base)
- Math.RootLoci.Algebra.FreeMod: instance (GHC.Show.Show coeff, GHC.Show.Show base) => GHC.Show.Show (Math.RootLoci.Algebra.FreeMod.FreeMod coeff base)
- Math.RootLoci.Algebra.FreeMod: invScale :: (Ord b, Eq c, Integral c, Show c) => c -> FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: konst :: (Monoid b) => c -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: linComb :: (Ord b, Eq c, Num c) => [(c, FreeMod c b)] -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: mapBase :: (Ord a, Ord b) => (a -> b) -> FreeMod c a -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: mapCoeff :: (Ord b) => (c1 -> c2) -> FreeMod c1 b -> FreeMod c2 b
- Math.RootLoci.Algebra.FreeMod: mul :: (Ord b, Monoid b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: mulMonom :: (Ord b, Monoid b) => b -> FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: neg :: Num c => FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: newtype FreeMod coeff base
- Math.RootLoci.Algebra.FreeMod: normalize :: (Ord b, Eq c, Num c) => FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: onFreeMod :: (Ord a, Ord b) => (Map a c -> Map b c) -> FreeMod c a -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: onFreeMod' :: (Ord a, Ord b) => (Map a c -> Map b d) -> FreeMod c a -> FreeMod d b
- Math.RootLoci.Algebra.FreeMod: one :: (Monoid b, Num c) => FreeMod c b
- Math.RootLoci.Algebra.FreeMod: product :: (Ord b, Monoid b, Eq c, Num c) => [FreeMod c b] -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: safeEq :: (Ord b, Eq b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> Bool
- Math.RootLoci.Algebra.FreeMod: scale :: (Ord b, Eq c, Num c) => c -> FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: singleton :: (Ord b) => b -> c -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: sub :: (Ord b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: sum :: (Ord b, Eq c, Num c) => [FreeMod c b] -> FreeMod c b
- Math.RootLoci.Algebra.FreeMod: symPoly :: (Ord a, Monoid a) => Int -> [a] -> ZMod a
- Math.RootLoci.Algebra.FreeMod: toList :: FreeMod c b -> [(b, c)]
- Math.RootLoci.Algebra.FreeMod: type QMod base = FreeMod Rational base
- Math.RootLoci.Algebra.FreeMod: type ZMod base = FreeMod Integer base
- Math.RootLoci.Algebra.FreeMod: zero :: FreeMod c b
- Math.RootLoci.Algebra.Polynomial: FF :: Int -> FallingF
- Math.RootLoci.Algebra.Polynomial: FallingPoly :: FreeMod coeff FallingF -> FallingPoly coeff
- Math.RootLoci.Algebra.Polynomial: Poly :: FreeMod coeff X -> Poly coeff
- Math.RootLoci.Algebra.Polynomial: RF :: Int -> RisingF
- Math.RootLoci.Algebra.Polynomial: RisingPoly :: FreeMod coeff RisingF -> RisingPoly coeff
- Math.RootLoci.Algebra.Polynomial: X :: Int -> X
- Math.RootLoci.Algebra.Polynomial: [fromFallingPoly] :: FallingPoly coeff -> FreeMod coeff FallingF
- Math.RootLoci.Algebra.Polynomial: [fromPoly] :: Poly coeff -> FreeMod coeff X
- Math.RootLoci.Algebra.Polynomial: [fromRisingPoly] :: RisingPoly coeff -> FreeMod coeff RisingF
- Math.RootLoci.Algebra.Polynomial: fallingPoly :: FallingF -> Poly Integer
- Math.RootLoci.Algebra.Polynomial: instance (GHC.Num.Num c, GHC.Show.Show c, GHC.Classes.Eq c, Math.RootLoci.Misc.Common.IsSigned c) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Algebra.Polynomial.FallingPoly c)
- Math.RootLoci.Algebra.Polynomial: instance (GHC.Num.Num c, GHC.Show.Show c, GHC.Classes.Eq c, Math.RootLoci.Misc.Common.IsSigned c) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Algebra.Polynomial.Poly c)
- Math.RootLoci.Algebra.Polynomial: instance (GHC.Num.Num c, GHC.Show.Show c, GHC.Classes.Eq c, Math.RootLoci.Misc.Common.IsSigned c) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Algebra.Polynomial.RisingPoly c)
- Math.RootLoci.Algebra.Polynomial: instance (GHC.Num.Num coeff, GHC.Classes.Eq coeff) => GHC.Num.Num (Math.RootLoci.Algebra.Polynomial.Poly coeff)
- Math.RootLoci.Algebra.Polynomial: instance GHC.Base.Monoid Math.RootLoci.Algebra.Polynomial.X
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Eq Math.RootLoci.Algebra.Polynomial.FallingF
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Eq Math.RootLoci.Algebra.Polynomial.RisingF
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Eq Math.RootLoci.Algebra.Polynomial.X
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Eq coeff => GHC.Classes.Eq (Math.RootLoci.Algebra.Polynomial.FallingPoly coeff)
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Eq coeff => GHC.Classes.Eq (Math.RootLoci.Algebra.Polynomial.Poly coeff)
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Eq coeff => GHC.Classes.Eq (Math.RootLoci.Algebra.Polynomial.RisingPoly coeff)
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Ord Math.RootLoci.Algebra.Polynomial.FallingF
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Ord Math.RootLoci.Algebra.Polynomial.RisingF
- Math.RootLoci.Algebra.Polynomial: instance GHC.Classes.Ord Math.RootLoci.Algebra.Polynomial.X
- Math.RootLoci.Algebra.Polynomial: instance GHC.Show.Show Math.RootLoci.Algebra.Polynomial.FallingF
- Math.RootLoci.Algebra.Polynomial: instance GHC.Show.Show Math.RootLoci.Algebra.Polynomial.RisingF
- Math.RootLoci.Algebra.Polynomial: instance GHC.Show.Show Math.RootLoci.Algebra.Polynomial.X
- Math.RootLoci.Algebra.Polynomial: instance GHC.Show.Show coeff => GHC.Show.Show (Math.RootLoci.Algebra.Polynomial.FallingPoly coeff)
- Math.RootLoci.Algebra.Polynomial: instance GHC.Show.Show coeff => GHC.Show.Show (Math.RootLoci.Algebra.Polynomial.Poly coeff)
- Math.RootLoci.Algebra.Polynomial: instance GHC.Show.Show coeff => GHC.Show.Show (Math.RootLoci.Algebra.Polynomial.RisingPoly coeff)
- Math.RootLoci.Algebra.Polynomial: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Algebra.Polynomial.FallingF
- Math.RootLoci.Algebra.Polynomial: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Algebra.Polynomial.RisingF
- Math.RootLoci.Algebra.Polynomial: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Algebra.Polynomial.X
- Math.RootLoci.Algebra.Polynomial: lagrangeInterp :: [(Rational, Rational)] -> Poly Rational
- Math.RootLoci.Algebra.Polynomial: lagrangeInterp' :: [(Rational, Rational)] -> QMod X
- Math.RootLoci.Algebra.Polynomial: lagrangePoly' :: [Rational] -> Int -> QMod X
- Math.RootLoci.Algebra.Polynomial: newtype FallingF
- Math.RootLoci.Algebra.Polynomial: newtype FallingPoly coeff
- Math.RootLoci.Algebra.Polynomial: newtype Poly coeff
- Math.RootLoci.Algebra.Polynomial: newtype RisingF
- Math.RootLoci.Algebra.Polynomial: newtype RisingPoly coeff
- Math.RootLoci.Algebra.Polynomial: newtype X
- Math.RootLoci.Algebra.Polynomial: risingPoly :: RisingF -> Poly Integer
- Math.RootLoci.Algebra.SymmPoly: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Algebra.SymmPoly.AB
- Math.RootLoci.Algebra.SymmPoly: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Algebra.SymmPoly.Chern
- Math.RootLoci.Algebra.SymmPoly: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Algebra.SymmPoly.Schur
- Math.RootLoci.CSM.Equivariant.Ordered: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.CSM.Equivariant.Ordered.QPow
- Math.RootLoci.CSM.Equivariant.Umbral: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.CSM.Equivariant.Umbral.ST
- Math.RootLoci.Classic: quadTangentLines :: Int -> Integer
- Math.RootLoci.Classic: quintFlexLines :: Int -> Integer
- Math.RootLoci.Geometry.Cohomology: instance (Math.RootLoci.Misc.Pretty.Pretty ab, GHC.Base.Monoid ab, GHC.Classes.Eq ab) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Geometry.Cohomology.Eta ab)
- Math.RootLoci.Geometry.Cohomology: instance (Math.RootLoci.Misc.Pretty.Pretty ab, GHC.Base.Monoid ab, GHC.Classes.Eq ab) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Geometry.Cohomology.Gam ab)
- Math.RootLoci.Geometry.Cohomology: instance (Math.RootLoci.Misc.Pretty.Pretty ab, GHC.Base.Monoid ab, GHC.Classes.Eq ab) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Geometry.Cohomology.Omega ab)
- Math.RootLoci.Geometry.Cohomology: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.G
- Math.RootLoci.Geometry.Cohomology: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.H
- Math.RootLoci.Geometry.Cohomology: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.HS
- Math.RootLoci.Geometry.Cohomology: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.U
- Math.RootLoci.Geometry.Cohomology: instance Math.RootLoci.Misc.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.US
- Math.RootLoci.Misc.Common: class IsSigned a
- Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.IsSigned GHC.Integer.Type.Integer
- Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.IsSigned GHC.Real.Rational
- Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.IsSigned GHC.Types.Int
- Math.RootLoci.Misc.Common: signOf :: IsSigned a => a -> Maybe Sign
- Math.RootLoci.Misc.Common: signOfNum :: (Ord a, Num a) => a -> Maybe Sign
- Math.RootLoci.Misc.PTable: instance Math.RootLoci.Misc.PTable.CacheKey Math.Combinat.Partitions.Integer.Partition
- Math.RootLoci.Misc.Pretty: Indexed :: String -> a -> Indexed a
- Math.RootLoci.Misc.Pretty: class Mathematica a
- Math.RootLoci.Misc.Pretty: class Pretty a
- Math.RootLoci.Misc.Pretty: data Indexed a
- Math.RootLoci.Misc.Pretty: expFormString :: Partition -> String
- Math.RootLoci.Misc.Pretty: extendStringL :: Int -> String -> String
- Math.RootLoci.Misc.Pretty: extendStringR :: Int -> String -> String
- Math.RootLoci.Misc.Pretty: instance (GHC.Num.Num c, GHC.Classes.Eq c, GHC.Show.Show c, Math.RootLoci.Misc.Common.IsSigned c, Math.RootLoci.Misc.Pretty.Pretty b) => Math.RootLoci.Misc.Pretty.Pretty (Math.RootLoci.Algebra.FreeMod.FreeMod c b)
- Math.RootLoci.Misc.Pretty: instance Math.RootLoci.Misc.Pretty.Mathematica GHC.Base.String
- Math.RootLoci.Misc.Pretty: instance Math.RootLoci.Misc.Pretty.Mathematica GHC.Integer.Type.Integer
- Math.RootLoci.Misc.Pretty: instance Math.RootLoci.Misc.Pretty.Mathematica GHC.Types.Int
- Math.RootLoci.Misc.Pretty: instance Math.RootLoci.Misc.Pretty.Mathematica Math.Combinat.Partitions.Integer.Partition
- Math.RootLoci.Misc.Pretty: instance Math.RootLoci.Misc.Pretty.Mathematica a => Math.RootLoci.Misc.Pretty.Mathematica (Math.RootLoci.Misc.Pretty.Indexed a)
- Math.RootLoci.Misc.Pretty: mathematica :: Mathematica a => a -> String
- Math.RootLoci.Misc.Pretty: paren :: String -> String
- Math.RootLoci.Misc.Pretty: pretty :: Pretty a => a -> String
- Math.RootLoci.Misc.Pretty: prettyFreeMod' :: (Num c, Eq c, Show c, IsSigned c) => Bool -> (b -> String) -> FreeMod c b -> String
- Math.RootLoci.Misc.Pretty: prettyFreeMod'' :: (c -> String) -> (b -> String) -> FreeMod c b -> String
- Math.RootLoci.Misc.Pretty: prettyZMod :: (b -> String) -> ZMod b -> String
- Math.RootLoci.Misc.Pretty: prettyZMod_ :: (b -> String) -> ZMod b -> String
- Math.RootLoci.Misc.Pretty: showVarPower :: String -> Int -> String
+ Math.RootLoci.Algebra.SymmPoly: instance GHC.Base.Semigroup Math.RootLoci.Algebra.SymmPoly.AB
+ Math.RootLoci.Algebra.SymmPoly: instance GHC.Base.Semigroup Math.RootLoci.Algebra.SymmPoly.Chern
+ Math.RootLoci.Algebra.SymmPoly: instance GHC.Base.Semigroup Math.RootLoci.Algebra.SymmPoly.Schur
+ Math.RootLoci.Algebra.SymmPoly: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Algebra.SymmPoly.AB
+ Math.RootLoci.Algebra.SymmPoly: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Algebra.SymmPoly.Chern
+ Math.RootLoci.Algebra.SymmPoly: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Algebra.SymmPoly.Schur
+ Math.RootLoci.Algebra.SymmPoly: separateGradedParts :: (Ord b, Graded b) => ZMod b -> Array Int (ZMod b)
+ Math.RootLoci.Algebra.SymmPoly: symPoly :: (Ord a, Monoid a) => Int -> [a] -> ZMod a
+ Math.RootLoci.CSM.Equivariant.Ordered: instance GHC.Base.Semigroup Math.RootLoci.CSM.Equivariant.Ordered.QPow
+ Math.RootLoci.CSM.Equivariant.Ordered: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.CSM.Equivariant.Ordered.QPow
+ Math.RootLoci.CSM.Equivariant.Umbral: affineWeights :: Int -> [ZMod AB]
+ Math.RootLoci.CSM.Equivariant.Umbral: affineZeroCSM :: ChernBase base => Int -> ZMod base
+ Math.RootLoci.CSM.Equivariant.Umbral: instance GHC.Base.Semigroup Math.RootLoci.CSM.Equivariant.Umbral.ST
+ Math.RootLoci.CSM.Equivariant.Umbral: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.CSM.Equivariant.Umbral.ST
+ Math.RootLoci.CSM.Equivariant.Umbral: topChernClass :: ChernBase base => Int -> ZMod base
+ Math.RootLoci.Classic: bidegreeOfSurfaceBiTangents :: Int -> (Integer, Integer)
+ Math.RootLoci.Classic: bidegreeOfSurfaceFlexes :: Int -> (Integer, Integer)
+ Math.RootLoci.Classic: degreeOfDualCurve :: Int -> Integer
+ Math.RootLoci.Classic: numberOfCurveBiTangents :: Int -> Integer
+ Math.RootLoci.Classic: numberOfCurveFlexes :: Int -> Integer
+ Math.RootLoci.Classic: numberOfSurface4xTangents :: Int -> Integer
+ Math.RootLoci.Classic: numberOfSurface5xHyperflexes :: Int -> Integer
+ Math.RootLoci.Dual.Localization: mkX :: Int -> X
+ Math.RootLoci.Dual.Localization: type X = U "x"
+ Math.RootLoci.Geometry.Cohomology: instance (Math.Algebra.Polynomial.Pretty.Pretty ab, GHC.Base.Monoid ab, GHC.Classes.Eq ab) => Math.Algebra.Polynomial.Pretty.Pretty (Math.RootLoci.Geometry.Cohomology.Eta ab)
+ Math.RootLoci.Geometry.Cohomology: instance (Math.Algebra.Polynomial.Pretty.Pretty ab, GHC.Base.Monoid ab, GHC.Classes.Eq ab) => Math.Algebra.Polynomial.Pretty.Pretty (Math.RootLoci.Geometry.Cohomology.Gam ab)
+ Math.RootLoci.Geometry.Cohomology: instance (Math.Algebra.Polynomial.Pretty.Pretty ab, GHC.Base.Monoid ab, GHC.Classes.Eq ab) => Math.Algebra.Polynomial.Pretty.Pretty (Math.RootLoci.Geometry.Cohomology.Omega ab)
+ Math.RootLoci.Geometry.Cohomology: instance GHC.Base.Semigroup Math.RootLoci.Geometry.Cohomology.G
+ Math.RootLoci.Geometry.Cohomology: instance GHC.Base.Semigroup Math.RootLoci.Geometry.Cohomology.HS
+ Math.RootLoci.Geometry.Cohomology: instance GHC.Base.Semigroup Math.RootLoci.Geometry.Cohomology.US
+ Math.RootLoci.Geometry.Cohomology: instance GHC.Base.Semigroup ab => GHC.Base.Semigroup (Math.RootLoci.Geometry.Cohomology.Eta ab)
+ Math.RootLoci.Geometry.Cohomology: instance GHC.Base.Semigroup ab => GHC.Base.Semigroup (Math.RootLoci.Geometry.Cohomology.Gam ab)
+ Math.RootLoci.Geometry.Cohomology: instance GHC.Base.Semigroup ab => GHC.Base.Semigroup (Math.RootLoci.Geometry.Cohomology.Omega ab)
+ Math.RootLoci.Geometry.Cohomology: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.G
+ Math.RootLoci.Geometry.Cohomology: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.H
+ Math.RootLoci.Geometry.Cohomology: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.HS
+ Math.RootLoci.Geometry.Cohomology: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.U
+ Math.RootLoci.Geometry.Cohomology: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Geometry.Cohomology.US
+ Math.RootLoci.Misc.Common: Indexed :: String -> a -> Indexed a
+ Math.RootLoci.Misc.Common: buildMap :: Ord k => (b -> a) -> (b -> a -> a) -> [(k, b)] -> Map k a
+ Math.RootLoci.Misc.Common: class Mathematica a
+ Math.RootLoci.Misc.Common: data Indexed a
+ Math.RootLoci.Misc.Common: evens :: [a] -> [a]
+ Math.RootLoci.Misc.Common: expFormString :: Partition -> String
+ Math.RootLoci.Misc.Common: exponentVector :: Partition -> [Int]
+ Math.RootLoci.Misc.Common: extendStringL :: Int -> String -> String
+ Math.RootLoci.Misc.Common: extendStringR :: Int -> String -> String
+ Math.RootLoci.Misc.Common: insertMap :: Ord k => (b -> a) -> (b -> a -> a) -> k -> b -> Map k a -> Map k a
+ Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.Mathematica GHC.Base.String
+ Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.Mathematica GHC.Integer.Type.Integer
+ Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.Mathematica GHC.Types.Int
+ Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.Mathematica Math.Combinat.Partitions.Integer.Naive.Partition
+ Math.RootLoci.Misc.Common: instance Math.RootLoci.Misc.Common.Mathematica a => Math.RootLoci.Misc.Common.Mathematica (Math.RootLoci.Misc.Common.Indexed a)
+ Math.RootLoci.Misc.Common: interleave :: [a] -> [a] -> [a]
+ Math.RootLoci.Misc.Common: longZipWith :: (a -> c) -> (b -> c) -> (a -> b -> c) -> [a] -> [b] -> [c]
+ Math.RootLoci.Misc.Common: mathematica :: Mathematica a => a -> String
+ Math.RootLoci.Misc.Common: odds :: [a] -> [a]
+ Math.RootLoci.Misc.Common: paren :: String -> String
+ Math.RootLoci.Misc.Common: sum' :: Num a => [a] -> a
+ Math.RootLoci.Misc.PTable: instance Math.RootLoci.Misc.PTable.CacheKey Math.Combinat.Partitions.Integer.Naive.Partition
+ Math.RootLoci.Motivic.Abstract: Bindings :: [Dim] -> Bindings
+ Math.RootLoci.Motivic.Abstract: DeBruijn :: Int -> Var
+ Math.RootLoci.Motivic.Abstract: Multi :: [Single] -> Multi
+ Math.RootLoci.Motivic.Abstract: MultiLam :: !Bindings -> !Multi -> MultiLam
+ Math.RootLoci.Motivic.Abstract: Single :: [(Var, Int)] -> Single
+ Math.RootLoci.Motivic.Abstract: SingleLam :: !Bindings -> !Single -> SingleLam
+ Math.RootLoci.Motivic.Abstract: class Rename a
+ Math.RootLoci.Motivic.Abstract: class Shift a
+ Math.RootLoci.Motivic.Abstract: data MultiLam
+ Math.RootLoci.Motivic.Abstract: data SingleLam
+ Math.RootLoci.Motivic.Abstract: dimensionTable :: Bindings -> Map Var Dim
+ Math.RootLoci.Motivic.Abstract: dvec :: [Dim] -> ZMod MultiLam
+ Math.RootLoci.Motivic.Abstract: dvecSorted :: [Dim] -> ZMod MultiLam
+ Math.RootLoci.Motivic.Abstract: exponentOf :: Var -> Single -> Int
+ Math.RootLoci.Motivic.Abstract: exponentVectorOf :: Var -> Multi -> [Int]
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Cross (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Normalize (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Normalize (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.SingleLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Omega (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Omega (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.SingleLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Omega123 (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Psi (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam) (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.SingleLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.Psi [Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.SingleLam] (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.SingleLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.SingleToMulti (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.SingleLam) (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance (GHC.Classes.Eq c, GHC.Num.Num c) => Math.RootLoci.Motivic.Classes.SuperNormalize (Math.Algebra.Polynomial.FreeModule.FreeMod c Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Eq Math.RootLoci.Motivic.Abstract.Bindings
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Eq Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Eq Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Eq Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Eq Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Eq Math.RootLoci.Motivic.Abstract.Var
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Ord Math.RootLoci.Motivic.Abstract.Bindings
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Ord Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Ord Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Ord Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Ord Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance GHC.Classes.Ord Math.RootLoci.Motivic.Abstract.Var
+ Math.RootLoci.Motivic.Abstract: instance GHC.Show.Show Math.RootLoci.Motivic.Abstract.Bindings
+ Math.RootLoci.Motivic.Abstract: instance GHC.Show.Show Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance GHC.Show.Show Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance GHC.Show.Show Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance GHC.Show.Show Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance GHC.Show.Show Math.RootLoci.Motivic.Abstract.Var
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty (Math.RootLoci.Motivic.Abstract.Var, GHC.Types.Int)
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Motivic.Abstract.Bindings
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.Algebra.Polynomial.Pretty.Pretty Math.RootLoci.Motivic.Abstract.Var
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Rename (Math.RootLoci.Motivic.Abstract.Var, GHC.Types.Int)
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Rename Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Rename Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Rename Math.RootLoci.Motivic.Abstract.Var
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Shift Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Shift Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Abstract.Shift Math.RootLoci.Motivic.Abstract.Var
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Cross Math.RootLoci.Motivic.Abstract.Bindings
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Cross Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Cross Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Degree Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Degree Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Empty Math.RootLoci.Motivic.Abstract.Bindings
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Empty Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Empty Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Empty Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Empty Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.ExtendToCommonSize Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.ExtendToCommonSize Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Normalize Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Normalize Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Normalize Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Normalize Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega (Math.RootLoci.Motivic.Abstract.Var, GHC.Types.Int)
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega123 Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Omega123 Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Permute (Math.Algebra.Polynomial.FreeModule.ZMod Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Permute Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Permute Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Pontrjagin Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Pontrjagin Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Psi Math.RootLoci.Motivic.Abstract.Multi Math.RootLoci.Motivic.Abstract.Single
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Psi Math.RootLoci.Motivic.Abstract.MultiLam Math.RootLoci.Motivic.Abstract.SingleLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.PsiEvenOdd (Math.Algebra.Polynomial.FreeModule.ZMod Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.PsiEvenOdd Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.PsiEvenOdd Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.SingleToMulti Math.RootLoci.Motivic.Abstract.Single Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.SingleToMulti Math.RootLoci.Motivic.Abstract.SingleLam Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.SuperNormalize Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.SuperNormalize Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Theta (Math.Algebra.Polynomial.FreeModule.ZMod Math.RootLoci.Motivic.Abstract.MultiLam)
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Theta Math.RootLoci.Motivic.Abstract.Multi
+ Math.RootLoci.Motivic.Abstract: instance Math.RootLoci.Motivic.Classes.Theta Math.RootLoci.Motivic.Abstract.MultiLam
+ Math.RootLoci.Motivic.Abstract: newtype Bindings
+ Math.RootLoci.Motivic.Abstract: newtype Multi
+ Math.RootLoci.Motivic.Abstract: newtype Single
+ Math.RootLoci.Motivic.Abstract: newtype Var
+ Math.RootLoci.Motivic.Abstract: normalizeWithExpo :: (Rename term, Normalize term, Ord expo) => (expo -> Bool) -> (Var -> term -> expo) -> (Bindings, term) -> (Bindings, term)
+ Math.RootLoci.Motivic.Abstract: numberOfBoundVariables :: Bindings -> Int
+ Math.RootLoci.Motivic.Abstract: open :: Dim -> ZMod SingleLam
+ Math.RootLoci.Motivic.Abstract: rename :: Rename a => (Var -> Var) -> a -> a
+ Math.RootLoci.Motivic.Abstract: shift :: Shift a => Int -> a -> a
+ Math.RootLoci.Motivic.Abstract: symn :: Num c => Dim -> FreeMod c SingleLam
+ Math.RootLoci.Motivic.Abstract: unSingle :: Single -> [(Var, Int)]
+ Math.RootLoci.Motivic.Abstract: xlam :: Partition -> ZMod SingleLam
+ Math.RootLoci.Motivic.Abstract: zeros :: Int -> ZMod MultiLam
+ Math.RootLoci.Motivic.Classes: Dim :: Int -> Dim
+ Math.RootLoci.Motivic.Classes: class Cross a
+ Math.RootLoci.Motivic.Classes: class Degree a where {
+ Math.RootLoci.Motivic.Classes: class Empty a
+ Math.RootLoci.Motivic.Classes: class ExtendToCommonSize a
+ Math.RootLoci.Motivic.Classes: class Normalize a
+ Math.RootLoci.Motivic.Classes: class Omega a
+ Math.RootLoci.Motivic.Classes: class Omega123 a
+ Math.RootLoci.Motivic.Classes: class Permute a
+ Math.RootLoci.Motivic.Classes: class Pontrjagin a
+ Math.RootLoci.Motivic.Classes: class Psi t s | t -> s
+ Math.RootLoci.Motivic.Classes: class PsiEvenOdd t
+ Math.RootLoci.Motivic.Classes: class SingleToMulti s t | s -> t, t -> s
+ Math.RootLoci.Motivic.Classes: class SuperNormalize a
+ Math.RootLoci.Motivic.Classes: class Theta a
+ Math.RootLoci.Motivic.Classes: cross :: Cross a => a -> a -> a
+ Math.RootLoci.Motivic.Classes: crossInterleave :: Cross a => a -> a -> a
+ Math.RootLoci.Motivic.Classes: crossMany :: Cross a => [a] -> a
+ Math.RootLoci.Motivic.Classes: dimTuples :: [Dim] -> [[Dim]]
+ Math.RootLoci.Motivic.Classes: dimVector :: Partition -> [Dim]
+ Math.RootLoci.Motivic.Classes: empty :: Empty a => a
+ Math.RootLoci.Motivic.Classes: extendToCommonSize :: ExtendToCommonSize a => (a, a) -> (a, a)
+ Math.RootLoci.Motivic.Classes: instance GHC.Classes.Eq Math.RootLoci.Motivic.Classes.Dim
+ Math.RootLoci.Motivic.Classes: instance GHC.Classes.Ord Math.RootLoci.Motivic.Classes.Dim
+ Math.RootLoci.Motivic.Classes: instance GHC.Num.Num Math.RootLoci.Motivic.Classes.Dim
+ Math.RootLoci.Motivic.Classes: instance GHC.Show.Show Math.RootLoci.Motivic.Classes.Dim
+ Math.RootLoci.Motivic.Classes: instance GHC.TypeNats.KnownNat n => Math.RootLoci.Motivic.Classes.Degree (Math.Algebra.Polynomial.Monomial.Indexed.XS v n)
+ Math.RootLoci.Motivic.Classes: instance GHC.TypeNats.KnownNat n => Math.RootLoci.Motivic.Classes.Empty (Math.Algebra.Polynomial.Monomial.Indexed.XS v n)
+ Math.RootLoci.Motivic.Classes: instance Math.RootLoci.Motivic.Classes.Cross [a]
+ Math.RootLoci.Motivic.Classes: instance Math.RootLoci.Motivic.Classes.Empty (GHC.Maybe.Maybe a)
+ Math.RootLoci.Motivic.Classes: instance Math.RootLoci.Motivic.Classes.Empty GHC.Types.Int
+ Math.RootLoci.Motivic.Classes: instance Math.RootLoci.Motivic.Classes.Empty [a]
+ Math.RootLoci.Motivic.Classes: instance Math.RootLoci.Motivic.Classes.Empty a => Math.RootLoci.Motivic.Classes.ExtendToCommonSize [a]
+ Math.RootLoci.Motivic.Classes: instance Math.RootLoci.Motivic.Classes.Permute [a]
+ Math.RootLoci.Motivic.Classes: multiDegree :: Degree a => a -> MultiDegree a
+ Math.RootLoci.Motivic.Classes: newtype Dim
+ Math.RootLoci.Motivic.Classes: normalize :: Normalize a => a -> a
+ Math.RootLoci.Motivic.Classes: omega :: Omega a => Int -> a -> a
+ Math.RootLoci.Motivic.Classes: omega123 :: Omega123 a => a -> a
+ Math.RootLoci.Motivic.Classes: omegaZeroError :: a
+ Math.RootLoci.Motivic.Classes: permute :: Permute a => Permutation -> a -> a
+ Math.RootLoci.Motivic.Classes: pontrjaginMul :: Pontrjagin a => a -> a -> a
+ Math.RootLoci.Motivic.Classes: pontrjaginOne :: Pontrjagin a => a
+ Math.RootLoci.Motivic.Classes: psi :: Psi t s => t -> s
+ Math.RootLoci.Motivic.Classes: psiEvenOdd :: PsiEvenOdd t => t -> t
+ Math.RootLoci.Motivic.Classes: singleToMulti :: SingleToMulti s t => s -> t
+ Math.RootLoci.Motivic.Classes: superNormalize :: SuperNormalize a => a -> a
+ Math.RootLoci.Motivic.Classes: theta :: Theta a => a -> a
+ Math.RootLoci.Motivic.Classes: totalDegree :: Degree a => a -> Int
+ Math.RootLoci.Motivic.Classes: type family MultiDegree a :: *;
+ Math.RootLoci.Motivic.Classes: unDim :: Dim -> Int
+ Math.RootLoci.Motivic.Classes: }
+ Math.RootLoci.Motivic.Homology: crossKs :: Ring c => [KRing c] -> GRing c
+ Math.RootLoci.Motivic.Homology: csmPn :: Dim -> KRing Integer
+ Math.RootLoci.Motivic.Homology: csm_xlam_P1 :: Partition -> KRing Integer
+ Math.RootLoci.Motivic.Homology: csm_xlam_P1_cohom :: Partition -> ZMod G
+ Math.RootLoci.Motivic.Homology: delta2 :: Ring c => KRing c -> GRing c
+ Math.RootLoci.Motivic.Homology: deltaN :: Ring c => Int -> KRing c -> GRing c
+ Math.RootLoci.Motivic.Homology: embedInf :: KRing c -> GRing c
+ Math.RootLoci.Motivic.Homology: instance Math.Algebra.Polynomial.Class.Ring c => Math.RootLoci.Motivic.Classes.Omega (Math.RootLoci.Motivic.Homology.KRing c)
+ Math.RootLoci.Motivic.Homology: instance Math.Algebra.Polynomial.Class.Ring c => Math.RootLoci.Motivic.Classes.Psi (Math.RootLoci.Motivic.Homology.GRing c) (Math.RootLoci.Motivic.Homology.KRing c)
+ Math.RootLoci.Motivic.Homology: instance Math.RootLoci.Motivic.Classes.SingleToMulti (Math.RootLoci.Motivic.Homology.KRing c) (Math.RootLoci.Motivic.Homology.GRing c)
+ Math.RootLoci.Motivic.Homology: interpretSingleLam :: (Dim -> KRing Integer) -> SingleLam -> KRing Integer
+ Math.RootLoci.Motivic.Homology: kkToG2 :: Ring c => KRing (KRing c) -> GRing c
+ Math.RootLoci.Motivic.Homology: omegaH :: Ring c => Int -> KRing c -> KRing c
+ Math.RootLoci.Motivic.Homology: omegaNaive :: Ring c => Int -> KRing c -> KRing c
+ Math.RootLoci.Motivic.Homology: project1 :: GRing c -> KRing c
+ Math.RootLoci.Motivic.Homology: psi2 :: Ring c => GRing c -> KRing c
+ Math.RootLoci.Motivic.Homology: psiAny :: Ring c => GRing c -> KRing c
+ Math.RootLoci.Motivic.Homology: psiNaive :: Ring c => Int -> GRing c -> KRing c
+ Math.RootLoci.Motivic.Homology: separate1st :: forall c n. Ring c => GRing c -> GRing (KRing c)
+ Math.RootLoci.Motivic.Homology: test_motivic_csm_vs_aluffi :: Int -> Bool
+ Math.RootLoci.Motivic.Homology: type GRing c = Poly c "u" " @lim_{n1,n2,...} H_*(Sym^n1(P1) x Sym^n2(P1) x ... )@"
+ Math.RootLoci.Motivic.Homology: type KRing c = Univariate c "u" " @lim_n H_*(Sym^n(P1))@"
+ Math.RootLoci.Motivic.Homology: unify1st :: forall c n. Ring c => GRing (KRing c) -> GRing c
+ Math.RootLoci.Motivic.Homology: unify1st2nd :: forall c n. Ring c => GRing (GRing c) -> GRing c
+ Math.RootLoci.Motivic.Homology: unifyKK :: Ring c => KRing (KRing c) -> KRing c
+ Math.RootLoci.Segre.Equivariant: affTotalChernClass :: ChernBase base => Int -> ZMod base
+ Math.RootLoci.Segre.Equivariant: affTotalChernClassByDegree :: ChernBase base => Int -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: affineClosedSegreSM :: ChernBase base => Partition -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: affineOpenSegreSM :: ChernBase base => Partition -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: affineZeroSegreSM :: ChernBase base => Int -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: divideByTotalChernClass :: ChernBase base => Int -> ZMod base -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: divideByTotalChernClassSlow :: ChernBase base => Int -> ZMod base -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: recipTotalChernClass :: forall base. ChernBase base => Int -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: recipTotalChernClass2 :: forall base. ChernBase base => Int -> [ZMod base]
+ Math.RootLoci.Segre.Equivariant: recipTotalChernClassSlow :: forall base. ChernBase base => Int -> [ZMod base]
- Math.RootLoci.Algebra.SymmPoly: select0 :: (AB, Chern) -> (ChernBase base => base)
+ Math.RootLoci.Algebra.SymmPoly: select0 :: (AB, Chern) -> ChernBase base => base
- Math.RootLoci.Algebra.SymmPoly: select0' :: (AB, Chern) -> (ChernBase base => Sing base -> base)
+ Math.RootLoci.Algebra.SymmPoly: select0' :: (AB, Chern) -> ChernBase base => Sing base -> base
- Math.RootLoci.Algebra.SymmPoly: select1 :: (f AB, f Chern) -> (ChernBase base => f base)
+ Math.RootLoci.Algebra.SymmPoly: select1 :: (f AB, f Chern) -> ChernBase base => f base
- Math.RootLoci.Algebra.SymmPoly: select1' :: (f AB, f Chern) -> (ChernBase base => Sing base -> f base)
+ Math.RootLoci.Algebra.SymmPoly: select1' :: (f AB, f Chern) -> ChernBase base => Sing base -> f base
- Math.RootLoci.Algebra.SymmPoly: select2 :: (f (g AB), f (g Chern)) -> (ChernBase base => f (g base))
+ Math.RootLoci.Algebra.SymmPoly: select2 :: (f (g AB), f (g Chern)) -> ChernBase base => f (g base)
- Math.RootLoci.Algebra.SymmPoly: select2' :: (f (g AB), f (g Chern)) -> (ChernBase base => Sing base -> f (g base))
+ Math.RootLoci.Algebra.SymmPoly: select2' :: (f (g AB), f (g Chern)) -> ChernBase base => Sing base -> f (g base)
- Math.RootLoci.Algebra.SymmPoly: select3 :: (f (g (h AB)), f (g (h Chern))) -> (ChernBase base => f (g (h base)))
+ Math.RootLoci.Algebra.SymmPoly: select3 :: (f (g (h AB)), f (g (h Chern))) -> ChernBase base => f (g (h base))
- Math.RootLoci.Algebra.SymmPoly: select3' :: (f (g (h AB)), f (g (h Chern))) -> (ChernBase base => Sing base -> f (g (h base)))
+ Math.RootLoci.Algebra.SymmPoly: select3' :: (f (g (h AB)), f (g (h Chern))) -> ChernBase base => Sing base -> f (g (h base))
- Math.RootLoci.CSM.Equivariant.Ordered: umbralSubstQPow :: (ChernBase base) => (QPow -> ZMod base) -> ZMod (Omega QPow) -> ZMod (Omega base)
+ Math.RootLoci.CSM.Equivariant.Ordered: umbralSubstQPow :: ChernBase base => (QPow -> ZMod base) -> ZMod (Omega QPow) -> ZMod (Omega base)
- Math.RootLoci.CSM.Equivariant.PushForward: pi_star :: forall base. (ChernBase base) => Int -> ZMod (Eta base) -> ZMod (Gam base)
+ Math.RootLoci.CSM.Equivariant.PushForward: pi_star :: forall base. ChernBase base => Int -> ZMod (Eta base) -> ZMod (Gam base)
- Math.RootLoci.CSM.Equivariant.Umbral: prettyMixedST :: forall b c. (Pretty b, Num c, Eq c, IsSigned c, Show c) => FreeMod (FreeMod c b) ST -> String
+ Math.RootLoci.CSM.Equivariant.Umbral: prettyMixedST :: forall b c. (Pretty b, Num c, Eq c, IsSigned c, Pretty c) => FreeMod (FreeMod c b) ST -> String
- Math.RootLoci.CSM.Equivariant.Umbral: umbralSubstitutionAff :: (ChernBase base) => Partition -> FreeMod (ZMod base) ST -> ZMod base
+ Math.RootLoci.CSM.Equivariant.Umbral: umbralSubstitutionAff :: ChernBase base => Partition -> FreeMod (ZMod base) ST -> ZMod base
- Math.RootLoci.CSM.Equivariant.Umbral: umbralSubstitutionProj :: (ChernBase base) => Partition -> FreeMod (ZMod base) ST -> ZMod (Gam base)
+ Math.RootLoci.CSM.Equivariant.Umbral: umbralSubstitutionProj :: ChernBase base => Partition -> FreeMod (ZMod base) ST -> ZMod (Gam base)
- Math.RootLoci.Geometry.Cohomology: unsafeEtaToOmega :: Ord ab => FreeMod coeff (Eta ab) -> FreeMod coeff (Omega ab)
+ Math.RootLoci.Geometry.Cohomology: unsafeEtaToOmega :: (Eq coeff, Num coeff, Ord ab) => FreeMod coeff (Eta ab) -> FreeMod coeff (Omega ab)
- Math.RootLoci.Geometry.Cohomology: unsafeOmegaToEta :: Ord ab => FreeMod coeff (Omega ab) -> FreeMod coeff (Eta ab)
+ Math.RootLoci.Geometry.Cohomology: unsafeOmegaToEta :: (Eq coeff, Num coeff, Ord ab) => FreeMod coeff (Omega ab) -> FreeMod coeff (Eta ab)
- Math.RootLoci.Geometry.Mobius: newtype Partition :: *
+ Math.RootLoci.Geometry.Mobius: newtype Partition
- Math.RootLoci.Misc.PTable: PTable :: (Map Partition a) -> PTable a
+ Math.RootLoci.Misc.PTable: PTable :: Map Partition a -> PTable a
- Math.RootLoci.Misc.PTable: SetPTable :: (Map SetPartition a) -> SetPTable a
+ Math.RootLoci.Misc.PTable: SetPTable :: Map SetPartition a -> SetPTable a
- Math.RootLoci.Misc.PTable: icache :: (Int -> a) -> (Int -> a)
+ Math.RootLoci.Misc.PTable: icache :: (Int -> a) -> Int -> a
- Math.RootLoci.Misc.PTable: icache' :: a -> Int -> (Int -> a) -> (Int -> a)
+ Math.RootLoci.Misc.PTable: icache' :: a -> Int -> (Int -> a) -> Int -> a
- Math.RootLoci.Misc.PTable: monoCache :: CacheKey key => (key -> a) -> (key -> a)
+ Math.RootLoci.Misc.PTable: monoCache :: CacheKey key => (key -> a) -> key -> a
- Math.RootLoci.Misc.PTable: pcache :: (Partition -> a) -> (Partition -> a)
+ Math.RootLoci.Misc.PTable: pcache :: (Partition -> a) -> Partition -> a
- Math.RootLoci.Misc.PTable: polyCache1 :: (CacheKey key) => (forall base. ChernBase base => key -> f base) -> (forall base. ChernBase base => key -> f base)
+ Math.RootLoci.Misc.PTable: polyCache1 :: CacheKey key => (forall base. ChernBase base => key -> f base) -> forall base. ChernBase base => key -> f base
- Math.RootLoci.Misc.PTable: polyCache2 :: (CacheKey key) => (forall base. ChernBase base => key -> f (g base)) -> (forall base. ChernBase base => key -> f (g base))
+ Math.RootLoci.Misc.PTable: polyCache2 :: CacheKey key => (forall base. ChernBase base => key -> f (g base)) -> forall base. ChernBase base => key -> f (g base)
- Math.RootLoci.Misc.PTable: polyCache3 :: (CacheKey key) => (forall base. ChernBase base => key -> f (g (h base))) -> (forall base. ChernBase base => key -> f (g (h base)))
+ Math.RootLoci.Misc.PTable: polyCache3 :: CacheKey key => (forall base. ChernBase base => key -> f (g (h base))) -> forall base. ChernBase base => key -> f (g (h base))
- Math.RootLoci.Misc.PTable: setpcache :: (SetPartition -> a) -> (SetPartition -> a)
+ Math.RootLoci.Misc.PTable: setpcache :: (SetPartition -> a) -> SetPartition -> a
Files
- LICENSE +1/−1
- README.md +54/−0
- coincident-root-loci.cabal +93/−79
- mathematica/equiv_motivic_chern.nb +4062/−0
- mathematica/equiv_motivic_chern.src +504/−0
- mathematica/equivariant_CSM_via_motivic.nb +2195/−0
- mathematica/equivariant_CSM_via_motivic.src +372/−0
- slides/csm_slides_2017.pdf binary
- slides/motivic_slides_2018.pdf binary
- src/Math/RootLoci/Algebra.hs +4/−6
- src/Math/RootLoci/Algebra/FreeMod.hs +0/−214
- src/Math/RootLoci/Algebra/Polynomial.hs +0/−102
- src/Math/RootLoci/Algebra/SymmPoly.hs +59/−8
- src/Math/RootLoci/CSM/Aluffi.hs +2/−2
- src/Math/RootLoci/CSM/Equivariant/Direct.hs +3/−4
- src/Math/RootLoci/CSM/Equivariant/Ordered.hs +21/−3
- src/Math/RootLoci/CSM/Equivariant/PushForward.hs +6/−6
- src/Math/RootLoci/CSM/Equivariant/Recursive.hs +2/−2
- src/Math/RootLoci/CSM/Equivariant/Umbral.hs +56/−8
- src/Math/RootLoci/CSM/Projective.hs +2/−2
- src/Math/RootLoci/Classic.hs +53/−7
- src/Math/RootLoci/Dual/Localization.hs +14/−3
- src/Math/RootLoci/Dual/Restriction.hs +2/−2
- src/Math/RootLoci/Geometry/Cohomology.hs +82/−7
- src/Math/RootLoci/Geometry/Forget.hs +2/−2
- src/Math/RootLoci/Geometry/Mobius.hs +1/−1
- src/Math/RootLoci/Misc.hs +2/−2
- src/Math/RootLoci/Misc/Common.hs +104/−5
- src/Math/RootLoci/Misc/Pretty.hs +0/−137
- src/Math/RootLoci/Motivic/Abstract.hs +430/−0
- src/Math/RootLoci/Motivic/Classes.hs +182/−0
- src/Math/RootLoci/Motivic/Homology.hs +173/−0
- src/Math/RootLoci/Segre/Equivariant.hs +137/−0
- test/Tests/CSM/Equivariant.hs +2/−3
- test/Tests/CSM/Projective.hs +2/−2
- test/Tests/Pushforward.hs +2/−2
- test/Tests/RootVsClass/Check.hs +2/−2
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2015-2017, Balazs Komuves+Copyright (c) 2015-2021, Balazs Komuves All rights reserved. Redistribution and use in source and binary forms, with or without
+ README.md view
@@ -0,0 +1,54 @@++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]+
coincident-root-loci.cabal view
@@ -1,100 +1,114 @@-Name: coincident-root-loci-Version: 0.2-Synopsis: Equivariant CSM classes of coincident root loci+Cabal-Version: 2.4+Name: coincident-root-loci+Version: 0.3+Synopsis: Equivariant CSM classes of coincident root loci -Description: 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\".+Description: 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. - This package is supplementary software for a forthcoming paper.+License: BSD-3-Clause+License-file: LICENSE+Author: Balazs Komuves+Copyright: (c) 2015-2021 Balazs Komuves+Maintainer: bkomuves (plus) hackage (at) gmail (dot) com+Homepage: https://hub.darcs.net/bkomuves/coincident-root-loci+Stability: Experimental+Category: Math+Tested-With: GHC == 8.6.5+Build-Type: Simple -License: BSD3-License-file: LICENSE-Author: Balazs Komuves-Copyright: (c) 2015-2017 Balazs Komuves-Maintainer: bkomuves (plus) hackage (at) gmail (dot) com-Homepage: http://code.haskell.org/~bkomuves/-Stability: Experimental-Category: Math-Tested-With: GHC == 8.0.2-Cabal-Version: >= 1.18-Build-Type: Simple+extra-source-files: README.md+ mathematica/equiv_motivic_chern.nb+ mathematica/equiv_motivic_chern.src+ mathematica/equivariant_CSM_via_motivic.nb+ mathematica/equivariant_CSM_via_motivic.src+ slides/motivic_slides_2018.pdf+ slides/csm_slides_2017.pdf +source-repository head+ type: darcs+ location: https://hub.darcs.net/bkomuves/coincident-root-loci+ -------------------------------------------------------------------------------- Library - Build-Depends: base >= 4 && < 5, - array >= 0.5, containers, random, transformers,- combinat >= 0.2.8.2+ Build-Depends: base >= 4 && < 5, + array >= 0.5, containers >= 0.5, random, transformers,+ combinat >= 0.2.10.0, polynomial-algebra >= 0.1 Exposed-Modules: - -- Math.RootLoci- Math.RootLoci.Classic- -- Math.RootLoci.Dual- Math.RootLoci.Dual.Restriction- Math.RootLoci.Dual.Localization- -- Math.RootLoci.CSM- -- Math.RootLoci.CSM.Equivariant- Math.RootLoci.CSM.Equivariant.Direct- Math.RootLoci.CSM.Equivariant.Recursive- Math.RootLoci.CSM.Equivariant.Ordered- Math.RootLoci.CSM.Equivariant.PushForward- Math.RootLoci.CSM.Equivariant.Umbral- Math.RootLoci.CSM.Aluffi- Math.RootLoci.CSM.Projective- Math.RootLoci.Geometry- Math.RootLoci.Geometry.Forget- Math.RootLoci.Geometry.Cohomology- Math.RootLoci.Geometry.Mobius- -- Math.RootLoci.Applications- -- Math.RootLoci.Applications.FlexLines- Math.RootLoci.Algebra- Math.RootLoci.Algebra.FreeMod- Math.RootLoci.Algebra.Polynomial- Math.RootLoci.Algebra.SymmPoly- Math.RootLoci.Misc- Math.RootLoci.Misc.Pretty- Math.RootLoci.Misc.PTable- Math.RootLoci.Misc.Common+ -- Math.RootLoci+ Math.RootLoci.Classic+ -- Math.RootLoci.Dual+ Math.RootLoci.Dual.Restriction+ Math.RootLoci.Dual.Localization+ -- Math.RootLoci.CSM+ -- Math.RootLoci.CSM.Equivariant+ Math.RootLoci.CSM.Equivariant.Direct+ Math.RootLoci.CSM.Equivariant.Recursive+ Math.RootLoci.CSM.Equivariant.Ordered+ Math.RootLoci.CSM.Equivariant.PushForward+ Math.RootLoci.CSM.Equivariant.Umbral+ Math.RootLoci.CSM.Aluffi+ Math.RootLoci.CSM.Projective+ Math.RootLoci.Segre.Equivariant+ Math.RootLoci.Geometry+ Math.RootLoci.Geometry.Forget+ Math.RootLoci.Geometry.Cohomology+ Math.RootLoci.Geometry.Mobius+ -- Math.RootLoci.Motivic+ Math.RootLoci.Motivic.Classes+ Math.RootLoci.Motivic.Abstract+ Math.RootLoci.Motivic.Homology+ -- Math.RootLoci.Motivic.Formula+ Math.RootLoci.Algebra+ Math.RootLoci.Algebra.SymmPoly+ Math.RootLoci.Misc+ Math.RootLoci.Misc.PTable+ Math.RootLoci.Misc.Common - Default-Extensions: CPP, BangPatterns- Other-Extensions: MultiParamTypeClasses, ScopedTypeVariables, - GeneralizedNewtypeDeriving+ Default-Extensions: CPP, BangPatterns+ Other-Extensions: MultiParamTypeClasses, ScopedTypeVariables, + GeneralizedNewtypeDeriving - Default-Language: Haskell2010+ Default-Language: Haskell2010 - Hs-Source-Dirs: src+ Hs-Source-Dirs: src - ghc-options: -fwarn-tabs -fno-warn-unused-matches -fno-warn-name-shadowing -fno-warn-unused-imports+ ghc-options: -fwarn-tabs -fno-warn-unused-matches -fno-warn-name-shadowing -fno-warn-unused-imports -------------------------------------------------------------------------------- test-suite test - default-language: Haskell2010- type: exitcode-stdio-1.0- hs-source-dirs: test- main-is: testSuite.hs+ default-language: Haskell2010+ type: exitcode-stdio-1.0+ hs-source-dirs: test+ main-is: testSuite.hs - build-depends: base >= 4 && < 5, containers >= 0.4, array >= 0.5,- tasty >= 0.11, tasty-hunit >= 0.9,- combinat >= 0.2.8.2,- coincident-root-loci >= 0.2+ build-depends: base >= 4 && < 5, + array >= 0.5, containers >= 0.5,+ tasty >= 0.11, tasty-hunit >= 0.9,+ combinat >= 0.2.9.0, polynomial-algebra >= 0.1,+ coincident-root-loci - other-modules: Tests.Common- Tests.Dual- Tests.Pushforward - Tests.CSM.Equivariant - Tests.CSM.Projective - Tests.RootVsClass.Check - Tests.RootVsClass.Direct - Tests.RootVsClass.Ordered - Tests.RootVsClass.PushForward - Tests.RootVsClass.Recursive - Tests.RootVsClass.Umbral + other-modules: Tests.Common+ Tests.Dual+ Tests.Pushforward + Tests.CSM.Equivariant + Tests.CSM.Projective + Tests.RootVsClass.Check + Tests.RootVsClass.Direct + Tests.RootVsClass.Ordered + Tests.RootVsClass.PushForward + Tests.RootVsClass.Recursive + Tests.RootVsClass.Umbral
+ mathematica/equiv_motivic_chern.nb view
@@ -0,0 +1,4062 @@+(* Content-type: application/vnd.wolfram.mathematica *)++(*** Wolfram Notebook File ***)+(* http://www.wolfram.com/nb *)++(* CreatedBy='Mathematica 9.0' *)++(*CacheID: 234*)+(* Internal cache information:+NotebookFileLineBreakTest+NotebookFileLineBreakTest+NotebookDataPosition[ 157, 7]+NotebookDataLength[ 139568, 4053]+NotebookOptionsPosition[ 138197, 4007]+NotebookOutlinePosition[ 138552, 4023]+CellTagsIndexPosition[ 138509, 4020]+WindowFrame->Normal*)++(* Beginning of Notebook Content *)+Notebook[{++Cell[CellGroupData[{+Cell[BoxData[+ RowBox[{"\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"===", + RowBox[{"\[Equal]", " ", + RowBox[{+ "EQUIVARIANT", " ", "MOTIVIC", " ", "CHERN", " ", "CLASSES", " ", "OF", + " ", "COINCIDENT", " ", "ROOT", " ", "LOCI"}]}], " ", "==="}], "="}], + " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"<<", "Combinatorica`"}]}]], "Input",+ CellChangeTimes->{{3.801069380385396*^9, 3.801069381601409*^9}, {+ 3.801071567533555*^9, 3.801071572467383*^9}, {3.801135940168188*^9, + 3.801135957390024*^9}}],++Cell[BoxData[+ RowBox[{+ StyleBox[+ RowBox[{"General", "::", "compat"}], "MessageName"], + RowBox[{+ ":", " "}], "\<\"Combinatorica Graph and Permutations functionality has \+been superseded by preloaded functionality. The package now being loaded may \+conflict with this. Please see the Compatibility Guide for details.\"\>"}]], \+"Message", "MSG",+ CellChangeTimes->{3.801136075045025*^9, 3.80113681966651*^9}]+}, Open ]],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{"NORMALIZATION", " ", "in", " ", "K", + RowBox[{"(", + RowBox[{"P", "^", "n"}], ")"}]}], " ", "==="}], " ", "*)"}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"Weights", " ", "of", " ", + RowBox[{"Sym", "^", "n"}], " ", + RowBox[{"C", "^", "2"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", + RowBox[{"L", ",", "X", ",", "Y"}], "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"WT", "[", + RowBox[{"n_", ",", "i_"}], "]"}], ":=", + RowBox[{+ RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"n", "-", "i"}], ")"}]}], "*", + RowBox[{"Y", "^", "i"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"the", " ", "relation", " ", "in", " ", "K", + RowBox[{+ RowBox[{"(", + RowBox[{"P", "^", "n"}], ")"}], ".", " ", + RowBox[{"Convention", ":", " ", "\[IndentingNewLine]", + RowBox[{+ "L", " ", "is", " ", "the", " ", "tautological", " ", "line", " ", + "bundle"}]}]}]}], ",", " ", "\[IndentingNewLine]", " ", + RowBox[{+ RowBox[{"c_", "1", + RowBox[{"(", "X", ")"}]}], " ", "=", " ", + RowBox[{"-", "alpha"}]}], ",", " ", + RowBox[{+ RowBox[{"c_", "1", + RowBox[{"(", "Y", ")"}]}], " ", "=", " ", + RowBox[{"-", "beta"}]}]}], " ", "*)"}], "\n", + RowBox[{+ RowBox[{"KREL", "[", "n_", "]"}], ":=", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"1", "-", + RowBox[{"L", "*", + RowBox[{"WT", "[", + RowBox[{"n", ",", "i"}], "]"}]}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"normal", " ", "form", " ", "of", " ", + RowBox[{"L", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Clear", "[", "Lpow$nplus1", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Lpow$nplus1", "[", "n_", "]"}], " ", ":=", " ", + RowBox[{+ RowBox[{"Lpow$nplus1", "[", "n", "]"}], "=", " ", + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"L", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], "-", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{"-", "1"}], ")"}], "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], + RowBox[{+ RowBox[{"KREL", "[", "n", "]"}], "/", + RowBox[{+ RowBox[{"(", + RowBox[{"X", "*", "Y"}], ")"}], "^", + RowBox[{"Binomial", "[", + RowBox[{+ RowBox[{"n", "+", "1"}], ",", "2"}], "]"}]}]}]}]}], "]"}]}]}], + "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"(", "unefficiently", ")"}], " ", "normalize", " ", "a", " ", + "polynomial", " ", "in", " ", "L"}], " ", "*)"}], " ", + "\[IndentingNewLine]", + RowBox[{"Clear", "[", "KnormalizeSlow", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"KnormalizeSlow", "[", + RowBox[{"n_", ",", " ", "Z0_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "Z0", "]"}]}], ",", "m"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Exponent", "[", + RowBox[{"Z", ",", "L"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{"m", "\[LessEqual]", "n"}], ",", "Z", ",", + RowBox[{"KnormalizeSlow", "[", + RowBox[{"n", ",", + RowBox[{"Z", "/.", + RowBox[{"{", + RowBox[{+ RowBox[{"L", "^", "m"}], "\[Rule]", + RowBox[{+ RowBox[{"L", "^", + RowBox[{"(", + RowBox[{"m", "-", "n", "-", "1"}], ")"}]}], "*", + RowBox[{"Lpow$nplus1", "[", "n", "]"}]}]}], "}"}]}]}], "]"}]}],+ "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"Table", " ", "of", " ", "normal", " ", "forms", " ", "of", " ", + RowBox[{"L", "^", "p"}]}], " ", "*)"}], "\n", + RowBox[{"Clear", "[", "LPowXY", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"LPowXY", "[", + RowBox[{"n_", ",", "k_"}], "]"}], ":=", + RowBox[{+ RowBox[{"LPowXY", "[", + RowBox[{"n", ",", "k"}], "]"}], " ", "=", " ", + RowBox[{"Expand", "[", + RowBox[{"KnormalizeSlow", "[", + RowBox[{"n", ",", + RowBox[{"L", "^", "k"}]}], "]"}], "]"}]}]}], "\n", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"MoreE", " ", "eficient", " ", "normalization", " ", "in", " ", + RowBox[{"K", "^", + RowBox[{"(", + RowBox[{"P", "^", "n"}], ")"}]}], " ", "\[IndentingNewLine]", + RowBox[{"usage", ":", " ", + RowBox[{"KnormalizeVarXY", "[", + RowBox[{"dim", ",", "L", ",", "expr"}], "]"}]}]}], " ", "*)"}], "\n", + RowBox[{"Clear", "[", "KnormalizeVarXY", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"KnormalizeVarXY", "[", + RowBox[{"n_", ",", "uuu_", ",", "Z0_"}], "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"m", ",", "Z"}], "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "Z0", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"m", "=", + RowBox[{"Exponent", "[", + RowBox[{"Z", ",", "uuu"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"Z", ",", "uuu", ",", "k"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"LPowXY", "[", + RowBox[{"n", ",", "k"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", "uuu"}], "}"}]}], ")"}]}], ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", "m"}], "}"}]}], "]"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]"}]}]], "Input",+ CellChangeTimes->{{3.801069536445114*^9, 3.8010695374127903`*^9}, {+ 3.801135975104397*^9, 3.801136088365362*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{"PUSHFORWARD", " ", "ALONG", " ", "PSI", " ", + RowBox[{"(", + RowBox[{"THE", " ", "MULTIPLICATION", " ", "MAP"}], ")"}]}], " ", + "==="}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"formulas", " ", "for", " ", + RowBox[{"(", + RowBox[{"psi_", + RowBox[{"{", + RowBox[{"n", ",", "1"}], "}"}]}], ")"}], + RowBox[{"_", "!"}], " ", + RowBox[{"(", + RowBox[{+ RowBox[{"L1", "^", "p"}], "*", + RowBox[{"L2", "^", "q"}]}], ")"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", "PSI$N1f", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"PSI$N1f", "[", + RowBox[{"n_", ",", "0", ",", "1"}], "]"}], ":=", + RowBox[{"L", "*", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], "-", + RowBox[{"Y", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}]}], ")"}], "/", + RowBox[{"(", + RowBox[{"X", "-", "Y"}], ")"}]}]}]}], "\n", + RowBox[{+ RowBox[{"PSI$N1f", "[", + RowBox[{"n_", ",", "p_", ",", "0"}], "]"}], ":=", + RowBox[{+ RowBox[{+ RowBox[{"L", "^", "p"}], "*", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"p", "+", "1"}], ")"}]}], "-", + RowBox[{"Y", "^", + RowBox[{"(", + RowBox[{"p", "+", "1"}], ")"}]}]}], ")"}], "/", + RowBox[{"(", + RowBox[{"X", "-", "Y"}], ")"}]}]}], "+", + RowBox[{+ RowBox[{"L", "^", + RowBox[{"(", + RowBox[{"p", "+", "1"}], ")"}]}], " ", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{+ RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], "*", + RowBox[{"Y", "^", + RowBox[{"(", + RowBox[{"p", "+", "1"}], ")"}]}]}], "-", + RowBox[{+ RowBox[{"Y", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], " ", + RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"p", "+", "1"}], ")"}]}]}]}], ")"}], "/", + RowBox[{"(", + RowBox[{"X", "-", "Y"}], ")"}]}]}]}]}], "\n", + RowBox[{+ RowBox[{"PSI$N1f", "[", + RowBox[{"n_", ",", "p_", ",", "q_"}], "]"}], ":=", + RowBox[{"If", "[", + RowBox[{+ RowBox[{"p", "\[GreaterEqual]", "q"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"L", "^", "q"}], "*", + RowBox[{"PSI$N1f", "[", + RowBox[{"n", ",", + RowBox[{"p", "-", "q"}], ",", "0"}], "]"}]}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"L", "^", "p"}], "*", + RowBox[{"PSI$N1f", "[", + RowBox[{"n", ",", "0", ",", + RowBox[{"q", "-", "p"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}],+ "\n", "\[IndentingNewLine]", + RowBox[{"Clear", "[", "PSI$N1", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"PSI$N1", "[", + RowBox[{"n_", ",", "p_", ",", "q_"}], "]"}], ":=", + RowBox[{+ RowBox[{"PSI$N1", "[", + RowBox[{"n", ",", "p", ",", "q"}], "]"}], "=", + RowBox[{"Expand", "[", + RowBox[{"Factor", "[", + RowBox[{"PSI$N1f", "[", + RowBox[{"n", ",", "p", ",", "q"}], "]"}], "]"}], "]"}]}]}], "\n", + "\[IndentingNewLine]", + RowBox[{"Clear", "[", "newPsiBang2", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"n_", ",", "1"}], "}"}], ",", + RowBox[{"{", + RowBox[{"var1_", ",", "var2_"}], "}"}], ",", "outvar_", ",", "ZZ_"}], + "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", "Z", "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "ZZ", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"Z", ",", "var1", ",", "i"}], "]"}], ",", "var2", ",", + "j"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"PSI$N1", "[", + RowBox[{"n", ",", "i", ",", "j"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", "outvar"}], "}"}]}], ")"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}], ",", + RowBox[{"{", + RowBox[{"j", ",", "0", ",", "1"}], "}"}]}], "]"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}], "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"find", " ", "elements", " ", "in", " ", "K", + RowBox[{"(", + RowBox[{+ RowBox[{"P", "^", "m"}], " ", "x", " ", + RowBox[{"P", "^", "1"}]}], ")"}], " ", "such", " ", "that", " ", + "their", " ", "pushforward", " ", "to", " ", "K", + RowBox[{"(", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"m", "+", "1"}], ")"}]}], ")"}], " ", "is", " ", + RowBox[{"{", + RowBox[{"1", ",", "L", ",", + RowBox[{"L", "^", "2"}], ",", + RowBox[{"...", + RowBox[{"L", "^", + RowBox[{"(", + RowBox[{"m", "+", "1"}], ")"}]}]}]}], "}"}]}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"findBasis$M1", "[", "m_", "]"}], ":=", + RowBox[{+ RowBox[{"findBasis$M1", "[", "m", "]"}], "=", "\[IndentingNewLine]", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ "vars", ",", "A", ",", "B", ",", "list", ",", "i", ",", "j", ",", "k",+ ",", "eqs", ",", "sols", ",", "sol"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"vars", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"a", ",", "i"}], "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"m", "+", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{+ RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"a", ",", "i"}], "]"}], "*", + RowBox[{"L1", "^", "i"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "m"}], "}"}]}], "]"}], "+", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"a", ",", + RowBox[{"m", "+", "1"}]}], "]"}], "*", + RowBox[{"L1", "^", "m"}], "*", "L2"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"m", ",", "1"}], "}"}], ",", + RowBox[{"{", + RowBox[{"L1", ",", "L2"}], "}"}], ",", "L", ",", "A"}], "]"}]}], + ";", "\[IndentingNewLine]", + RowBox[{"list", "=", + RowBox[{"Table", "[", + RowBox[{"Null", ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"m", "+", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"k", "=", "0"}], ",", + RowBox[{"k", "\[LessEqual]", + RowBox[{"m", "+", "1"}]}], ",", + RowBox[{"k", "++"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"eqs", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"B", ",", "L", ",", "i"}], "]"}], "\[Equal]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{"k", "\[Equal]", "i"}], ",", "1", ",", "0"}], + "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"m", "+", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"sols", " ", "=", + RowBox[{"Solve", "[", + RowBox[{"eqs", ",", "vars"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"sol", " ", "=", " ", + RowBox[{+ "sols", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]}], + ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"list", "\[LeftDoubleBracket]", + RowBox[{"k", "+", "1"}], "\[RightDoubleBracket]"}], " ", "=", + RowBox[{"A", "/.", "sol"}]}], ";"}]}], "\[IndentingNewLine]", + "]"}], ";", "\[IndentingNewLine]", "list"}]}], "\[IndentingNewLine]",+ "]"}]}]}], "\[IndentingNewLine]"}]}]], "Input",+ CellChangeTimes->{{3.801066388986641*^9, 3.8010664015310593`*^9}, {+ 3.801066503394569*^9, 3.80106651662502*^9}, {3.801066564574067*^9, + 3.801066564741948*^9}, {3.8010670236288843`*^9, 3.801067027753759*^9}, {+ 3.801067100792351*^9, 3.80106710544508*^9}, {3.8010671878060493`*^9, + 3.80106730349851*^9}, {3.801068087792117*^9, 3.8010680923566713`*^9}, + 3.8010694137602043`*^9, {3.801136097102274*^9, 3.8011361141220093`*^9}, {+ 3.8011362235083227`*^9, 3.801136224919012*^9}, {3.801136755713544*^9, + 3.801136757460051*^9}}],++Cell[BoxData[{+ RowBox[{"Clear", "[", + RowBox[{"PSI$NM", ",", "S", ",", "T"}], "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"n_", ",", "0", ",", "p_", ",", "0"}], "]"}], ":=", + RowBox[{"L", "^", "p"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"0", ",", "m_", ",", "0", ",", "q_"}], "]"}], ":=", + RowBox[{"L", "^", "q"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"n_", ",", "1", ",", "p_", ",", "q_"}], "]"}], ":=", + RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"n", ",", "1", ",", "p", ",", "q"}], "]"}], "=", + RowBox[{"PSI$N1", "[", + RowBox[{"n", ",", "p", ",", "q"}], "]"}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"n_", ",", "mplus1_", ",", "p_", ",", "q_"}], "]"}], ":=", + RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"n", ",", "mplus1", ",", "p", ",", "q"}], "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"mplus1", "-", "1"}]}], ",", "basis", ",", "A", ",", "B", + ",", "C"}], "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"basis", "=", + RowBox[{"findBasis$M1", "[", "m", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{+ RowBox[{"basis", "\[LeftDoubleBracket]", + RowBox[{"q", "+", "1"}], "\[RightDoubleBracket]"}], "/.", + RowBox[{"{", + RowBox[{+ RowBox[{"L1", "\[Rule]", "L2"}], ",", + RowBox[{"L2", "\[Rule]", "T"}]}], "}"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"n", ",", "m"}], "}"}], ",", + RowBox[{"{", + RowBox[{"L1", ",", "L2"}], "}"}], ",", "S", ",", + RowBox[{+ RowBox[{"L1", "^", "p"}], "*", "A"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"C", "=", + RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"n", "+", "m"}], ",", "1"}], "}"}], ",", + RowBox[{"{", + RowBox[{"S", ",", "T"}], "}"}], ",", "L", ",", "B"}], "]"}]}], ";",+ "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Factor", "[", "C", "]"}], "]"}]}]}], "\[IndentingNewLine]", + "]"}]}]}], "\[IndentingNewLine]"}], "\n", + RowBox[{+ RowBox[{+ RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"n_", ",", "m_"}], "}"}], ",", + RowBox[{"{", + RowBox[{"var1_", ",", "var2_"}], "}"}], ",", "outvar_", ",", "ZZ_"}], + "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"Z", ",", "deg1", ",", "deg2"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "ZZ", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"deg1", "=", + RowBox[{"Exponent", "[", + RowBox[{"Z", ",", "var1"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"deg2", "=", + RowBox[{"Exponent", "[", + RowBox[{"Z", ",", "var2"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"Z", ",", "var1", ",", "i"}], "]"}], ",", "var2", ",", + "j"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"PSI$NM", "[", + RowBox[{"n", ",", "m", ",", "i", ",", "j"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", "outvar"}], "}"}]}], ")"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "deg1"}], "}"}], ",", + RowBox[{"{", + RowBox[{"j", ",", "0", ",", "deg2"}], "}"}]}], "]"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]"}], "\n", + RowBox[{+ RowBox[{"newPsiBangMany", "[", + RowBox[{+ RowBox[{"{", "n_", "}"}], ",", + RowBox[{"{", "uuu_", "}"}], ",", "www_", ",", "Z_"}], "]"}], ":=", + RowBox[{"Z", "/.", + RowBox[{"{", + RowBox[{"uuu", "\[Rule]", "www"}], "}"}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"newPsiBangMany", "[", + RowBox[{"ns_", ",", "uuus_", ",", "www_", ",", "Z_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"ttt", ",", "vvvs", ",", "ms"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "uuus", "]"}], "\[Equal]", "1"}], ",", + RowBox[{"Z", "/.", + RowBox[{"{", + RowBox[{+ RowBox[{+ "uuus", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], + "\[Rule]", "www"}], "}"}]}], ",", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "uuus", "]"}], "\[Equal]", "2"}], ",", + RowBox[{"newPsiBang2", "[", + RowBox[{"ns", ",", "uuus", ",", "www", ",", "Z"}], "]"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"ms", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{+ "ns", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], + "+", + RowBox[{+ "ns", "\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}]}], + "}"}], ",", + RowBox[{"Drop", "[", + RowBox[{"ns", ",", "2"}], "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"vvvs", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "ttt", "}"}], ",", + RowBox[{"Drop", "[", + RowBox[{"uuus", ",", "2"}], "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"newPsiBangMany", "[", + RowBox[{"ms", ",", "vvvs", ",", "www", ",", " ", + RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"Take", "[", + RowBox[{"ns", ",", "2"}], "]"}], ",", + RowBox[{"Take", "[", + RowBox[{"uuus", ",", "2"}], "]"}], ",", "ttt", ",", "Z"}], + "]"}]}], "]"}]}]}], "]"}]}], "]"}]}], "]"}]}]}], "Input",+ CellChangeTimes->{{3.801067686551507*^9, 3.801067757806052*^9}, {+ 3.8010679277141123`*^9, 3.801067940230144*^9}, {3.801068120744752*^9, + 3.801068298368375*^9}, {3.801068793586752*^9, 3.8010688873986397`*^9}, {+ 3.801069015383294*^9, 3.8010691177256727`*^9}, {3.801070830884396*^9, + 3.8010708325946302`*^9}, {3.8011130758108263`*^9, 3.8011131226335583`*^9}, {+ 3.801136192770171*^9, 3.801136198915134*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{+ "PUSHFORwARD", " ", "ALONG", " ", "THE", " ", "DIAGONAL", " ", "MAP"}], + " ", "==="}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"notk", "[", + RowBox[{"n_", ",", "k_"}], "]"}], ":=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Range", "[", + RowBox[{"0", ",", "n"}], "]"}], ",", + RowBox[{+ RowBox[{"#", "\[NotEqual]", "k"}], "&"}]}], "]"}]}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ "class", " ", "of", " ", "the", " ", "diagonal", " ", "in", " ", "K", + RowBox[{"(", + RowBox[{+ RowBox[{"P", "^", "n"}], " ", "x", " ", + RowBox[{"P", "^", "n"}]}], ")"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Clear", "[", "DELTA$CLASS$2", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"DELTA$CLASS$2", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"DELTA$CLASS$2", "[", "n", "]"}], "=", "\[IndentingNewLine]", + RowBox[{"Factor", "[", + RowBox[{"Sum", "[", " ", + RowBox[{+ RowBox[{"Product", "[", " ", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{"1", "-", + RowBox[{"L1", "*", + RowBox[{"WT", "[", + RowBox[{"n", ",", "i"}], "]"}]}]}], ")"}], + RowBox[{+ RowBox[{"(", + RowBox[{"1", "-", + RowBox[{"L2", "*", + RowBox[{"WT", "[", + RowBox[{"n", ",", "i"}], "]"}]}]}], ")"}], "/", + RowBox[{"(", + RowBox[{"1", "-", + RowBox[{+ RowBox[{"WT", "[", + RowBox[{"n", ",", "i"}], "]"}], "/", + RowBox[{"WT", "[", + RowBox[{"n", ",", "k"}], "]"}]}]}], ")"}]}]}], " ", ",", + RowBox[{"{", + RowBox[{"i", ",", + RowBox[{"notk", "[", + RowBox[{"n", ",", "k"}], "]"}]}], "}"}]}], "]"}], " ", ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", "n"}], "}"}]}], "]"}], "]"}]}]}], + "\[IndentingNewLine]", "\n", + RowBox[{+ RowBox[{"newDeltaBang2", "[", + RowBox[{"n_", ",", "invar_", ",", + RowBox[{"{", + RowBox[{"var1_", ",", "var2_"}], "}"}], ",", "ZZ_"}], "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "ZZ", "]"}]}], ",", "m", ",", "A"}], "}"}], + ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Exponent", "[", + RowBox[{"Z", ",", "invar"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"DELTA$CLASS$2", "[", "n", "]"}], "/.", + RowBox[{"{", + RowBox[{+ RowBox[{"L1", "\[Rule]", "var1"}], ",", + RowBox[{"L2", "\[Rule]", "var2"}]}], "}"}]}], ")"}], "*", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"var1", "^", "p"}], "*", + RowBox[{"Coefficient", "[", + RowBox[{"Z", ",", "invar", ",", "p"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"p", ",", "0", ",", "m"}], "}"}]}], "]"}]}], "]"}]}], + ";", "\[IndentingNewLine]", + RowBox[{"KnormalizeVarXY", "[", + RowBox[{"n", ",", "var1", ",", "A"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"usage", ":", " ", + RowBox[{"deltaBangMany", "[", + RowBox[{"dim", ",", "L", ",", + RowBox[{"{", + RowBox[{"L1", ",", "L2", ",", "L3"}], "}"}], ",", "X"}], "]"}]}], " ",+ "*)"}], "\n", + RowBox[{+ RowBox[{"newDeltaBangMany", "[", + RowBox[{"n_", ",", "uuu_", ",", "vvvs_", ",", "Z_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", "ttt", "}"}], ",", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "vvvs", "]"}], "\[Equal]", "1"}], ",", + RowBox[{"Z", "/.", + RowBox[{"{", + RowBox[{"uuu", "\[Rule]", + RowBox[{+ "vvvs", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]}], + "}"}]}], ",", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "vvvs", "]"}], "\[Equal]", "2"}], ",", + RowBox[{"newDeltaBang2", "[", + RowBox[{"n", ",", "uuu", ",", "vvvs", ",", "Z"}], "]"}], ",", + "\[IndentingNewLine]", + RowBox[{"newDeltaBangMany", "[", + RowBox[{"n", ",", "ttt", ",", + RowBox[{"Drop", "[", + RowBox[{"vvvs", ",", "1"}], "]"}], ",", " ", + RowBox[{"newDeltaBang2", "[", + RowBox[{"n", ",", "uuu", ",", + RowBox[{"{", + RowBox[{+ RowBox[{+ "vvvs", "\[LeftDoubleBracket]", "1", + "\[RightDoubleBracket]"}], ",", "ttt"}], "}"}], ",", "Z"}], + "]"}]}], "]"}]}], "]"}]}], "]"}]}], "]"}]}]}]}]], "Input",+ CellChangeTimes->{{3.8010694276831083`*^9, 3.801069434269802*^9}, {+ 3.801069600632613*^9, 3.801069629592244*^9}, {3.801113235025399*^9, + 3.801113235608663*^9}, {3.801113291271837*^9, 3.8011133545199003`*^9}, {+ 3.801113390957038*^9, 3.80111339175294*^9}, {3.801136134192531*^9, + 3.801136178622281*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{+ "PUSHFORWARD", " ", "ALONG", " ", "THE", " ", "POWER", " ", "MAP"}], " ", + "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", "OMEGA$ND", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"OMEGA$ND", "[", + RowBox[{"n_", ",", "d_", ",", "p_"}], "]"}], ":=", + RowBox[{+ RowBox[{"OMEGA$ND", "[", + RowBox[{"n", ",", "d", ",", "p"}], "]"}], "=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"vars", ",", "ns", ",", "A", ",", "B"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"vars", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"TMP$X", ",", "i"}], "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "d"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"ns", "=", " ", + RowBox[{"Table", "[", + RowBox[{"n", ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "d"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"newDeltaBangMany", "[", + RowBox[{"n", ",", "L", ",", "vars", ",", + RowBox[{"L", "^", "p"}]}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"newPsiBangMany", "[", + RowBox[{"ns", ",", "vars", ",", "L", ",", + RowBox[{"Expand", "[", "A", "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"Expand", "[", "B", "]"}]}]}], "\[IndentingNewLine]", + "]"}]}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"newOmegaBang", "[", + RowBox[{"n_", ",", "0", ",", "var1_", ",", "var2_", ",", "ZZ_"}], "]"}], + ":=", + RowBox[{"Coefficient", "[", + RowBox[{"ZZ", ",", "var1", ",", "0"}], "]"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"newOmegaBang", "[", + RowBox[{"n_", ",", "1", ",", "var1_", ",", "var2_", ",", "ZZ_"}], "]"}], + ":=", + RowBox[{"ZZ", "/.", + RowBox[{"{", + RowBox[{"var1", "\[Rule]", "var2"}], "}"}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"newOmegaBang", "[", + RowBox[{"n_", ",", "d_", ",", "var1_", ",", "var2_", ",", "ZZ_"}], "]"}],+ ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "ZZ", "]"}]}], ",", "m", ",", "A"}], "}"}], + ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Exponent", "[", + RowBox[{"Z", ",", "var1"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"OMEGA$ND", "[", + RowBox[{"n", ",", "d", ",", "p"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", "var2"}], "}"}]}], ")"}], "*", + RowBox[{"Coefficient", "[", + RowBox[{"Z", ",", "var1", ",", "p"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"p", ",", "0", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"Expand", "[", "A", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], + "\[IndentingNewLine]", "\n", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{+ RowBox[{"P", "^", "n1"}], " ", "x", " ", + RowBox[{"P", "^", "n2"}], " ", "x", " ", + RowBox[{"P", "^", "n3"}]}], " ", "\[Rule]", " ", + RowBox[{+ RowBox[{+ RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"d1", "*", "n1"}], ")"}]}], " ", "x", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"d2", "*", "n2"}], ")"}]}], " ", "x", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"d3", "*", "n3"}], ")"}]}]}], " ", "\[Rule]", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{+ RowBox[{"d1", "*", "n1"}], " ", "+", " ", + RowBox[{"d2", "*", "n2"}], " ", "+", " ", + RowBox[{"d3", "*", "n3"}]}], " "}]}]}]}], "*)"}], " ", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"newOmegaBangLam", "[", + RowBox[{"ns_", ",", "ds_", ",", "uuus_", ",", "www_", ",", "Z0_"}], + "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"Z", "=", + RowBox[{"Expand", "[", "Z0", "]"}]}], ",", "\[IndentingNewLine]", + RowBox[{"m", " ", "=", " ", + RowBox[{"Length", "[", "ns", "]"}]}], ",", "\[IndentingNewLine]", + "vars", ",", "W", ",", "nds", ",", "ttt", ",", "i"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"vars", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"nds", "=", + RowBox[{"Table", "[", " ", + RowBox[{+ RowBox[{+ RowBox[{"ns", "[", + RowBox[{"[", "i", "]"}], "]"}], "*", + RowBox[{"ds", "[", + RowBox[{"[", "i", "]"}], "]"}]}], ",", " ", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"W", "=", "Z"}], ";", "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "m"}], ",", + RowBox[{"i", "++"}], ",", + RowBox[{"W", "=", + RowBox[{"newOmegaBang", "[", + RowBox[{+ RowBox[{"ns", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", + RowBox[{"ds", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", + RowBox[{"uuus", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", + RowBox[{"vars", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", "W"}], "]"}]}]}], "]"}], + ";", "\[IndentingNewLine]", + RowBox[{"newPsiBangMany", "[", + RowBox[{"nds", ",", "vars", ",", "www", ",", "W"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}]}]}]], "Input",+ CellChangeTimes->{{3.801070352996221*^9, 3.801070565349876*^9}, {+ 3.80107060971841*^9, 3.8010706107384243`*^9}, {3.8010709729287777`*^9, + 3.8010709732164087`*^9}, {3.801071164182687*^9, 3.801071164313745*^9}, {+ 3.801071203324443*^9, 3.801071220495305*^9}, {3.801071259284038*^9, + 3.8010713728549137`*^9}, {3.801071459809278*^9, 3.801071460958413*^9}, {+ 3.801113170295889*^9, 3.801113206388917*^9}, {3.801136238289638*^9, + 3.8011362562914467`*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", + RowBox[{+ "only", " ", "works", " ", "for", " ", "lists", " ", "of", " ", "equal", + " ", + RowBox[{"length", "!!"}]}], "*)"}], + RowBox[{+ RowBox[{+ RowBox[{"Zip", "[", + RowBox[{"as_", ",", "bs_"}], "]"}], ":=", + RowBox[{"MapThread", "[", + RowBox[{+ RowBox[{+ RowBox[{"{", + RowBox[{"#1", ",", "#2"}], "}"}], "&"}], ",", + RowBox[{"{", + RowBox[{"as", ",", "bs"}], "}"}]}], "]"}]}], "\n", + RowBox[{+ RowBox[{"Zip3", "[", + RowBox[{"as_", ",", "bs_", ",", "cs_"}], "]"}], ":=", + RowBox[{"MapThread", "[", + RowBox[{+ RowBox[{+ RowBox[{"{", + RowBox[{"#1", ",", "#2", ",", "#3"}], "}"}], "&"}], ",", + RowBox[{"{", + RowBox[{"as", ",", "bs", ",", "cs"}], "}"}]}], "]"}]}], "\n", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Fst", "[", "pair_", "]"}], ":=", + RowBox[{"pair", "[", + RowBox[{"[", "1", "]"}], "]"}]}], "\n", + RowBox[{+ RowBox[{"Snd", "[", "pair_", "]"}], ":=", + RowBox[{"pair", "[", + RowBox[{"[", "2", "]"}], "]"}]}], "\n", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"extendListWithZeros", "[", + RowBox[{"L_", ",", "n_"}], "]"}], ":=", + RowBox[{"Join", "[", + RowBox[{"L", ",", + RowBox[{"Table", "[", + RowBox[{"0", ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", + RowBox[{"n", "-", + RowBox[{"Length", "[", "L", "]"}]}]}], "}"}]}], "]"}]}], + "]"}]}]}]}]], "Input"],++Cell[BoxData[{+ RowBox[{+ RowBox[{+ RowBox[{"EmptyPartQ", "[", "part_", "]"}], ":=", + RowBox[{+ RowBox[{"Length", "[", "part", "]"}], "\[Equal]", "0"}]}], + "\[IndentingNewLine]"}], "\n", + RowBox[{+ RowBox[{"DualPart", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{"{", "}"}]}], "\n", + RowBox[{+ RowBox[{+ RowBox[{"DualPart", "[", "lam_", "]"}], ":=", + RowBox[{"With", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"m", "=", + RowBox[{"lam", "[", + RowBox[{"[", "1", "]"}], "]"}]}], "}"}], ",", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Length", "[", + RowBox[{"Select", "[", + RowBox[{"lam", ",", + RowBox[{+ RowBox[{"#", "\[GreaterEqual]", "i"}], "&"}]}], "]"}], "]"}], ",", + + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]", " "}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"toExpoForm", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{"{", "}"}]}], " "}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"toExpoForm", "[", "part_", "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"k", "=", + RowBox[{"Max", "[", "part", "]"}]}], "}"}], ",", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Length", "[", + RowBox[{"Select", "[", + RowBox[{"part", ",", + RowBox[{+ RowBox[{"#", "\[Equal]", "j"}], "&"}]}], "]"}], "]"}], ",", + RowBox[{"{", + RowBox[{"j", ",", "1", ",", "k"}], "}"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"posVectorQ", "[", "as_", "]"}], ":=", + RowBox[{+ RowBox[{"Map", "[", + RowBox[{+ RowBox[{+ RowBox[{"#", "\[GreaterEqual]", "0"}], "&"}], ",", "as"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"List", "\[Rule]", "And"}], "}"}]}]}], + ";"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"kdeTriples", "[", + RowBox[{"p_", ",", "ns_"}], "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"m", " ", "=", " ", + RowBox[{"Length", "[", "ns", "]"}]}], ",", "\[IndentingNewLine]", + "posQ", ",", "oneK", ",", "A"}], "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"oneK", "[", "k_", "]"}], ":=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"k", ",", + RowBox[{"ns", "-", "es"}], ",", "es"}], "}"}], ",", + RowBox[{"{", + RowBox[{"es", ",", + RowBox[{"Combinatorica`Compositions", "[", + RowBox[{+ RowBox[{"p", "-", "k"}], ",", "m"}], "]"}]}], "}"}]}], "]"}]}], + ";", "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"Table", " ", "[", + RowBox[{+ RowBox[{"oneK", "[", "k", "]"}], ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", + RowBox[{"p", "-", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Flatten", "[", + RowBox[{"A", ",", "1"}], "]"}], ",", + RowBox[{+ RowBox[{"posVectorQ", "[", + RowBox[{"Snd", "[", "#", "]"}], "]"}], "&"}]}], "]"}]}], ";", + "\[IndentingNewLine]", "A"}]}], "]"}]}], "\[IndentingNewLine]"}], "Input",\++ CellChangeTimes->{{3.801071512912022*^9, 3.80107154768006*^9}}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"motivic", " ", "Chern", " ", "class", " ", "of", " ", + RowBox[{"P", "^", "n"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"Clear", "[", "mcPn", "]"}], ";"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"mcPn", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"mcPn", "[", "n", "]"}], "=", "\[IndentingNewLine]", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"rel", ",", "tmp"}], "}"}], ",", + RowBox[{+ RowBox[{"rel", "=", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"1", "-", + RowBox[{"L", "*", + RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"n", "-", "i"}], ")"}]}], "*", + RowBox[{"Y", "^", "i"}]}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"tmp", "=", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"1", "+", + RowBox[{"t", "*", "L", "*", + RowBox[{"X", "^", + RowBox[{"(", + RowBox[{"n", "-", "i"}], ")"}]}], "*", + RowBox[{"Y", "^", "i"}]}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"Factor", "[", + RowBox[{+ RowBox[{"(", + RowBox[{"tmp", "-", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{"-", "t"}], ")"}], "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], " ", "rel"}]}], ")"}], "/", + RowBox[{"(", + RowBox[{"1", "+", "t"}], ")"}]}], "]"}]}]}], + "]"}]}]}]}]}]], "Input",+ CellChangeTimes->{{3.801136267380416*^9, 3.801136273051806*^9}}],++Cell[BoxData[{+ RowBox[{+ RowBox[{"Clear", "[", + RowBox[{"L", ",", "S"}], "]"}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"LL", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"L", ",", "i"}], "]"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"SS", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"S", ",", "i"}], "]"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"LLs", "[", "n_", "]"}], ":=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"LL", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "n"}], "}"}]}], + "]"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"SSs", "[", "n_", "]"}], ":=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"SS", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", + RowBox[{"mcXLam", ",", "mcDisj1", ",", "mcDisj", ",", "mcDisjSorted"}], + "]"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"mcXLam", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"mcXLam", "[", + RowBox[{"{", "}"}], "]"}], "=", "1"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcXLam", "[", + RowBox[{"{", "1", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"mcXLam", "[", + RowBox[{"{", "1", "}"}], "]"}], "=", + RowBox[{"mcPn", "[", "1", "]"}]}]}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"mcDisj1", "[", "0", "]"}], ":=", + RowBox[{+ RowBox[{"mcDisj1", "[", "0", "]"}], "=", "1"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcDisj1", "[", "1", "]"}], ":=", + RowBox[{+ RowBox[{"mcDisj1", "[", "1", "]"}], "=", + RowBox[{"mcPn", "[", "1", "]"}]}]}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcDisj", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"mcDisj", "[", + RowBox[{"{", "}"}], "]"}], "=", "1"}]}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcDisjSorted", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"mcDisjSorted", "[", + RowBox[{"{", "}"}], "]"}], "=", "1"}]}], "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{+ "equivariant", " ", "motivic", " ", "chern", " ", "class", " ", "of", " ",+ "D", + RowBox[{"(", "n", ")"}]}], "=", + RowBox[{"X", + RowBox[{"(", + RowBox[{"1", "^", "n"}], ")"}]}]}], " ", + "*)"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcDisj1", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"mcDisj1", "[", "n", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"parts", "=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Combinatorica`Partitions", "[", "n", "]"}], ",", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "#", "]"}], "<", "n"}], "&"}]}], "]"}]}], + "}"}], ",", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"mcPn", "[", "n", "]"}], "-", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{"mcXLam", "[", "p", "]"}], ",", + RowBox[{"{", + RowBox[{"p", ",", "parts"}], "}"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "\n", + RowBox[{"(*", " ", + RowBox[{+ "equivariant", " ", "motivic", " ", "chern", " ", "class", " ", "of", " ", + "X_lambda"}], " ", "*)"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcXLam", "[", "lambda_", "]"}], ":=", + RowBox[{+ RowBox[{"mcXLam", "[", "lambda", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"es", " ", "=", " ", + RowBox[{"toExpoForm", "[", "lambda", "]"}]}], ",", "m", ",", "m1", + ",", "ns", ",", "pairs", ",", "Z"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Length", "[", "es", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"ns", " ", "=", " ", + RowBox[{"Range", "[", "m", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"pairs", " ", "=", " ", + RowBox[{"Zip", "[", + RowBox[{"ns", ",", "es"}], "]"}]}], ";", " ", + RowBox[{"(*", " ", + RowBox[{"i", "^", "e_"}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"pairs", " ", "=", " ", + RowBox[{"Select", "[", + RowBox[{"pairs", ",", + RowBox[{+ RowBox[{+ RowBox[{"Snd", "[", "#", "]"}], ">", "0"}], "&"}]}], "]"}]}], ";",+ " ", + RowBox[{"(*", " ", + RowBox[{"!!", "!"}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"m1", " ", "=", " ", + RowBox[{"Length", "[", "pairs", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"ns", " ", "=", + RowBox[{"Map", "[", + RowBox[{"Fst", ",", "pairs"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"es", " ", "=", + RowBox[{"Map", "[", + RowBox[{"Snd", ",", "pairs"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"Z", "=", + RowBox[{"mcDisj", "[", "es", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{"\"\<xlam1 - \>\"", ",", "pairs"}], "]"}], ";", + "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{+ "\"\<xlam2 - \>\"", ",", "es", ",", "\"\< | \>\"", ",", "ns", ",", + "\"\< | \>\"", ",", + RowBox[{"uus", "[", "m1", "]"}], ",", "\"\< | \>\"", ",", "X"}], + "]"}], ";"}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"newOmegaBangLam", "[", + RowBox[{"es", ",", "ns", ",", + RowBox[{"LLs", "[", "m1", "]"}], ",", "L", ",", "Z"}], "]"}], + "]"}]}]}], "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ "equivariant", " ", "motivic", " ", "chern", " ", "class", " ", "of", " ", + "D", + RowBox[{"(", + RowBox[{"d1", ",", "d2", ",", "..."}], ")"}]}], " ", + "*)"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"mcDisj", "[", + RowBox[{"{", "n_", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"mcDisj", "[", + RowBox[{"{", "n", "}"}], "]"}], " ", "=", + RowBox[{+ RowBox[{"mcDisj1", "[", "n", "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", + RowBox[{"LL", "[", "1", "]"}]}], "}"}]}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"mcDisj", "[", "ns0_", "]"}], ":=", + RowBox[{+ RowBox[{"mcDisj", "[", "ns0", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Length", "[", "ns0", "]"}]}], ",", "\[IndentingNewLine]", + "nis0", ",", "nis1", ",", "ns1", ",", "idxs", ",", "X", ",", "ttt"}], + "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"nis0", " ", "=", + RowBox[{"Zip", "[", + RowBox[{"ns0", ",", + RowBox[{"Range", "[", "m", "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"nis1", "=", + RowBox[{"SortBy", "[", + RowBox[{"nis0", ",", + RowBox[{+ RowBox[{"-", + RowBox[{"Fst", "[", "#", "]"}]}], "&"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"idxs", "=", + RowBox[{"Map", "[", + RowBox[{"Snd", ",", "nis1"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"ns1", " ", "=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Map", "[", + RowBox[{"Fst", ",", "nis1"}], "]"}], ",", + RowBox[{+ RowBox[{"#", ">", "0"}], "&"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{+ "\"\<nis1 - \>\"", ",", "nis0", ",", "\"\< | \>\"", ",", "nis1"}], + "]"}], ";", "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{"\"\<nis2 - \>\"", ",", "ns1"}], "]"}], ";"}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{"X", "=", + RowBox[{"mcDisjSorted", "[", "ns1", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"X", "=", + RowBox[{"X", "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"LL", "[", "i", "]"}], "\[Rule]", + RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"X", "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}], "\[Rule]", + RowBox[{"LL", "[", + RowBox[{+ "idxs", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}], + "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}]}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ "a", " ", "single", " ", "term", " ", "corresponding", " ", "to", " ", "a",+ " ", "triple", " ", + RowBox[{"(", + RowBox[{"k", ",", "ds", ",", "es"}], ")"}]}], " ", + "*)"}]}], "\[IndentingNewLine]", + RowBox[{"Clear", "[", "singleKDE", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"singleKDE", "[", + RowBox[{"{", + RowBox[{"k_", ",", "ds_", ",", "es_"}], "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"ssingleKDE", "[", + RowBox[{"{", + RowBox[{"k", ",", "ds", ",", "es"}], "}"}], "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ "A", ",", "B", ",", "\[IndentingNewLine]", "m", ",", "vars", ",", + "dims", ",", "\[IndentingNewLine]", "pp", ",", "qq", ",", "rr", ",", + "ss", ",", "\[IndentingNewLine]", "pps", ",", "qqs", ",", "rrs", ",", + "sss"}], "\[IndentingNewLine]", "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Length", "[", "ds", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"pp", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"pp$p", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"qq", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"qq$q", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"rr", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"rr$r", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"ss", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"ss$s", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"pps", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"pp", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"qqs", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"qq", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"rrs", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"rr", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"sss", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"ss", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"vars", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "zzz", "}"}], ",", "pps", ",", "qqs"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"dims", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "k", "}"}], ",", "ds", ",", "es"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{+ RowBox[{"mcDisj", "[", "dims", "]"}], "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"LL", "[", "i", "]"}], "\[Rule]", + RowBox[{+ "vars", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}]}], + ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", + RowBox[{+ RowBox[{"2", "m"}], "+", "1"}]}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", "A"}], ";", "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "m"}], ",", + RowBox[{"i", "++"}], ",", + RowBox[{"B", "=", + RowBox[{"Expand", "[", + RowBox[{"newDeltaBang2", "[", + RowBox[{+ RowBox[{+ "es", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}], + ",", + RowBox[{"qq", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{+ RowBox[{"rr", "[", "i", "]"}], ",", + RowBox[{"ss", "[", "i", "]"}]}], "}"}], ",", "B"}], "]"}], + "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "m"}], ",", + RowBox[{"i", "++"}], ",", + RowBox[{"B", "=", + RowBox[{"Expand", "[", + RowBox[{"newPsiBang2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{+ "ds", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}], + ",", + RowBox[{+ "es", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}]}],+ "}"}], ",", + RowBox[{"{", + RowBox[{+ RowBox[{"pp", "[", "i", "]"}], ",", + RowBox[{"ss", "[", "i", "]"}]}], "}"}], ",", + RowBox[{"LL", "[", "i", "]"}], ",", "B"}], "]"}], "]"}]}]}], + "]"}], ";", "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"newPsiBangMany", "[", + RowBox[{+ RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "k", "}"}], ",", "es"}], "]"}], ",", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "zzz", "}"}], ",", "rrs"}], "]"}], ",", "z", ",", + "B"}], "]"}]}], ";", "\[IndentingNewLine]", "B"}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"equiv", " ", "mc", " ", "of", " ", "D", + RowBox[{"(", + RowBox[{"d1", ",", "d2", ",", "..."}], ")"}]}], ",", " ", + RowBox[{+ RowBox[{+ RowBox[{+ RowBox[{"but", " ", "we", " ", "require", " ", "d1"}], + "\[GreaterEqual]", "d2", "\[GreaterEqual]", "d3", "\[GreaterEqual]"}], + "..."}], "\[GreaterEqual]", "dn", ">", "0"}]}], " ", + "*)"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"mcDisjSorted", "[", + RowBox[{"{", "n_", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"mcDisjSorted", "[", + RowBox[{"{", "n", "}"}], "]"}], "=", + RowBox[{+ RowBox[{"mcDisj1", "[", "n", "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", + RowBox[{"LL", "[", "1", "]"}]}], "}"}]}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"mcDisjSorted", "[", "pns_", "]"}], ":=", + RowBox[{+ RowBox[{"mcDisjSorted", "[", "pns", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"p", "=", + RowBox[{+ "pns", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]}], ",", + "\[IndentingNewLine]", + RowBox[{"ns", "=", + RowBox[{"Drop", "[", + RowBox[{"pns", ",", "1"}], "]"}]}], ",", "\[IndentingNewLine]", "A", + ",", "B", ",", "rest", ",", "\[IndentingNewLine]", "KDE"}], + "\[IndentingNewLine]", "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"KDE", "=", + RowBox[{"kdeTriples", "[", + RowBox[{"p", ",", "ns"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{+ "\"\<sorted1 - \>\"", ",", "p", ",", "\"\< | \>\"", ",", "ns"}], + "]"}], ";", "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{"\"\<sorted2 - \>\"", ",", "KDE"}], "]"}], ";"}], " ", + "*)"}], "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"mcDisj1", "[", "p", "]"}], "/.", + RowBox[{"{", + RowBox[{"L", "\[Rule]", "z"}], "}"}]}], ")"}], "*", + RowBox[{"mcDisj", "[", "ns", "]"}]}]}], ";", "\[IndentingNewLine]", + RowBox[{"rest", "=", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{"singleKDE", "[", "kde", "]"}], ",", + RowBox[{"{", + RowBox[{"kde", ",", "KDE"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", " ", "=", " ", + RowBox[{"Expand", "[", + RowBox[{"A", "-", "rest"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"B", " ", "=", + RowBox[{"B", "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"LL", "[", "i", "]"}], "\[Rule]", + RowBox[{"LL", "[", + RowBox[{"i", "+", "1"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", + RowBox[{"Length", "[", "ns", "]"}]}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"B", "/.", + RowBox[{"{", + RowBox[{"z", "\[Rule]", + RowBox[{"LL", "[", "1", "]"}]}], "}"}]}]}]}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]"}], "Input",+ CellChangeTimes->{{3.799904396615363*^9, 3.799904406889674*^9}, + 3.7999044864107447`*^9, {3.799904522981793*^9, 3.799904542217388*^9}, {+ 3.799905368188403*^9, 3.799905440526905*^9}, {3.799910778489602*^9, + 3.799910789411199*^9}, {3.7999114574287767`*^9, 3.7999114795107517`*^9}, {+ 3.7999117495827513`*^9, 3.799911793714377*^9}, {3.7999118288998423`*^9, + 3.799911896725374*^9}, {3.799912109841093*^9, 3.7999121125284853`*^9}, {+ 3.7999125865497513`*^9, 3.7999126172056303`*^9}, 3.79991266733438*^9, {+ 3.799912899384604*^9, 3.7999129587478647`*^9}, {3.7999130239335003`*^9, + 3.79991307814552*^9}, {3.799914094737917*^9, 3.799914115471753*^9}, {+ 3.800879610477685*^9, 3.800879627666667*^9}, {3.8008796639878073`*^9, + 3.80087988408841*^9}, {3.800879937132431*^9, 3.8008799455428457`*^9}, {+ 3.800880007952732*^9, 3.80088000842714*^9}, {3.801071584758039*^9, + 3.801071601266988*^9}, {3.8010716924998083`*^9, 3.801071693783765*^9}, {+ 3.80111350677731*^9, 3.801113662213182*^9}, {3.80113627702074*^9, + 3.8011364016607447`*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{+ RowBox[{"export", " ", "the", " ", "classes", " ", "of", " ", "X", + RowBox[{"(", "lambda", ")"}], " ", "for"}], " ", "|", "lambda", "|", + RowBox[{"\[LessEqual]", "n"}]}], " ", "*)"}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"ExportMC", "[", "n_", "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ "h", ",", "i", ",", "p", ",", "parts", ",", "k", ",", "m", ",", "s", + ",", "j", ",", "A"}], "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"h", "=", + RowBox[{+ "OpenWrite", "[", "\"\<equivariant_mc_classes.txt\>\"", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "n"}], ",", + RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{"\"\<\\nn = \>\"", ",", "i"}], "]"}], ";", + "\[IndentingNewLine]", + RowBox[{"WriteString", "[", + RowBox[{"h", ",", "\"\<\\n(* =================== *)\>\""}], "]"}], + ";", "\[IndentingNewLine]", + RowBox[{"WriteString", "[", + RowBox[{"h", ",", + RowBox[{"\"\<\\n(* ---- n = \>\"", "<>", + RowBox[{"ToString", "[", "i", "]"}], "<>", + "\"\< ---- *)\\n\\n\>\""}]}], "]"}], ";", + "\[IndentingNewLine]", + RowBox[{"parts", "=", + RowBox[{"Partitions", "[", "i", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"m", "=", + RowBox[{"Length", "[", "parts", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"j", "=", "1"}], ",", + RowBox[{"j", "\[LessEqual]", "m"}], ",", + RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"p", " ", "=", + RowBox[{+ "parts", "\[LeftDoubleBracket]", "j", + "\[RightDoubleBracket]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{"\"\<part = \>\"", ",", "p"}], "]"}], ";", + "\[IndentingNewLine]", + RowBox[{"A", " ", "=", + RowBox[{"Expand", "[", + RowBox[{"mcXLam", "[", "p", "]"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", "A", "]"}], ";"}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{"s", "=", + RowBox[{"ToString", "[", + RowBox[{"A", ",", + RowBox[{"FormatType", "\[Rule]", "InputForm"}], ",", + RowBox[{"PageWidth", "\[Rule]", "Infinity"}], ",", + RowBox[{"TotalWidth", "\[Rule]", "Infinity"}]}], "]"}]}], ";",+ "\[IndentingNewLine]", + RowBox[{"s", "=", + RowBox[{"StringJoin", "[", + RowBox[{"\"\<mc[\>\"", ",", + RowBox[{"ToString", "[", "p", "]"}], ",", "\"\<] = \>\"", ",",+ "s", ",", "\"\< ;\\n\\n\>\""}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", "s", "]"}], ";"}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{"WriteString", "[", + RowBox[{"h", ",", "s"}], "]"}], ";"}]}], "\[IndentingNewLine]", + "]"}]}]}], "\[IndentingNewLine]", "]"}], "\[IndentingNewLine]", + RowBox[{"Close", "[", "h", "]"}]}], ";"}]}], "\[IndentingNewLine]", + "]"}]}]}]], "Input",+ CellChangeTimes->{{3.8010696348056927`*^9, 3.801069676577145*^9}, {+ 3.8010698703892193`*^9, 3.8010698731444807`*^9}, {3.801070034862121*^9, + 3.801070129428359*^9}, {3.801070348521194*^9, 3.8010703684698143`*^9}, + 3.8010705779746532`*^9, {3.8011138755594053`*^9, 3.801113953709689*^9}, {+ 3.801114017451393*^9, 3.801114021495187*^9}, {3.801126780457333*^9, + 3.8011267819827213`*^9}, {3.801136419578253*^9, 3.80113645733673*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"mcXLam", "[", + RowBox[{"{", + RowBox[{"1", ",", "1", ",", "1"}], "}"}], "]"}]], "Input",+ CellChangeTimes->{{3.801136537782967*^9, 3.801136542901239*^9}}],++Cell[BoxData[+ RowBox[{"t", "-", + SuperscriptBox["t", "3"], "-", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["X", "3"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["X", "2"], " ", "Y"}], "-", + RowBox[{"2", " ", "L", " ", "t", " ", + SuperscriptBox["X", "2"], " ", "Y"}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "2"], " ", "Y"}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "5"], " ", "Y"}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"], " ", "Y"}], "-", + RowBox[{"L", " ", "X", " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"2", " ", "L", " ", "t", " ", "X", " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", "X", " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", "X", " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", "X", " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "6"]}]}]], "Output",+ CellChangeTimes->{3.801136543352934*^9, 3.801136596052211*^9, + 3.801136778356182*^9, 3.8011368485104017`*^9}]+}, Open ]],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"mcXLam", "[", + RowBox[{"{", + RowBox[{"1", ",", "1", ",", "1", ",", "1", ",", "1"}], "}"}], + "]"}]], "Input",+ CellChangeTimes->{{3.8011367835025377`*^9, 3.8011367837109613`*^9}}],++Cell[BoxData[+ RowBox[{+ SuperscriptBox["t", "3"], "-", + SuperscriptBox["t", "5"], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "5"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", "Y"}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "4"], " ", "Y"}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "9"], " ", "Y"}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "9"], " ", "Y"}], "+", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", "X", " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "5"], " ", "X", " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"5", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"8", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"8", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", "X", " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "5"], " ", "X", " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"5", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"8", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"5", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"5", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"9", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"8", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"5", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"8", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"5", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "5"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "15"]}]}]], "Output",+ CellChangeTimes->{3.8011367844243927`*^9, 3.801136850336916*^9}]+}, Open ]],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"mcXLam", "[", + RowBox[{"{", + RowBox[{"2", ",", "2", ",", "1", ",", "1"}], "}"}], "]"}]], "Input",+ CellChangeTimes->{{3.8011367926691723`*^9, 3.8011367954781446`*^9}}],++Cell[BoxData[+ RowBox[{+ RowBox[{"-", "t"}], "-", + SuperscriptBox["t", "2"], "+", + SuperscriptBox["t", "3"], "+", + SuperscriptBox["t", "4"], "+", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["X", "6"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "6"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["X", "5"], " ", "Y"}], "+", + RowBox[{"2", " ", "L", " ", "t", " ", + SuperscriptBox["X", "5"], " ", "Y"}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "5"], " ", "Y"}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"], " ", "Y"}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "5"], " ", "Y"}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "11"], " ", "Y"}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", "Y"}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", "Y"}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "11"], " ", "Y"}], "+", + RowBox[{"2", " ", "L", " ", "t", " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{"2", " ", "L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "2"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "2"]}], "+", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "3"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "3"]}], "+", + RowBox[{"2", " ", "L", " ", "t", " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"2", " ", "L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{"10", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "4"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "4"]}], "+", + RowBox[{"L", " ", "X", " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"2", " ", "L", " ", "t", " ", "X", " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", "X", " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", "X", " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", "X", " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"15", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"13", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"11", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"11", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "5"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "5"]}], "+", + RowBox[{"L", " ", "t", " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"L", " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"L", " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"16", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"14", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"7", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"21", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"19", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "6"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "6"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"15", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"13", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"9", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"30", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"30", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{"6", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "7"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "7"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"10", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"13", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"38", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"36", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"9", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"10", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"9", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "8"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "8"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"13", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"42", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"42", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"10", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"18", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"16", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "9"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "9"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "2"], " ", "t", " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "2"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"13", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"38", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"36", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"9", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"9", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"27", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"24", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "10"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "10"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", "t", " ", "X", " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "2"], " ", "X", " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "3"], " ", "X", " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{+ SuperscriptBox["L", "2"], " ", + SuperscriptBox["t", "4"], " ", "X", " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"9", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"30", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"30", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"6", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"31", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"27", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "11"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "11"]}], "+", + RowBox[{"7", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"21", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"19", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"33", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"29", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"9", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"10", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "12"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "12"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"11", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"11", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "5"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"31", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"27", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"12", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "13"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "13"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "4"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"9", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"27", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"24", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "14"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "14"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", "t", " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{+ SuperscriptBox["L", "3"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "3"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"18", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"16", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "9"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{+ SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "21"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "21"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "21"], " ", + SuperscriptBox["Y", "15"]}], "+", + RowBox[{+ SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "21"], " ", + SuperscriptBox["Y", "15"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "16"]}], "-", + RowBox[{"10", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "16"]}], "-", + RowBox[{"9", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "8"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "16"]}], "-", + RowBox[{"7", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "16"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "16"]}], "-", + RowBox[{"5", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "14"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{+ SuperscriptBox["L", "6"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{"7", " ", + SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{"12", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{"8", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "16"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "20"], " ", + SuperscriptBox["Y", "16"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "7"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{"3", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{"11", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{"12", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "13"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{"13", " ", + SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{"19", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{"14", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "17"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "19"], " ", + SuperscriptBox["Y", "17"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", "t", " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{+ SuperscriptBox["L", "4"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "6"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{"9", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{"10", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{"4", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "12"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{"16", " ", + SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{"24", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{"16", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "18"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "18"], " ", + SuperscriptBox["Y", "18"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", "t", " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "19"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "19"]}], "-", + RowBox[{"6", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "19"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "11"], " ", + SuperscriptBox["Y", "19"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "19"]}], "+", + RowBox[{"13", " ", + SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "19"]}], "+", + RowBox[{"19", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "19"]}], "+", + RowBox[{"14", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "19"]}], "+", + RowBox[{"4", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "17"], " ", + SuperscriptBox["Y", "19"]}], "-", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "20"]}], "-", + RowBox[{"2", " ", + SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "20"]}], "-", + RowBox[{+ SuperscriptBox["L", "5"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "10"], " ", + SuperscriptBox["Y", "20"]}], "+", + RowBox[{+ SuperscriptBox["L", "6"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "20"]}], "+", + RowBox[{"7", " ", + SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "20"]}], "+", + RowBox[{"12", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "20"]}], "+", + RowBox[{"8", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "20"]}], "+", + RowBox[{"2", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "16"], " ", + SuperscriptBox["Y", "20"]}], "+", + RowBox[{+ SuperscriptBox["L", "6"], " ", "t", " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "21"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "2"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "21"]}], "+", + RowBox[{"3", " ", + SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "3"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "21"]}], "+", + RowBox[{+ SuperscriptBox["L", "6"], " ", + SuperscriptBox["t", "4"], " ", + SuperscriptBox["X", "15"], " ", + SuperscriptBox["Y", "21"]}]}]], "Output",+ CellChangeTimes->{3.80113679587457*^9, 3.801136857122386*^9}]+}, Open ]]+},+WindowSize->{740, 655},+WindowMargins->{{1, Automatic}, {0, Automatic}},+FrontEndVersion->"9.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (November 20, \+2012)",+StyleDefinitions->"Default.nb"+]+(* End of Notebook Content *)++(* Internal cache information *)+(*CellTagsOutline+CellTagsIndex->{}+*)+(*CellTagsIndex+CellTagsIndex->{}+*)+(*NotebookFileOutline+Notebook[{+Cell[CellGroupData[{+Cell[579, 22, 578, 13, 80, "Input"],+Cell[1160, 37, 418, 9, 58, "Message"]+}, Open ]],+Cell[1593, 49, 271, 9, 8, "Text"],+Cell[1867, 60, 6508, 172, 641, "Input"],+Cell[8378, 234, 271, 9, 8, "Text"],+Cell[8652, 245, 9520, 255, 709, "Input"],+Cell[18175, 502, 6900, 179, 522, "Input"],+Cell[25078, 683, 271, 9, 8, "Text"],+Cell[25352, 694, 5659, 146, 420, "Input"],+Cell[31014, 842, 271, 9, 8, "Text"],+Cell[31288, 853, 6864, 175, 573, "Input"],+Cell[38155, 1030, 271, 9, 8, "Text"],+Cell[38429, 1041, 1528, 48, 148, "Input"],+Cell[39960, 1091, 3509, 107, 335, "Input"],+Cell[43472, 1200, 1930, 54, 114, "Input"],+Cell[45405, 1256, 19681, 521, 1780, "Input"],+Cell[65089, 1779, 271, 9, 8, "Text"],+Cell[65363, 1790, 4258, 94, 438, "Input"],+Cell[69624, 1886, 271, 9, 8, "Text"],+Cell[CellGroupData[{+Cell[69920, 1899, 182, 4, 28, "Input"],+Cell[70105, 1905, 4665, 144, 109, "Output"]+}, Open ]],+Cell[CellGroupData[{+Cell[74807, 2054, 209, 5, 28, "Input"],+Cell[75019, 2061, 21949, 683, 470, "Output"]+}, Open ]],+Cell[CellGroupData[{+Cell[97005, 2749, 196, 4, 28, "Input"],+Cell[97204, 2755, 40977, 1249, 922, "Output"]+}, Open ]]+}+]+*)++(* End of internal cache information *)
+ mathematica/equiv_motivic_chern.src view
@@ -0,0 +1,504 @@++(* ===== EQUIVARIANT MOTIVIC CHERN CLASSES OF COINCIDENT ROOT LOCI ==== *)++<< Combinatorica`++(* === NORMALIZATION in K(P^n) === *)++(* Weights of Sym^n C^2 *)+Clear[L, X, Y]+WT[n_, i_] := X^(n - i)*Y^i++(* the relation in K (P^n). Convention: +L is the tautological line bundle, + c_ 1(X) = -alpha, c_ 1(Y) = -beta *)++KREL[n_] := Product[1 - L*WT[n, i], {i, 0, n}]++(* normal form of L^(n+1) *)+Clear[Lpow$nplus1]+Lpow$nplus1[n_] := + Lpow$nplus1[n] = + Expand[L^(n + 1) - (-1)^(n + 1) KREL[n]/(X*Y)^Binomial[n + 1, 2]]++(* (unefficiently) normalize a polynomial in L *) +Clear[KnormalizeSlow]+KnormalizeSlow[n_, Z0_] := Module[{Z = Expand[Z0], m},+ m = Exponent[Z, L];+ If[m <= n, Z, + KnormalizeSlow[n, Z /. {L^m -> L^(m - n - 1)*Lpow$nplus1[n]}]]+ ]++(* Table of normal forms of L^p *)+Clear[LPowXY]+LPowXY[n_, k_] := LPowXY[n, k] = Expand[KnormalizeSlow[n, L^k]]++(* More efficient normalization in K^(P^n) +usage: KnormalizeVarXY[dim,L,expr] *)+Clear[KnormalizeVarXY]+KnormalizeVarXY[n_, uuu_, Z0_] := Module[+ {m, Z},+ Z = Expand[Z0];+ m = Exponent[Z, uuu];+ Expand[Sum[Coefficient[Z, uuu, k]*(LPowXY[n, k] /. {L -> uuu}), {k, 0, m}]]+ ] ++(* === PUSHFORWARD ALONG PSI (THE MULTIPLICATION MAP) === *)++(* formulas for (psi_{n,1})_! (L1^p*L2^q) *)+Clear[PSI$N1f]+PSI$N1f[n_, 0, 1] := L*(X^(n + 1) - Y^(n + 1))/(X - Y)+PSI$N1f[n_, p_, 0] := + L^p*(X^(p + 1) - Y^(p + 1))/(X - Y) + + L^(p + 1) (X^(n + 1)*Y^(p + 1) - Y^(n + 1) X^(p + 1))/(X - Y)+PSI$N1f[n_, p_, q_] := If[p >= q,+ L^q*PSI$N1f[n, p - q, 0],+ L^p*PSI$N1f[n, 0, q - p]+ ]++Clear[PSI$N1]+PSI$N1[n_, p_, q_] := PSI$N1[n, p, q] = Expand[Factor[PSI$N1f[n, p, q]]]++Clear[newPsiBang2]+newPsiBang2[{n_, 1}, {var1_, var2_}, outvar_, ZZ_] := Module[+ {Z},+ Z = Expand[ZZ];+ Expand[Sum[+ Coefficient[Coefficient[Z, var1, i], var2, + j]*(PSI$N1[n, i, j] /. {L -> outvar}), {i, 0, n}, {j, 0, 1}]]+ ]++(* find elements in K(P^m x P^1) such that their pushforward to K(P^(m+1)) is \+{1,L,L^2,...L^(m+1)} *)+findBasis$M1[m_] := findBasis$M1[m] =+ Module[{vars, A, B, list, i, j, k, eqs, sols, sol},+ vars = Table[Subscript[a, i], {i, 0, m + 1}];+ A = Sum[Subscript[a, i]*L1^i, {i, 0, m}] ++ Subscript[a, m + 1]*L1^m*L2;+ B = newPsiBang2[{m, 1}, {L1, L2}, L, A];+ list = Table[Null, {i, 0, m + 1}];+ For[k = 0, k <= m + 1, k++,+ eqs = Table[Coefficient[B, L, i] == If[k == i, 1, 0], {i, 0, m + 1}];+ sols = Solve[eqs, vars];+ sol = sols[[1]];+ list[[k + 1]] = A /. sol;+ ];+ list+ ]+++Clear[PSI$NM, S, T]+PSI$NM[n_, 0, p_, 0] := L^p+PSI$NM[0, m_, 0, q_] := L^q+PSI$NM[n_, 1, p_, q_] := PSI$NM[n, 1, p, q] = PSI$N1[n, p, q]+PSI$NM[n_, mplus1_, p_, q_] := PSI$NM[n, mplus1, p, q] = Module[+ {m = mplus1 - 1, basis, A, B, C},+ basis = findBasis$M1[m];+ A = basis[[q + 1]] /. {L1 -> L2, L2 -> T};+ B = newPsiBang2[{n, m}, {L1, L2}, S, L1^p*A];+ C = newPsiBang2[{n + m, 1}, {S, T}, L, B];+ Expand[Factor[C]]+ ]++newPsiBang2[{n_, m_}, {var1_, var2_}, outvar_, ZZ_] := Module[+ {Z, deg1, deg2},+ Z = Expand[ZZ];+ deg1 = Exponent[Z, var1];+ deg2 = Exponent[Z, var2];+ Expand[Sum[+ Coefficient[Coefficient[Z, var1, i], var2, + j]*(PSI$NM[n, m, i, j] /. {L -> outvar}), {i, 0, deg1}, {j, 0, deg2}]]+ ]++newPsiBangMany[{n_}, {uuu_}, www_, Z_] := Z /. {uuu -> www}+newPsiBangMany[ns_, uuus_, www_, Z_] := Module[{ttt, vvvs, ms},+ If[Length[uuus] == 1, Z /. {uuus[[1]] -> www},+ If[Length[uuus] == 2, newPsiBang2[ns, uuus, www, Z],+ ms = Join[{ns[[1]] + ns[[2]]}, Drop[ns, 2]];+ vvvs = Join[{ttt}, Drop[uuus, 2]];+ newPsiBangMany[ms, vvvs, www, + newPsiBang2[Take[ns, 2], Take[uuus, 2], ttt, Z]]]]]++(* === PUSHFORwARD ALONG THE DIAGONAL MAP === *)++notk[n_, k_] := Select[Range[0, n], # != k &]++(* class of the diagonal in K(P^n x P^n) *)+Clear[DELTA$CLASS$2]+DELTA$CLASS$2[n_] := DELTA$CLASS$2[n] =+ Factor[Sum[ + Product[ (1 - + L1*WT[n, i]) (1 - L2*WT[n, i])/(1 - WT[n, i]/WT[n, k]) , {i, + notk[n, k]}] , {k, 0, n}]]++newDeltaBang2[n_, invar_, {var1_, var2_}, ZZ_] := Module[+ {Z = Expand[ZZ], m, A},+ m = Exponent[Z, invar];+ A = Expand[(DELTA$CLASS$2[n] /. {L1 -> var1, L2 -> var2})*+ Sum[var1^p*Coefficient[Z, invar, p], {p, 0, m}]];+ KnormalizeVarXY[n, var1, A]+ ]++(* usage: deltaBangMany[dim,L,{L1,L2,L3},X] *)++newDeltaBangMany[n_, uuu_, vvvs_, Z_] := Module[{ttt},+ If[Length[vvvs] == 1, Z /. {uuu -> vvvs[[1]]},+ If[Length[vvvs] == 2, newDeltaBang2[n, uuu, vvvs, Z],+ newDeltaBangMany[n, ttt, Drop[vvvs, 1], + newDeltaBang2[n, uuu, {vvvs[[1]], ttt}, Z]]]]]++ +(* PUSHFORWARD ALONG THE POWER MAP *)++Clear[OMEGA$ND]+OMEGA$ND[n_, d_, p_] := OMEGA$ND[n, d, p] = Module[{vars, ns, A, B},+ vars = Table[Subscript[TMP$X, i], {i, 1, d}];+ ns = Table[n, {i, 1, d}];+ A = newDeltaBangMany[n, L, vars, L^p];+ B = newPsiBangMany[ns, vars, L, Expand[A]];+ Expand[B]+ ]++newOmegaBang[n_, 0, var1_, var2_, ZZ_] := Coefficient[ZZ, var1, 0]+newOmegaBang[n_, 1, var1_, var2_, ZZ_] := ZZ /. {var1 -> var2}+newOmegaBang[n_, d_, var1_, var2_, ZZ_] := Module[+ {Z = Expand[ZZ], m, A},+ m = Exponent[Z, var1];+ A = Sum[(OMEGA$ND[n, d, p] /. {L -> var2})*Coefficient[Z, var1, p], {p, 0, + m}];+ Expand[A]+ ]++(* P^n1 x P^n2 x P^n3 -> P^(d1*n1) x P^(d2*n2) x P^(d3*n3) -> P^(d1*n1 + \+d2*n2 + d3*n3 *) +newOmegaBangLam[ns_, ds_, uuus_, www_, Z0_] := Module[+ {Z = Expand[Z0],+ m = Length[ns],+ vars, W, nds, ttt, i},+ vars = Table[Subscript[ttt, i], {i, 1, m}];+ nds = Table[ ns[[i]]*ds[[i]], {i, 1, m}];+ W = Z;+ For[i = 1, i <= m, i++, + W = newOmegaBang[ns[[i]], ds[[i]], uuus[[i]], vars[[i]], W]];+ newPsiBangMany[nds, vars, www, W]+ ]++ +(*only works for lists of equal length!!*)+Zip[as_, bs_] := MapThread[{#1, #2} &, {as, bs}]+Zip3[as_, bs_, cs_] := MapThread[{#1, #2, #3} &, {as, bs, cs}]++Fst[pair_] := pair[[1]]+Snd[pair_] := pair[[2]]++extendListWithZeros[L_, n_] := Join[L, Table[0, {i, 1, n - Length[L]}]]++EmptyPartQ[part_] := Length[part] == 0++DualPart[{}] := {}+DualPart[lam_] := + With[{m = lam[[1]]}, Table[Length[Select[lam, # >= i &]], {i, 1, m}]]+ +toExpoForm[{}] := {} +toExpoForm[part_] := + Module[{k = Max[part]}, Table[Length[Select[part, # == j &]], {j, 1, k}]]++posVectorQ[as_] := Map[# >= 0 &, as] /. {List -> And};+kdeTriples[p_, ns_] := Module[+ {m = Length[ns],+ posQ, oneK, A},+ oneK[k_] := + Table[{k, ns - es, es}, {es, Combinatorica`Compositions[p - k, m]}];+ A = Table [oneK[k], {k, 0, p - 1}];+ A = Select[Flatten[A, 1], posVectorQ[Snd[#]] &];+ A]+++(* motivic Chern class of P^n *)+Clear[mcPn];+mcPn[n_] := mcPn[n] =+ Module[{rel, tmp}, rel = Product[1 - L*X^(n - i)*Y^i, {i, 0, n}];+ tmp = Product[1 + t*L*X^(n - i)*Y^i, {i, 0, n}];+ Factor[(tmp - (-t)^(n + 1) rel)/(1 + t)]]++Clear[L, S]++LL[i_] := Subscript[L, i];+SS[i_] := Subscript[S, i];+LLs[n_] := Table[LL[i], {i, 1, n}]+SSs[n_] := Table[SS[i], {i, 1, n}]++Clear[mcXLam, mcDisj1, mcDisj, mcDisjSorted]++mcXLam[{}] := mcXLam[{}] = 1+mcXLam[{1}] := mcXLam[{1}] = mcPn[1]++mcDisj1[0] := mcDisj1[0] = 1+mcDisj1[1] := mcDisj1[1] = mcPn[1]++mcDisj[{}] := mcDisj[{}] = 1++mcDisjSorted[{}] := mcDisjSorted[{}] = 1++(* equivariant motivic chern class of D(n)=X(1^n) *)++mcDisj1[n_] := mcDisj1[n] = Module[+ {parts = Select[Combinatorica`Partitions[n], Length[#] < n &]},+ Expand[mcPn[n] - Sum[mcXLam[p], {p, parts}]]+ ]++(* equivariant motivic chern class of X_lambda *)++mcXLam[lambda_] := mcXLam[lambda] = Module[+ {es = toExpoForm[lambda], m, m1, ns, pairs, Z},+ m = Length[es];+ ns = Range[m];+ pairs = Zip[ns, es]; (* i^e_ *)+ + pairs = Select[pairs, Snd[#] > 0 &]; (* !!! *)+ m1 = Length[pairs];+ ns = Map[Fst, pairs];+ es = Map[Snd, pairs];+ Z = mcDisj[es];+ (* Print["xlam1 - ",pairs];+ Print["xlam2 - ",es," | ",ns," | ",uus[m1]," | ",X]; *)+ + Expand[newOmegaBangLam[es, ns, LLs[m1], L, Z]]+ ]++(* equivariant motivic chern class of D(d1,d2,...) *)++mcDisj[{n_}] := mcDisj[{n}] = mcDisj1[n] /. {L -> LL[1]}+mcDisj[ns0_] := mcDisj[ns0] = Module[+ {m = Length[ns0],+ nis0, nis1, ns1, idxs, X, ttt},+ nis0 = Zip[ns0, Range[m]];+ nis1 = SortBy[nis0, -Fst[#] &];+ idxs = Map[Snd, nis1];+ ns1 = Select[Map[Fst, nis1], # > 0 &];+ (* Print["nis1 - ",nis0," | ",nis1];+ Print["nis2 - ",ns1]; *)+ X = mcDisjSorted[ns1];+ X = X /. Table[LL[i] -> Subscript[ttt, i], {i, 1, m}];+ X /. Table[Subscript[ttt, i] -> LL[idxs[[i]]], {i, 1, m}]+ ]++(* a single term corresponding to a triple (k,ds,es) *)+Clear[singleKDE]+singleKDE[{k_, ds_, es_}] := ssingleKDE[{k, ds, es}] = Module[+ {A, B,+ m, vars, dims,+ pp, qq, rr, ss,+ pps, qqs, rrs, sss+ },+ m = Length[ds];+ pp[i_] := Subscript[pp$p, i];+ qq[i_] := Subscript[qq$q, i];+ rr[i_] := Subscript[rr$r, i];+ ss[i_] := Subscript[ss$s, i];+ pps = Table[pp[i], {i, 1, m}];+ qqs = Table[qq[i], {i, 1, m}];+ rrs = Table[rr[i], {i, 1, m}];+ sss = Table[ss[i], {i, 1, m}];+ vars = Join[{zzz}, pps, qqs];+ dims = Join[{k}, ds, es];+ A = mcDisj[dims] /. Table[LL[i] -> vars[[i]], {i, 1, 2 m + 1}];+ B = A;+ For[i = 1, i <= m, i++, + B = Expand[newDeltaBang2[es[[i]], qq[i], {rr[i], ss[i]}, B]]];+ For[i = 1, i <= m, i++, + B = Expand[newPsiBang2[{ds[[i]], es[[i]]}, {pp[i], ss[i]}, LL[i], B]]];+ B = newPsiBangMany[Join[{k}, es], Join[{zzz}, rrs], z, B];+ B+ ]++(* equiv mc of D(d1,d2,...), but we require d1>=d2>=d3>=...>=dn>0 *)++mcDisjSorted[{n_}] := mcDisjSorted[{n}] = mcDisj1[n] /. {L -> LL[1]}+mcDisjSorted[pns_] := mcDisjSorted[pns] = Module[+ {p = pns[[1]],+ ns = Drop[pns, 1],+ A, B, rest,+ KDE+ },+ KDE = kdeTriples[p, ns];+ (* Print["sorted1 - ",p," | ",ns];+ Print["sorted2 - ",KDE]; *)+ A = (mcDisj1[p] /. {L -> z})*mcDisj[ns];+ rest = Sum[singleKDE[kde], {kde, KDE}];+ B = Expand[A - rest];+ B = B /. Table[LL[i] -> LL[i + 1], {i, 1, Length[ns]}];+ B = B /. {z -> LL[1]}+ ]+++(* export the classes of X(lambda) for |lambda|<=n *)++ExportMC[n_] := Module[+ {h, i, p, parts, k, m, s, j, A},+ h = OpenWrite["equivariant_mc_classes.txt"];+ For[i = 1, i <= n, i++,+ Print["\nn = ", i];+ WriteString[h, "\n(* =================== *)"];+ WriteString[h, "\n(* ---- n = " <> ToString[i] <> " ---- *)\n\n"];+ parts = Partitions[i];+ m = Length[parts];+ For[j = 1, j <= m, j++,+ p = parts[[j]];+ Print["part = ", p];+ A = Expand[mcXLam[p]];+ (* Print[A]; *)+ + s = ToString[A, FormatType -> InputForm, PageWidth -> Infinity, + TotalWidth -> Infinity];+ s = StringJoin["mc[", ToString[p], "] = ", s, " ;\n\n"];+ (* Print[s]; *)+ WriteString[h, s];+ ]+ ]+ Close[h];+ ]+++mcXLam[{1, 1, 1}]++t - t^3 - L t X^3 + L t^3 X^3 - L X^2 Y - 2 L t X^2 Y + L t^3 X^2 Y + + L^2 t X^5 Y - L^2 t^3 X^5 Y - L X Y^2 - 2 L t X Y^2 + L t^3 X Y^2 + + L^2 X^4 Y^2 + L^2 t X^4 Y^2 - L^2 t^2 X^4 Y^2 - L^2 t^3 X^4 Y^2 - L t Y^3 + + L t^3 Y^3 + L^2 X^3 Y^3 + 2 L^2 t X^3 Y^3 - L^2 t^2 X^3 Y^3 - + 2 L^2 t^3 X^3 Y^3 + L^3 t^2 X^6 Y^3 + L^3 t^3 X^6 Y^3 + L^2 X^2 Y^4 + + L^2 t X^2 Y^4 - L^2 t^2 X^2 Y^4 - L^2 t^3 X^2 Y^4 + L^3 t X^5 Y^4 + + 2 L^3 t^2 X^5 Y^4 + L^3 t^3 X^5 Y^4 + L^2 t X Y^5 - L^2 t^3 X Y^5 + + L^3 t X^4 Y^5 + 2 L^3 t^2 X^4 Y^5 + L^3 t^3 X^4 Y^5 + L^3 t^2 X^3 Y^6 + + L^3 t^3 X^3 Y^6++mcXLam[{1, 1, 1, 1, 1}]++t^3 - t^5 - L t^3 X^5 + L t^5 X^5 - L t^3 X^4 Y + L t^5 X^4 Y + + L^2 t^3 X^9 Y - L^2 t^5 X^9 Y + L t X^3 Y^2 + L t^2 X^3 Y^2 - L t^3 X^3 Y^2 ++ L t^5 X^3 Y^2 + L^2 t^3 X^8 Y^2 - L^2 t^5 X^8 Y^2 + L t X^2 Y^3 + + L t^2 X^2 Y^3 - L t^3 X^2 Y^3 + L t^5 X^2 Y^3 - L^2 t X^7 Y^3 + + 3 L^2 t^3 X^7 Y^3 - 2 L^2 t^5 X^7 Y^3 - L^3 t^3 X^12 Y^3 + L^3 t^5 X^12 Y^3 -+ L t^3 X Y^4 + L t^5 X Y^4 + L^2 t^2 X^6 Y^4 + 3 L^2 t^3 X^6 Y^4 - + 2 L^2 t^5 X^6 Y^4 - L^3 t X^11 Y^4 - 2 L^3 t^2 X^11 Y^4 - + 2 L^3 t^3 X^11 Y^4 + L^3 t^5 X^11 Y^4 - L t^3 Y^5 + L t^5 Y^5 + L^2 X^5 Y^5 ++ L^2 t^2 X^5 Y^5 + 5 L^2 t^3 X^5 Y^5 - 3 L^2 t^5 X^5 Y^5 - L^3 X^10 Y^5 - + 2 L^3 t X^10 Y^5 - 4 L^3 t^2 X^10 Y^5 - 5 L^3 t^3 X^10 Y^5 + + 2 L^3 t^5 X^10 Y^5 + L^2 t^2 X^4 Y^6 + 3 L^2 t^3 X^4 Y^6 - + 2 L^2 t^5 X^4 Y^6 - L^3 X^9 Y^6 - 3 L^3 t X^9 Y^6 - 6 L^3 t^2 X^9 Y^6 - + 7 L^3 t^3 X^9 Y^6 + 3 L^3 t^5 X^9 Y^6 + L^4 t^3 X^14 Y^6 - L^4 t^5 X^14 Y^6 -+ L^2 t X^3 Y^7 + 3 L^2 t^3 X^3 Y^7 - 2 L^2 t^5 X^3 Y^7 - L^3 X^8 Y^7 - + 3 L^3 t X^8 Y^7 - 7 L^3 t^2 X^8 Y^7 - 8 L^3 t^3 X^8 Y^7 + 3 L^3 t^5 X^8 Y^7 ++ L^4 t X^13 Y^7 + 2 L^4 t^2 X^13 Y^7 + L^4 t^3 X^13 Y^7 - L^4 t^4 X^13 Y^7 - + L^4 t^5 X^13 Y^7 + L^2 t^3 X^2 Y^8 - L^2 t^5 X^2 Y^8 - L^3 X^7 Y^8 - + 3 L^3 t X^7 Y^8 - 7 L^3 t^2 X^7 Y^8 - 8 L^3 t^3 X^7 Y^8 + 3 L^3 t^5 X^7 Y^8 ++ L^4 X^12 Y^8 + 2 L^4 t X^12 Y^8 + 4 L^4 t^2 X^12 Y^8 + 4 L^4 t^3 X^12 Y^8 - + L^4 t^4 X^12 Y^8 - 2 L^4 t^5 X^12 Y^8 + L^2 t^3 X Y^9 - L^2 t^5 X Y^9 - + L^3 X^6 Y^9 - 3 L^3 t X^6 Y^9 - 6 L^3 t^2 X^6 Y^9 - 7 L^3 t^3 X^6 Y^9 + + 3 L^3 t^5 X^6 Y^9 + L^4 X^11 Y^9 + 5 L^4 t X^11 Y^9 + 8 L^4 t^2 X^11 Y^9 + + 5 L^4 t^3 X^11 Y^9 - L^4 t^4 X^11 Y^9 - 2 L^4 t^5 X^11 Y^9 - L^3 X^5 Y^10 - + 2 L^3 t X^5 Y^10 - 4 L^3 t^2 X^5 Y^10 - 5 L^3 t^3 X^5 Y^10 + + 2 L^3 t^5 X^5 Y^10 + 2 L^4 X^10 Y^10 + 5 L^4 t X^10 Y^10 + + 9 L^4 t^2 X^10 Y^10 + 8 L^4 t^3 X^10 Y^10 - L^4 t^4 X^10 Y^10 - + 3 L^4 t^5 X^10 Y^10 + L^5 t^4 X^15 Y^10 + L^5 t^5 X^15 Y^10 - + L^3 t X^4 Y^11 - 2 L^3 t^2 X^4 Y^11 - 2 L^3 t^3 X^4 Y^11 + L^3 t^5 X^4 Y^11 ++ L^4 X^9 Y^11 + 5 L^4 t X^9 Y^11 + 8 L^4 t^2 X^9 Y^11 + 5 L^4 t^3 X^9 Y^11 - + L^4 t^4 X^9 Y^11 - 2 L^4 t^5 X^9 Y^11 + L^5 t^2 X^14 Y^11 + + 2 L^5 t^3 X^14 Y^11 + 2 L^5 t^4 X^14 Y^11 + L^5 t^5 X^14 Y^11 - + L^3 t^3 X^3 Y^12 + L^3 t^5 X^3 Y^12 + L^4 X^8 Y^12 + 2 L^4 t X^8 Y^12 + + 4 L^4 t^2 X^8 Y^12 + 4 L^4 t^3 X^8 Y^12 - L^4 t^4 X^8 Y^12 - + 2 L^4 t^5 X^8 Y^12 + L^5 t X^13 Y^12 + 2 L^5 t^2 X^13 Y^12 + + 3 L^5 t^3 X^13 Y^12 + 3 L^5 t^4 X^13 Y^12 + L^5 t^5 X^13 Y^12 + + L^4 t X^7 Y^13 + 2 L^4 t^2 X^7 Y^13 + L^4 t^3 X^7 Y^13 - L^4 t^4 X^7 Y^13 - + L^4 t^5 X^7 Y^13 + L^5 t X^12 Y^13 + 2 L^5 t^2 X^12 Y^13 + + 3 L^5 t^3 X^12 Y^13 + 3 L^5 t^4 X^12 Y^13 + L^5 t^5 X^12 Y^13 + + L^4 t^3 X^6 Y^14 - L^4 t^5 X^6 Y^14 + L^5 t^2 X^11 Y^14 + + 2 L^5 t^3 X^11 Y^14 + 2 L^5 t^4 X^11 Y^14 + L^5 t^5 X^11 Y^14 + + L^5 t^4 X^10 Y^15 + L^5 t^5 X^10 Y^15++mcXLam[{2, 2, 1, 1}]++-t - t^2 + t^3 + t^4 + L t X^6 + L t^2 X^6 - L t^3 X^6 - L t^4 X^6 + + L X^5 Y + 2 L t X^5 Y + L t^2 X^5 Y - L t^3 X^5 Y - L t^4 X^5 Y - + L^2 t X^11 Y - L^2 t^2 X^11 Y + L^2 t^3 X^11 Y + L^2 t^4 X^11 Y + + 2 L t X^4 Y^2 + 2 L t^2 X^4 Y^2 - L t^3 X^4 Y^2 - L t^4 X^4 Y^2 - + L^2 X^10 Y^2 - 3 L^2 t X^10 Y^2 - 2 L^2 t^2 X^10 Y^2 + L^2 t^3 X^10 Y^2 + + L^2 t^4 X^10 Y^2 + L t X^3 Y^3 + L t^2 X^3 Y^3 - L t^3 X^3 Y^3 - + L t^4 X^3 Y^3 - 2 L^2 X^9 Y^3 - 7 L^2 t X^9 Y^3 - 6 L^2 t^2 X^9 Y^3 + + L^2 t^3 X^9 Y^3 + 2 L^2 t^4 X^9 Y^3 + L^3 t X^15 Y^3 + L^3 t^2 X^15 Y^3 - + L^3 t^3 X^15 Y^3 - L^3 t^4 X^15 Y^3 + 2 L t X^2 Y^4 + 2 L t^2 X^2 Y^4 - + L t^3 X^2 Y^4 - L t^4 X^2 Y^4 - 3 L^2 X^8 Y^4 - 11 L^2 t X^8 Y^4 - + 10 L^2 t^2 X^8 Y^4 + 2 L^2 t^4 X^8 Y^4 + L^3 X^14 Y^4 + 4 L^3 t X^14 Y^4 + + 3 L^3 t^2 X^14 Y^4 - L^3 t^3 X^14 Y^4 - L^3 t^4 X^14 Y^4 + L X Y^5 + + 2 L t X Y^5 + L t^2 X Y^5 - L t^3 X Y^5 - L t^4 X Y^5 - 5 L^2 X^7 Y^5 - + 15 L^2 t X^7 Y^5 - 13 L^2 t^2 X^7 Y^5 + 3 L^2 t^4 X^7 Y^5 + 3 L^3 X^13 Y^5 + + 11 L^3 t X^13 Y^5 + 11 L^3 t^2 X^13 Y^5 + L^3 t^3 X^13 Y^5 - + 2 L^3 t^4 X^13 Y^5 + L t Y^6 + L t^2 Y^6 - L t^3 Y^6 - L t^4 Y^6 - + 5 L^2 X^6 Y^6 - 16 L^2 t X^6 Y^6 - 14 L^2 t^2 X^6 Y^6 + 3 L^2 t^4 X^6 Y^6 + + 7 L^3 X^12 Y^6 + 21 L^3 t X^12 Y^6 + 19 L^3 t^2 X^12 Y^6 + + 3 L^3 t^3 X^12 Y^6 - 2 L^3 t^4 X^12 Y^6 - L^4 t X^18 Y^6 - L^4 t^2 X^18 Y^6 ++ L^4 t^3 X^18 Y^6 + L^4 t^4 X^18 Y^6 - 5 L^2 X^5 Y^7 - 15 L^2 t X^5 Y^7 - + 13 L^2 t^2 X^5 Y^7 + 3 L^2 t^4 X^5 Y^7 + 9 L^3 X^11 Y^7 + + 30 L^3 t X^11 Y^7 + 30 L^3 t^2 X^11 Y^7 + 6 L^3 t^3 X^11 Y^7 - + 3 L^3 t^4 X^11 Y^7 - L^4 X^17 Y^7 - 4 L^4 t X^17 Y^7 - 3 L^4 t^2 X^17 Y^7 + + L^4 t^3 X^17 Y^7 + L^4 t^4 X^17 Y^7 - 3 L^2 X^4 Y^8 - 11 L^2 t X^4 Y^8 - + 10 L^2 t^2 X^4 Y^8 + 2 L^2 t^4 X^4 Y^8 + 13 L^3 X^10 Y^8 + + 38 L^3 t X^10 Y^8 + 36 L^3 t^2 X^10 Y^8 + 9 L^3 t^3 X^10 Y^8 - + 2 L^3 t^4 X^10 Y^8 - 3 L^4 X^16 Y^8 - 10 L^4 t X^16 Y^8 - + 9 L^4 t^2 X^16 Y^8 + 2 L^4 t^4 X^16 Y^8 - 2 L^2 X^3 Y^9 - 7 L^2 t X^3 Y^9 - + 6 L^2 t^2 X^3 Y^9 + L^2 t^3 X^3 Y^9 + 2 L^2 t^4 X^3 Y^9 + 13 L^3 X^9 Y^9 + + 42 L^3 t X^9 Y^9 + 42 L^3 t^2 X^9 Y^9 + 10 L^3 t^3 X^9 Y^9 - + 3 L^3 t^4 X^9 Y^9 - 6 L^4 X^15 Y^9 - 18 L^4 t X^15 Y^9 - + 16 L^4 t^2 X^15 Y^9 - 2 L^4 t^3 X^15 Y^9 + 2 L^4 t^4 X^15 Y^9 - + L^2 X^2 Y^10 - 3 L^2 t X^2 Y^10 - 2 L^2 t^2 X^2 Y^10 + L^2 t^3 X^2 Y^10 + + L^2 t^4 X^2 Y^10 + 13 L^3 X^8 Y^10 + 38 L^3 t X^8 Y^10 + + 36 L^3 t^2 X^8 Y^10 + 9 L^3 t^3 X^8 Y^10 - 2 L^3 t^4 X^8 Y^10 - + 9 L^4 X^14 Y^10 - 27 L^4 t X^14 Y^10 - 24 L^4 t^2 X^14 Y^10 - + 3 L^4 t^3 X^14 Y^10 + 3 L^4 t^4 X^14 Y^10 - L^5 t^2 X^20 Y^10 - + 2 L^5 t^3 X^20 Y^10 - L^5 t^4 X^20 Y^10 - L^2 t X Y^11 - L^2 t^2 X Y^11 + + L^2 t^3 X Y^11 + L^2 t^4 X Y^11 + 9 L^3 X^7 Y^11 + 30 L^3 t X^7 Y^11 + + 30 L^3 t^2 X^7 Y^11 + 6 L^3 t^3 X^7 Y^11 - 3 L^3 t^4 X^7 Y^11 - + 11 L^4 X^13 Y^11 - 31 L^4 t X^13 Y^11 - 27 L^4 t^2 X^13 Y^11 - + 4 L^4 t^3 X^13 Y^11 + 3 L^4 t^4 X^13 Y^11 - 2 L^5 t X^19 Y^11 - + 6 L^5 t^2 X^19 Y^11 - 6 L^5 t^3 X^19 Y^11 - 2 L^5 t^4 X^19 Y^11 + + 7 L^3 X^6 Y^12 + 21 L^3 t X^6 Y^12 + 19 L^3 t^2 X^6 Y^12 + + 3 L^3 t^3 X^6 Y^12 - 2 L^3 t^4 X^6 Y^12 - 11 L^4 X^12 Y^12 - + 33 L^4 t X^12 Y^12 - 29 L^4 t^2 X^12 Y^12 - 3 L^4 t^3 X^12 Y^12 + + 4 L^4 t^4 X^12 Y^12 - L^5 X^18 Y^12 - 4 L^5 t X^18 Y^12 - + 9 L^5 t^2 X^18 Y^12 - 10 L^5 t^3 X^18 Y^12 - 4 L^5 t^4 X^18 Y^12 + + 3 L^3 X^5 Y^13 + 11 L^3 t X^5 Y^13 + 11 L^3 t^2 X^5 Y^13 + + L^3 t^3 X^5 Y^13 - 2 L^3 t^4 X^5 Y^13 - 11 L^4 X^11 Y^13 - + 31 L^4 t X^11 Y^13 - 27 L^4 t^2 X^11 Y^13 - 4 L^4 t^3 X^11 Y^13 + + 3 L^4 t^4 X^11 Y^13 - 3 L^5 t X^17 Y^13 - 11 L^5 t^2 X^17 Y^13 - + 12 L^5 t^3 X^17 Y^13 - 4 L^5 t^4 X^17 Y^13 + L^3 X^4 Y^14 + + 4 L^3 t X^4 Y^14 + 3 L^3 t^2 X^4 Y^14 - L^3 t^3 X^4 Y^14 - + L^3 t^4 X^4 Y^14 - 9 L^4 X^10 Y^14 - 27 L^4 t X^10 Y^14 - + 24 L^4 t^2 X^10 Y^14 - 3 L^4 t^3 X^10 Y^14 + 3 L^4 t^4 X^10 Y^14 + + L^5 X^16 Y^14 - 7 L^5 t^2 X^16 Y^14 - 11 L^5 t^3 X^16 Y^14 - + 5 L^5 t^4 X^16 Y^14 + L^3 t X^3 Y^15 + L^3 t^2 X^3 Y^15 - L^3 t^3 X^3 Y^15 - + L^3 t^4 X^3 Y^15 - 6 L^4 X^9 Y^15 - 18 L^4 t X^9 Y^15 - + 16 L^4 t^2 X^9 Y^15 - 2 L^4 t^3 X^9 Y^15 + 2 L^4 t^4 X^9 Y^15 + + 3 L^5 X^15 Y^15 + 3 L^5 t X^15 Y^15 - 7 L^5 t^2 X^15 Y^15 - + 11 L^5 t^3 X^15 Y^15 - 4 L^5 t^4 X^15 Y^15 + L^6 t X^21 Y^15 + + 3 L^6 t^2 X^21 Y^15 + 3 L^6 t^3 X^21 Y^15 + L^6 t^4 X^21 Y^15 - + 3 L^4 X^8 Y^16 - 10 L^4 t X^8 Y^16 - 9 L^4 t^2 X^8 Y^16 + + 2 L^4 t^4 X^8 Y^16 + L^5 X^14 Y^16 - 7 L^5 t^2 X^14 Y^16 - + 11 L^5 t^3 X^14 Y^16 - 5 L^5 t^4 X^14 Y^16 + L^6 X^20 Y^16 + + 7 L^6 t X^20 Y^16 + 12 L^6 t^2 X^20 Y^16 + 8 L^6 t^3 X^20 Y^16 + + 2 L^6 t^4 X^20 Y^16 - L^4 X^7 Y^17 - 4 L^4 t X^7 Y^17 - 3 L^4 t^2 X^7 Y^17 + + L^4 t^3 X^7 Y^17 + L^4 t^4 X^7 Y^17 - 3 L^5 t X^13 Y^17 - + 11 L^5 t^2 X^13 Y^17 - 12 L^5 t^3 X^13 Y^17 - 4 L^5 t^4 X^13 Y^17 + + 4 L^6 X^19 Y^17 + 13 L^6 t X^19 Y^17 + 19 L^6 t^2 X^19 Y^17 + + 14 L^6 t^3 X^19 Y^17 + 4 L^6 t^4 X^19 Y^17 - L^4 t X^6 Y^18 - + L^4 t^2 X^6 Y^18 + L^4 t^3 X^6 Y^18 + L^4 t^4 X^6 Y^18 - L^5 X^12 Y^18 - + 4 L^5 t X^12 Y^18 - 9 L^5 t^2 X^12 Y^18 - 10 L^5 t^3 X^12 Y^18 - + 4 L^5 t^4 X^12 Y^18 + 4 L^6 X^18 Y^18 + 16 L^6 t X^18 Y^18 + + 24 L^6 t^2 X^18 Y^18 + 16 L^6 t^3 X^18 Y^18 + 4 L^6 t^4 X^18 Y^18 - + 2 L^5 t X^11 Y^19 - 6 L^5 t^2 X^11 Y^19 - 6 L^5 t^3 X^11 Y^19 - + 2 L^5 t^4 X^11 Y^19 + 4 L^6 X^17 Y^19 + 13 L^6 t X^17 Y^19 + + 19 L^6 t^2 X^17 Y^19 + 14 L^6 t^3 X^17 Y^19 + 4 L^6 t^4 X^17 Y^19 - + L^5 t^2 X^10 Y^20 - 2 L^5 t^3 X^10 Y^20 - L^5 t^4 X^10 Y^20 + + L^6 X^16 Y^20 + 7 L^6 t X^16 Y^20 + 12 L^6 t^2 X^16 Y^20 + + 8 L^6 t^3 X^16 Y^20 + 2 L^6 t^4 X^16 Y^20 + L^6 t X^15 Y^21 + + 3 L^6 t^2 X^15 Y^21 + 3 L^6 t^3 X^15 Y^21 + L^6 t^4 X^15 Y^21+
+ mathematica/equivariant_CSM_via_motivic.nb view
@@ -0,0 +1,2195 @@+(* Content-type: application/vnd.wolfram.mathematica *)++(*** Wolfram Notebook File ***)+(* http://www.wolfram.com/nb *)++(* CreatedBy='Mathematica 9.0' *)++(*CacheID: 234*)+(* Internal cache information:+NotebookFileLineBreakTest+NotebookFileLineBreakTest+NotebookDataPosition[ 157, 7]+NotebookDataLength[ 79871, 2186]+NotebookOptionsPosition[ 78389, 2136]+NotebookOutlinePosition[ 78746, 2152]+CellTagsIndexPosition[ 78703, 2149]+WindowFrame->Normal*)++(* Beginning of Notebook Content *)+Notebook[{++Cell[CellGroupData[{+Cell[BoxData[+ RowBox[{"\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"===", + RowBox[{"=", " ", + RowBox[{+ RowBox[{+ RowBox[{+ RowBox[{"COMPUTE", " ", "THR", " ", "EQUIVARIANT", " ", "CHERN"}], + "-", "SCHWARTZ", "-", + RowBox[{+ "MACPHERSON", " ", "\[IndentingNewLine]", "CLASS", " ", "OF", " ", + "COINCIDENT", " ", "ROOT", " ", "LOCI", " ", "VIA", " ", "THE", " ", + "MOTIVIC", " ", "ALGORITHM"}]}], " ", "==="}], "="}]}]}], " ", + "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"<<", "Combinatorica`"}], "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"convention", ":", " ", "u"}], " ", "=", " ", + RowBox[{+ RowBox[{"-", "c_"}], "1", + RowBox[{"(", "L", ")"}], " ", "where", " ", "L", " ", "is", " ", "the", + " ", "tautological", " ", "line", " ", "bundle", " ", "on", " ", + RowBox[{"P", "^", "n"}]}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"uu", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"u", ",", "i"}], "]"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"vv", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"u", ",", "i"}], "]"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"ww", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"u", ",", "i"}], "]"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", + RowBox[{+ "only", " ", "works", " ", "for", " ", "lists", " ", "of", " ", "equal", + " ", + RowBox[{"length", "!!"}]}], "*)"}], + RowBox[{+ RowBox[{"Zip", "[", + RowBox[{"as_", ",", "bs_"}], "]"}], ":=", + RowBox[{"MapThread", "[", + RowBox[{+ RowBox[{+ RowBox[{"{", + RowBox[{"#1", ",", "#2"}], "}"}], "&"}], ",", + RowBox[{"{", + RowBox[{"as", ",", "bs"}], "}"}]}], "]"}]}], "\n", + RowBox[{+ RowBox[{"Zip3", "[", + RowBox[{"as_", ",", "bs_", ",", "cs_"}], "]"}], ":=", + RowBox[{"MapThread", "[", + RowBox[{+ RowBox[{+ RowBox[{"{", + RowBox[{"#1", ",", "#2", ",", "#3"}], "}"}], "&"}], ",", + RowBox[{"{", + RowBox[{"as", ",", "bs", ",", "cs"}], "}"}]}], "]"}]}], "\n", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Fst", "[", "pair_", "]"}], ":=", + RowBox[{"pair", "[", + RowBox[{"[", "1", "]"}], "]"}]}], "\n", + RowBox[{+ RowBox[{"Snd", "[", "pair_", "]"}], ":=", + RowBox[{"pair", "[", + RowBox[{"[", "2", "]"}], "]"}]}], "\n", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"extendListWithZeros", "[", + RowBox[{"L_", ",", "n_"}], "]"}], ":=", + RowBox[{"Join", "[", + RowBox[{"L", ",", + RowBox[{"Table", "[", + RowBox[{"0", ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", + RowBox[{"n", "-", + RowBox[{"Length", "[", "L", "]"}]}]}], "}"}]}], "]"}]}], "]"}]}], + "\n", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"SumList", "[", "L_", "]"}], ":=", + RowBox[{"Sum", "[", + RowBox[{"x", ",", + RowBox[{"{", + RowBox[{"x", ",", "L"}], "}"}]}], "]"}]}]}]}]], "Input",+ CellChangeTimes->{{3.799905685678034*^9, 3.799905717212275*^9}, {+ 3.799913522600854*^9, 3.799913527152174*^9}, {3.7999135913325577`*^9, + 3.799913592101347*^9}, {3.8011372389408627`*^9, 3.8011373095459747`*^9}}],++Cell[BoxData[+ RowBox[{+ StyleBox[+ RowBox[{"General", "::", "compat"}], "MessageName"], + RowBox[{+ ":", " "}], "\<\"Combinatorica Graph and Permutations functionality has \+been superseded by preloaded functionality. The package now being loaded may \+conflict with this. Please see the Compatibility Guide for details.\"\>"}]], \+"Message", "MSG",+ CellChangeTimes->{3.801137314352317*^9, 3.801137453501457*^9, + 3.8011377668896217`*^9, 3.8011379201269207`*^9}]+}, Open ]],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 0.5}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 3}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{"EQUIVARIANT", " ", "COHOMOLOGY", " ", "RING", " ", "OF", " ", + RowBox[{"P", "^", "n"}]}], " ", "==="}], " ", "*)"}], "\n", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"Weights", " ", "of", " ", + RowBox[{"Sym", "^", "n"}], " ", + RowBox[{"C", "^", "2"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"wt", "[", + RowBox[{"n_", ",", "i_"}], "]"}], ":=", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{"n", "-", "i"}], ")"}], "*", "\[Alpha]"}], "+", + RowBox[{"i", "*", "\[Beta]"}]}]}], "\[IndentingNewLine]", "\n", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"the", " ", "relation", " ", "in", " ", + RowBox[{"H", "^"}], "*", + RowBox[{+ RowBox[{"(", + RowBox[{"P", "^", "n"}], ")"}], ".", " ", + RowBox[{"Convention", ":", " ", "\[IndentingNewLine]", "u"}]}]}], " ", + "=", " ", + RowBox[{+ RowBox[{"-", "c1"}], + RowBox[{"(", "L", ")"}], " ", "where", " ", "L", " ", "is", " ", "the", + " ", "tautological", " ", "line", " ", "bundle"}]}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"rel", "[", "n_", "]"}], ":=", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"u", "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"Clear", "[", "upow$nplus1", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"upow$nplus1", "[", "n_", "]"}], " ", ":=", " ", + RowBox[{+ RowBox[{"upow$nplus1", "[", "n", "]"}], "=", " ", + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"u", "^", + RowBox[{"(", + RowBox[{"n", "+", "1"}], ")"}]}], "-", + RowBox[{"rel", "[", "n", "]"}]}], "]"}]}]}], "\n", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"(", "unefficiently", ")"}], " ", "normalize", " ", + RowBox[{+ RowBox[{"a", " ", "/", "polynomial"}], "/", " ", "in"}], " ", "u"}], + " ", "*)"}], " ", "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"Clear", "[", "normalizeSlow", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"normalizeSlow", "[", + RowBox[{"n_", ",", " ", "X0_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"X", "=", + RowBox[{"Expand", "[", "X0", "]"}]}], ",", "m"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Exponent", "[", + RowBox[{"X", ",", "u"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{"m", "\[LessEqual]", "n"}], ",", "X", ",", + RowBox[{"normalizeSlow", "[", + RowBox[{"n", ",", + RowBox[{"X", "/.", + RowBox[{"{", + RowBox[{+ RowBox[{"u", "^", "m"}], "\[Rule]", + RowBox[{+ RowBox[{"u", "^", + RowBox[{"(", + RowBox[{"m", "-", "n", "-", "1"}], ")"}]}], "*", + RowBox[{"upow$nplus1", "[", "n", "]"}]}]}], "}"}]}]}], "]"}]}],+ "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ "table", " ", "of", " ", "normalized", " ", "powers", " ", "of", " ", + "u"}], " ", "*)"}], "\n", + RowBox[{"Clear", "[", "UPowAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"UPowAB", "[", + RowBox[{"n_", ",", "k_"}], "]"}], ":=", + RowBox[{+ RowBox[{"UPowAB", "[", + RowBox[{"n", ",", "k"}], "]"}], " ", "=", " ", + RowBox[{"Expand", "[", + RowBox[{"normalizeSlow", "[", + RowBox[{"n", ",", + RowBox[{"u", "^", "k"}]}], "]"}], "]"}]}]}], "\[IndentingNewLine]", + "\n", + RowBox[{"Clear", "[", "normalizeVarAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"normalizeVarAB", "[", + RowBox[{"n_", ",", "uuu_", ",", "X_"}], "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"m", "=", + RowBox[{"Exponent", "[", + RowBox[{"X", ",", "uuu"}], "]"}]}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"X", ",", "uuu", ",", "k"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"UPowAB", "[", + RowBox[{"n", ",", "k"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"u", "\[Rule]", "uuu"}], "}"}]}], ")"}]}], ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", "m"}], "}"}]}], "]"}], "]"}]}], + "\[IndentingNewLine]", "]"}]}]}]}]], "Input",+ CellChangeTimes->{{3.799905722746293*^9, 3.799905732364284*^9}, {+ 3.799913537797875*^9, 3.799913551058023*^9}, {3.8011373223183937`*^9, + 3.801137341966631*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{+ "pushforward", " ", "along", " ", "the", " ", "multiplication", " ", + RowBox[{"(", + RowBox[{"single", " ", "monom"}], ")"}]}], " ", "==="}], " ", "*)"}], + "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Psi_", "*", " ", + RowBox[{"(", + RowBox[{+ RowBox[{"u", "^", "k"}], " ", "*", " ", + RowBox[{"v", "^", "l"}]}], ")"}]}], " ", "=", " ", + RowBox[{"?", " ", + RowBox[{"cohomology", " ", "indexing"}]}]}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", "psiStarAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"psiStarAB", "[", + RowBox[{"n_", ",", "m_", ",", "0", ",", "0"}], "]"}], ":=", + RowBox[{+ RowBox[{"psiStarAB", "[", + RowBox[{"n", ",", "m", ",", "0", ",", "0"}], "]"}], "=", + RowBox[{"Binomial", "[", + RowBox[{+ RowBox[{"n", "+", "m"}], ",", "n"}], "]"}]}]}], "\[IndentingNewLine]", + + RowBox[{+ RowBox[{"psiStarAB", "[", + RowBox[{"n_", ",", "m_", ",", "k_", ",", "l_"}], "]"}], ":=", + RowBox[{+ RowBox[{"psiStarAB", "[", + RowBox[{"n", ",", "m", ",", "k", ",", "l"}], "]"}], " ", "=", " ", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ "A", ",", "B", ",", "AB", ",", "F", ",", "R", ",", "IJ", ",", "sel", + ",", "fun", ",", "cft"}], "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"A", "=", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"u", "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"k", "-", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"v", "+", + RowBox[{"wt", "[", + RowBox[{"m", ",", "j"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"j", ",", "0", ",", + RowBox[{"l", "-", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"AB", " ", "=", + RowBox[{"Expand", "[", + RowBox[{"A", "*", "B"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"sel", "[", + RowBox[{"{", + RowBox[{"i_", ",", "j_"}], "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"(", + RowBox[{"i", "<", "k"}], ")"}], " ", "||", " ", + RowBox[{"(", + RowBox[{"j", "<", "l"}], ")"}]}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"cft", "[", + RowBox[{"{", + RowBox[{"i_", ",", "j_"}], "}"}], "]"}], ":=", + RowBox[{"Coefficient", "[", + RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"AB", ",", "u", ",", "i"}], "]"}], ",", "v", ",", "j"}], + "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"fun", "[", + RowBox[{"{", + RowBox[{"i_", ",", "j_"}], "}"}], "]"}], ":=", + RowBox[{"psiStarAB", "[", + RowBox[{"n", ",", "m", ",", "i", ",", "j"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"IJ", " ", "=", " ", + RowBox[{"Flatten", "[", + RowBox[{+ RowBox[{"Table", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"i", ",", "j"}], "}"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "k"}], "}"}], ",", + RowBox[{"{", + RowBox[{"j", ",", "0", ",", "l"}], "}"}]}], "]"}], ",", "1"}], + "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"IJ", " ", "=", + RowBox[{"Select", "[", " ", + RowBox[{"IJ", ",", "sel"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", "IJ", "]"}], ";", "\[IndentingNewLine]", + RowBox[{"Print", "[", "AB", "]"}], ";"}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{"F", " ", "=", " ", + RowBox[{+ RowBox[{"Binomial", "[", + RowBox[{+ RowBox[{"n", "+", "m", "-", "k", "-", "l"}], ",", + RowBox[{"n", "-", "k"}]}], "]"}], "*", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"w", "+", + RowBox[{"wt", "[", + RowBox[{+ RowBox[{"n", "+", "m"}], ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"k", "+", "l", "-", "1"}]}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"R", " ", "=", + RowBox[{"Sum", "[", " ", + RowBox[{+ RowBox[{+ RowBox[{"cft", "[", "ij", "]"}], "*", + RowBox[{"fun", "[", "ij", "]"}]}], ",", + RowBox[{"{", + RowBox[{"ij", ",", "IJ"}], "}"}]}], "]"}]}], ";", " ", + "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"F", "-", "R"}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}]}],+ "\n", "\[IndentingNewLine]", + RowBox[{"Clear", "[", "psiStarChern", "]"}], "\n", + RowBox[{+ RowBox[{"psiStarChern", "[", + RowBox[{"n_", ",", "m_", ",", "k_", ",", "l_"}], "]"}], ":=", + RowBox[{+ RowBox[{"psiStarChern", "[", + RowBox[{"n", ",", "m", ",", "k", ",", "l"}], "]"}], " ", "=", " ", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"SymmetricReduction", "[", + RowBox[{+ RowBox[{"psiStarAB", "[", + RowBox[{"n", ",", "m", ",", "k", ",", "l"}], "]"}], ",", + RowBox[{"{", + RowBox[{"\[Alpha]", ",", "\[Beta]"}], "}"}], ",", + RowBox[{"{", + RowBox[{"c", ",", "d"}], "}"}]}], "]"}], "[", + RowBox[{"[", "1", "]"}], "]"}]}]}], "\[IndentingNewLine]"}]}]], "Input",\++ CellChangeTimes->{{3.799905744141039*^9, 3.799905769496408*^9}, {+ 3.7999135651971607`*^9, 3.79991357100387*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{"class", " ", "of", " ", "the", " ", "diagonal"}], " ", "==="}], + " ", "*)"}], "\n", "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"notk", "[", + RowBox[{"n_", ",", "k_"}], "]"}], ":=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Table", "[", + RowBox[{"i", ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}], ",", + RowBox[{+ RowBox[{"#", "\[NotEqual]", "k"}], "&"}]}], "]"}]}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"class", " ", "of", " ", "the", " ", "diagonal", " ", "in", " ", + RowBox[{"P", "^", "n"}], " ", "x", " ", + RowBox[{"P", "^", "n"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Clear", "[", "deltaClassAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaClassAB", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"deltaClassAB", "[", "n", "]"}], " ", "=", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Factor", "[", + RowBox[{"Sum", "[", " ", + RowBox[{+ RowBox[{"Product", "[", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{"v", "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ")"}], + RowBox[{+ RowBox[{"(", + RowBox[{"w", "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ")"}], "/", + RowBox[{"(", + RowBox[{+ RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}], "-", + RowBox[{"wt", "[", + RowBox[{"n", ",", "k"}], "]"}]}], ")"}]}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", + RowBox[{"notk", "[", + RowBox[{"n", ",", "k"}], "]"}]}], "}"}]}], "]"}], ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", "n"}], "}"}]}], "]"}], "]"}], "]"}]}]}],+ "\[IndentingNewLine]", "\n", + RowBox[{"Clear", "[", "deltaClassCh", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaClassCh", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"deltaClassCh", "[", "n", "]"}], " ", "=", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"SymmetricReduction", "[", + RowBox[{+ RowBox[{"deltaClassAB", "[", "n", "]"}], ",", + RowBox[{"{", + RowBox[{"\[Alpha]", ",", "\[Beta]"}], "}"}], ",", + RowBox[{"{", + RowBox[{"c", ",", "d"}], "}"}]}], "]"}], "[", + RowBox[{"[", "1", "]"}], "]"}], "]"}]}]}], "\[IndentingNewLine]", "\n", + RowBox[{"(*", " ", + RowBox[{"small", " ", "diagonal", " ", "in", " ", + RowBox[{"P", "^", "n"}], " ", "x", " ", + RowBox[{"P", "^", "n"}], " ", "x", " ", + RowBox[{"P", "^", "n"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaClassTri", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"deltaClassTri", "[", "n", "]"}], " ", "=", + "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Factor", "[", + RowBox[{"Sum", "[", " ", + RowBox[{+ RowBox[{"Product", "[", + RowBox[{+ RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"uu", "[", "1", "]"}], "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ")"}], + RowBox[{"(", + RowBox[{+ RowBox[{"uu", "[", "2", "]"}], "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ")"}], + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"uu", "[", "3", "]"}], "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ")"}], "/", + RowBox[{"(", + RowBox[{+ RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}], "-", + RowBox[{"wt", "[", + RowBox[{"n", ",", "k"}], "]"}]}], ")"}]}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", + RowBox[{"notk", "[", + RowBox[{"n", ",", "k"}], "]"}]}], "}"}]}], "]"}], ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", "n"}], "}"}]}], "]"}], "]"}], + "]"}]}]}]}]}]], "Input",+ CellChangeTimes->{{3.799905776542532*^9, 3.799905781984827*^9}, {+ 3.7999136010678368`*^9, 3.799913629960795*^9}, {3.7999137031951857`*^9, + 3.799913712604754*^9}, 3.80113777875804*^9}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 0.5}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 3}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{+ "pushforward", " ", "along", " ", "the", " ", "diagonal", " ", "map", " ", + RowBox[{"(", + RowBox[{"single", " ", "monom"}], ")"}]}], " ", "==="}], " ", "*)"}], + "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"pushforward", " ", "of", " ", + RowBox[{"u", "^", "k"}], " ", "along", " ", + RowBox[{"Delta", " ", ":", " ", + RowBox[{"P", "^", "n"}]}]}], " ", "\[Rule]", " ", + RowBox[{+ RowBox[{"P", "^", "n"}], " ", "x", " ", + RowBox[{"P", "^", "n"}]}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", "deltaStarAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaStarAB", "[", + RowBox[{"n_", ",", "0"}], "]"}], " ", ":=", " ", + RowBox[{+ RowBox[{"deltaStarAB", "[", + RowBox[{"n", ",", "0"}], "]"}], " ", "=", " ", + RowBox[{"deltaClassAB", "[", "n", "]"}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaStarAB", "[", + RowBox[{"n_", ",", "k_"}], "]"}], ":=", + RowBox[{+ RowBox[{"deltaStarAB", "[", + RowBox[{"n", ",", "k"}], "]"}], "=", " ", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"prod", ",", "Y", ",", "preY", ",", "Delta", ",", "rest"}], + "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"Y", " ", "=", " ", + RowBox[{"Expand", "[", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"v", "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"k", "-", "1"}]}], "}"}]}], "]"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"preY", " ", "=", " ", + RowBox[{"Y", "/.", + RowBox[{"{", + RowBox[{"v", "\[Rule]", "u"}], "}"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"Delta", " ", "=", " ", + RowBox[{"deltaClassAB", "[", "n", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"prod", "=", + RowBox[{"normalizeVarAB", "[", + RowBox[{"n", ",", "v", ",", + RowBox[{"Y", "*", "Delta"}]}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"rest", "=", " ", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"preY", ",", "u", ",", "i"}], "]"}], "*", + RowBox[{"deltaStarAB", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ",", " ", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"k", "-", "1"}]}], "}"}]}], " ", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"Expand", "[", " ", + RowBox[{"prod", " ", "-", " ", "rest"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "\n", + RowBox[{"Clear", "[", "deltaStarCh", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaStarCh", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"deltaStarCh", "[", "n", "]"}], " ", "=", "\[IndentingNewLine]", + + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"SymmetricReduction", "[", + RowBox[{+ RowBox[{"deltaStarAB", "[", "n", "]"}], ",", + RowBox[{"{", + RowBox[{"\[Alpha]", ",", "\[Beta]"}], "}"}], ",", + RowBox[{"{", + RowBox[{"c", ",", "d"}], "}"}]}], "]"}], "[", + RowBox[{"[", "1", "]"}], "]"}], "]"}]}]}], + "\[IndentingNewLine]"}]}]], "Input",+ CellChangeTimes->{{3.799905799813909*^9, 3.79990583862068*^9}, {+ 3.79991365241033*^9, 3.7999136977381983`*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{"pushforwards", " ", "for", " ", "polynomials", " ", + RowBox[{"(", + RowBox[{"not", " ", "just", " ", "single", " ", "monoms"}], ")"}]}], + " ", "==="}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"delta2", "[", + RowBox[{"n_", ",", "uuu_", ",", + RowBox[{"{", + RowBox[{"vvv_", ",", "www_"}], "}"}], ",", "X0_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"X", "=", + RowBox[{"Expand", "[", "X0", "]"}]}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"X", ",", "uuu", ",", "i"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"deltaStarAB", "[", + RowBox[{"n", ",", "i"}], "]"}], "/.", + RowBox[{"{", + RowBox[{+ RowBox[{"v", "\[Rule]", "vvv"}], ",", + RowBox[{"w", "\[Rule]", "www"}]}], "}"}]}], ")"}]}], " ", ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"deltaMany", "[", + RowBox[{"n_", ",", "uuu_", ",", "vvvs_", ",", "X_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", "ttt", "}"}], ",", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "vvvs", "]"}], "\[Equal]", "1"}], ",", + RowBox[{"X", "/.", + RowBox[{"{", + RowBox[{"uuu", "\[Rule]", + RowBox[{+ "vvvs", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]}], + "}"}]}], ",", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "vvvs", "]"}], "\[Equal]", "2"}], ",", + RowBox[{"delta2", "[", + RowBox[{"n", ",", "uuu", ",", "vvvs", ",", "X"}], "]"}], ",", + "\[IndentingNewLine]", + RowBox[{"deltaMany", "[", + RowBox[{"n", ",", "ttt", ",", + RowBox[{"Drop", "[", + RowBox[{"vvvs", ",", "1"}], "]"}], ",", " ", + RowBox[{"delta2", "[", + RowBox[{"n", ",", "uuu", ",", + RowBox[{"{", + RowBox[{+ RowBox[{+ "vvvs", "\[LeftDoubleBracket]", "1", + "\[RightDoubleBracket]"}], ",", "ttt"}], "}"}], ",", "X"}], + "]"}]}], "]"}]}], "]"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"psi2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"n1_", ",", "n2_"}], "}"}], ",", + RowBox[{"{", + RowBox[{"uuu_", ",", "vvv_"}], "}"}], ",", "www_", ",", "X0_"}], "]"}],+ ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"X", "=", + RowBox[{"Expand", "[", "X0", "]"}]}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"X", ",", "uuu", ",", "i"}], "]"}], ",", "vvv", ",", + "j"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"psiStarAB", "[", + RowBox[{"n1", ",", "n2", ",", "i", ",", "j"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"w", "\[Rule]", "www"}], "}"}]}], ")"}]}], " ", ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n1"}], "}"}], ",", + RowBox[{"{", + RowBox[{"j", ",", "0", ",", "n2"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"psiMany", "[", + RowBox[{"ns_", ",", "uuus_", ",", "www_", ",", "X_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"ttt", ",", "vvvs", ",", "ms"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "uuus", "]"}], "\[Equal]", "1"}], ",", + RowBox[{"X", "/.", + RowBox[{"{", + RowBox[{+ RowBox[{+ "uuus", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], + "\[Rule]", "www"}], "}"}]}], ",", "\[IndentingNewLine]", + RowBox[{"If", "[", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "uuus", "]"}], "\[Equal]", "2"}], ",", + RowBox[{"psi2", "[", + RowBox[{"ns", ",", "uuus", ",", "www", ",", "X"}], "]"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"ms", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{+ "ns", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], + "+", + RowBox[{+ "ns", "\[LeftDoubleBracket]", "2", + "\[RightDoubleBracket]"}]}], "}"}], ",", + RowBox[{"Drop", "[", + RowBox[{"ns", ",", "2"}], "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"vvvs", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "ttt", "}"}], ",", + RowBox[{"Drop", "[", + RowBox[{"uuus", ",", "2"}], "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"psiMany", "[", + RowBox[{"ms", ",", "vvvs", ",", "www", ",", " ", + RowBox[{"psi2", "[", + RowBox[{+ RowBox[{"Take", "[", + RowBox[{"ns", ",", "2"}], "]"}], ",", + RowBox[{"Take", "[", + RowBox[{"uuus", ",", "2"}], "]"}], ",", "ttt", ",", "X"}], + "]"}]}], "]"}]}]}], "]"}]}], "]"}]}], "]"}]}]}]}]], "Input",+ CellChangeTimes->{{3.799667476439917*^9, 3.7996677149825773`*^9}, {+ 3.7996677601261387`*^9, 3.799667786948341*^9}, {3.79966786245846*^9, + 3.799667910243636*^9}, {3.801137629197691*^9, 3.801137675043544*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 0.5}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 3}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{+ "pushforward", " ", "along", " ", "the", " ", "power", " ", "map"}], " ", + "==="}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ "compute", " ", "the", " ", "pushforward", " ", "by", " ", "composing", + " ", "the", " ", "diagonal", " ", "with", " ", "the", " ", "merging", " ",+ "map"}], " ", "*)"}], "\n", + RowBox[{+ RowBox[{"Clear", "[", "slowOmegaAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"slowOmegaAB", "[", + RowBox[{"n_", ",", "d_", ",", "k_"}], "]"}], ":=", + RowBox[{+ RowBox[{"slowOmegaAB", "[", + RowBox[{"n", ",", "d", ",", "k"}], "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"vars", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "d"}], "}"}]}], "]"}]}], ",", + "\[IndentingNewLine]", + RowBox[{"dims", "=", + RowBox[{"Table", "[", + RowBox[{"n", ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "d"}], "}"}]}], "]"}]}]}], "}"}], + ",", "\[IndentingNewLine]", + RowBox[{"Factor", "[", + RowBox[{"psiMany", "[", + RowBox[{"dims", ",", "vars", ",", "u", ",", + RowBox[{"deltaMany", "[", + RowBox[{"n", ",", "u", ",", "vars", ",", + RowBox[{"u", "^", "k"}]}], "]"}]}], "]"}], "]"}]}], + "\[IndentingNewLine]", "]"}]}]}], "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"d", "-", + RowBox[{"th", " ", "power", " ", "of", " ", + RowBox[{"u", "^", + RowBox[{"k", " ", ":", " ", + RowBox[{"P", "^", "n"}]}]}]}]}], " ", "\[Rule]", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"n", "*", "d"}], ")"}]}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"NOTE", ":", " ", + RowBox[{+ RowBox[{+ "this", " ", "formula", " ", "is", " ", "valid", " ", "for", " ", "k"}],+ ">", + RowBox[{+ RowBox[{"n", " ", + RowBox[{"too", "!"}], " ", "\[IndentingNewLine]", "you", " ", "can", + " ", "experimentally", " ", "check", " ", "this", " ", + "\[IndentingNewLine]", "by", " ", "pre"}], "-", + RowBox[{"normalizing", " ", "and", " ", "post"}], "-", + "normalizing"}]}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Clear", "[", "omegaAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"omegaAB", "[", + RowBox[{"n_", ",", "d_", ",", "k_"}], "]"}], ":=", "\[IndentingNewLine]", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"idxs", "=", " ", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Table", "[", + RowBox[{"i", ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", + RowBox[{"n", "*", "d"}]}], "}"}]}], "]"}], ",", + RowBox[{+ RowBox[{"Not", "[", + RowBox[{"Divisible", "[", + RowBox[{"#", ",", "d"}], "]"}], "]"}], "&"}]}], "]"}]}], "}"}], + "\[IndentingNewLine]", ",", + RowBox[{+ RowBox[{"u", "^", "k"}], "*", + RowBox[{"d", "^", + RowBox[{"(", + RowBox[{"n", "-", "k"}], ")"}]}], "*", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"u", "+", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"n", "*", "d"}], "-", "i"}], ")"}], "*", "\[Alpha]"}], + "+", + RowBox[{"i", "*", "\[Beta]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "idxs"}], "}"}]}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}], "\n", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{+ RowBox[{"pushforward", " ", "along", " ", "d"}], "-", + RowBox[{"th", " ", + RowBox[{"power", " ", ":", " ", + RowBox[{"P", "^", "n"}]}]}]}], " ", "\[Rule]", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"n", "*", "d"}], ")"}]}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"omega1", "[", + RowBox[{"n_", ",", "d_", ",", "uuu_", ",", "www_", ",", "X0_"}], "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"X", "=", + RowBox[{"Expand", "[", "X0", "]"}]}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{+ RowBox[{"Coefficient", "[", + RowBox[{"X", ",", "uuu", ",", "i"}], "]"}], "*", + RowBox[{"(", + RowBox[{+ RowBox[{"omegaAB", "[", + RowBox[{"n", ",", "d", ",", "i"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"u", "\[Rule]", "www"}], "}"}]}], ")"}]}], " ", ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\n", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{+ RowBox[{"P", "^", "n1"}], " ", "x", " ", + RowBox[{"P", "^", "n2"}], " ", "x", " ", + RowBox[{"P", "^", "n3"}]}], " ", "\[Rule]", " ", + RowBox[{+ RowBox[{+ RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"d1", "*", "n1"}], ")"}]}], " ", "x", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"d2", "*", "n2"}], ")"}]}], " ", "x", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{"d3", "*", "n3"}], ")"}]}]}], " ", "\[Rule]", " ", + RowBox[{"P", "^", + RowBox[{"(", + RowBox[{+ RowBox[{"d1", "*", "n1"}], " ", "+", " ", + RowBox[{"d2", "*", "n2"}], " ", "+", " ", + RowBox[{"d3", "*", "n3"}]}], " "}]}]}]}], "*)"}], " ", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"omegaLam", "[", + RowBox[{"ns_", ",", "ds_", ",", "uuus_", ",", "www_", ",", "X0_"}], + "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"X", "=", + RowBox[{"Expand", "[", "X0", "]"}]}], ",", "\[IndentingNewLine]", + RowBox[{"m", " ", "=", " ", + RowBox[{"Length", "[", "ns", "]"}]}], ",", "\[IndentingNewLine]", + "vars", ",", "Y", ",", "nds", ",", "ttt", ",", "i"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"vars", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"nds", "=", + RowBox[{"Table", "[", " ", + RowBox[{+ RowBox[{+ RowBox[{"ns", "[", + RowBox[{"[", "i", "]"}], "]"}], "*", + RowBox[{"ds", "[", + RowBox[{"[", "i", "]"}], "]"}]}], ",", " ", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"Y", "=", "X"}], ";", "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "m"}], ",", + RowBox[{"i", "++"}], ",", + RowBox[{"Y", "=", + RowBox[{"omega1", "[", + RowBox[{+ RowBox[{"ns", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", + RowBox[{"ds", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", + RowBox[{"uuus", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", + RowBox[{"vars", "[", + RowBox[{"[", "i", "]"}], "]"}], ",", "Y"}], "]"}]}]}], "]"}], + ";", "\[IndentingNewLine]", + RowBox[{"psiMany", "[", + RowBox[{"nds", ",", "vars", ",", "www", ",", "Y"}], "]"}]}]}], + "\[IndentingNewLine]", "]"}]}]}]}]], "Input",+ CellChangeTimes->{{3.7999058649845*^9, 3.7999058698453217`*^9}, {+ 3.799913868197979*^9, 3.7999139371723003`*^9}, {3.8008792882621317`*^9, + 3.8008792885238028`*^9}, {3.80113759876646*^9, 3.801137620241535*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[BoxData[+ RowBox[{+ RowBox[{"(*", " ", + RowBox[{"===", " ", + RowBox[{"EQUIVARIANT", " ", "CSM", " ", "CLASS"}], " ", "==="}], " ", + "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"uus", "[", "n_", "]"}], ":=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"uu", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"vvs", "[", "n_", "]"}], ":=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"vv", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "n"}], "}"}]}], "]"}]}], + "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"total", " ", "chern", " ", "class", " ", "of", " ", + RowBox[{"P", "^", "n"}]}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Clear", "[", "chernPnAB", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"chernPnAB", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"chernPnAB", "[", "n", "]"}], "=", + RowBox[{"normalizeVarAB", "[", + RowBox[{"n", ",", "u", ",", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"Product", "[", + RowBox[{+ RowBox[{"1", "+", "u", "+", + RowBox[{"wt", "[", + RowBox[{"n", ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}], "]"}]}], + "]"}]}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"chernPnABVar", "[", + RowBox[{"n_", ",", "uuu_"}], "]"}], ":=", + RowBox[{+ RowBox[{"chernPnAB", "[", "n", "]"}], "/.", + RowBox[{"{", + RowBox[{"u", "\[Rule]", "uuu"}], "}"}]}]}]}]}]], "Input",+ CellChangeTimes->{{3.7999058758298073`*^9, 3.799905884427569*^9}, {+ 3.801137947291946*^9, 3.801137966294516*^9}}],++Cell[BoxData[{+ RowBox[{+ RowBox[{+ RowBox[{"EmptyPartQ", "[", "part_", "]"}], ":=", + RowBox[{+ RowBox[{"Length", "[", "part", "]"}], "\[Equal]", "0"}]}], + "\n"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"DualPart", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{"{", "}"}]}], "\n", + RowBox[{+ RowBox[{+ RowBox[{"DualPart", "[", "lam_", "]"}], ":=", + RowBox[{"With", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"m", "=", + RowBox[{"lam", "[", + RowBox[{"[", "1", "]"}], "]"}]}], "}"}], ",", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Length", "[", + RowBox[{"Select", "[", + RowBox[{"lam", ",", + RowBox[{+ RowBox[{"#", "\[GreaterEqual]", "i"}], "&"}]}], "]"}], "]"}], ",", + + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]", " "}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"toExpoForm", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{"{", "}"}]}], " "}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"toExpoForm", "[", "part_", "]"}], ":=", + RowBox[{"Module", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"k", "=", + RowBox[{"Max", "[", "part", "]"}]}], "}"}], ",", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"Length", "[", + RowBox[{"Select", "[", + RowBox[{"part", ",", + RowBox[{+ RowBox[{"#", "\[Equal]", "j"}], "&"}]}], "]"}], "]"}], ",", + RowBox[{"{", + RowBox[{"j", ",", "1", ",", "k"}], "}"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"posVectorQ", "[", "as_", "]"}], ":=", + RowBox[{+ RowBox[{"Map", "[", + RowBox[{+ RowBox[{+ RowBox[{"#", "\[GreaterEqual]", "0"}], "&"}], ",", "as"}], "]"}], "/.", + RowBox[{"{", + RowBox[{"List", "\[Rule]", "And"}], "}"}]}]}], + ";"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"kdeTriples", "[", + RowBox[{"p_", ",", "ns_"}], "]"}], ":=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"m", " ", "=", " ", + RowBox[{"Length", "[", "ns", "]"}]}], ",", "\[IndentingNewLine]", + "posQ", ",", "oneK", ",", "A"}], "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{+ RowBox[{"oneK", "[", "k_", "]"}], ":=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"{", + RowBox[{"k", ",", + RowBox[{"ns", "-", "es"}], ",", "es"}], "}"}], ",", + RowBox[{"{", + RowBox[{"es", ",", + RowBox[{"Combinatorica`Compositions", "[", + RowBox[{+ RowBox[{"p", "-", "k"}], ",", "m"}], "]"}]}], "}"}]}], "]"}]}], + ";", "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"Table", " ", "[", + RowBox[{+ RowBox[{"oneK", "[", "k", "]"}], ",", + RowBox[{"{", + RowBox[{"k", ",", "0", ",", + RowBox[{"p", "-", "1"}]}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Flatten", "[", + RowBox[{"A", ",", "1"}], "]"}], ",", + RowBox[{+ RowBox[{"posVectorQ", "[", + RowBox[{"Snd", "[", "#", "]"}], "]"}], "&"}]}], "]"}]}], ";", + "\[IndentingNewLine]", "A"}]}], "]"}]}], "\[IndentingNewLine]"}], "Input",\++ CellChangeTimes->{{3.799903570801889*^9, 3.799903621715088*^9}, {+ 3.801138022561639*^9, 3.80113802310922*^9}}],++Cell[BoxData[+ RowBox[{"\[IndentingNewLine]", + RowBox[{+ RowBox[{"Clear", "[", + RowBox[{+ "csmXLam", ",", "csmDisj1", ",", "csmDisj", ",", "csmDisjSorted"}], "]"}],+ "\[IndentingNewLine]", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmXLam", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"csmXLam", "[", + RowBox[{"{", "}"}], "]"}], "=", "1"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmXLam", "[", + RowBox[{"{", "1", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"csmXLam", "[", + RowBox[{"{", "1", "}"}], "]"}], "=", + RowBox[{"chernPnAB", "[", "1", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisj1", "[", "0", "]"}], ":=", + RowBox[{+ RowBox[{"csmDisj1", "[", "0", "]"}], "=", "1"}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisj1", "[", "1", "]"}], ":=", + RowBox[{+ RowBox[{"csmDisj1", "[", "1", "]"}], "=", + RowBox[{"chernPnAB", "[", "1", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisj", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"csmDisj", "[", + RowBox[{"{", "}"}], "]"}], "=", "1"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisjSorted", "[", + RowBox[{"{", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"csmDisjSorted", "[", + RowBox[{"{", "}"}], "]"}], "=", "1"}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"equiv", " ", "CSM", " ", "of", " ", "D", + RowBox[{"(", "n", ")"}]}], " ", "*)"}], "\n", + RowBox[{+ RowBox[{"csmDisj1", "[", "n_", "]"}], ":=", + RowBox[{+ RowBox[{"csmDisj1", "[", "n", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{"parts", "=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Combinatorica`Partitions", "[", "n", "]"}], ",", + RowBox[{+ RowBox[{+ RowBox[{"Length", "[", "#", "]"}], "<", "n"}], "&"}]}], "]"}]}], + "}"}], ",", "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{+ RowBox[{"chernPnAB", "[", "n", "]"}], "-", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{"csmXLam", "[", "p", "]"}], ",", + RowBox[{"{", + RowBox[{"p", ",", "parts"}], "}"}]}], "]"}]}], "]"}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "\n", + RowBox[{"(*", " ", + RowBox[{"equiv", " ", "CSM", " ", "of", " ", "X_lambda"}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmXLam", "[", "lambda_", "]"}], ":=", + RowBox[{+ RowBox[{"csmXLam", "[", "lambda", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"es", " ", "=", " ", + RowBox[{"toExpoForm", "[", "lambda", "]"}]}], ",", "m", ",", "m1", + ",", "ns", ",", "pairs", ",", "X"}], "}"}], ",", + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Length", "[", "es", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"ns", " ", "=", " ", + RowBox[{"Range", "[", "m", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"pairs", " ", "=", " ", + RowBox[{"Zip", "[", + RowBox[{"ns", ",", "es"}], "]"}]}], ";", " ", + RowBox[{"(*", " ", + RowBox[{"i", "^", "e_"}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"pairs", " ", "=", " ", + RowBox[{"Select", "[", + RowBox[{"pairs", ",", + RowBox[{+ RowBox[{+ RowBox[{"Snd", "[", "#", "]"}], ">", "0"}], "&"}]}], "]"}]}], + ";", " ", + RowBox[{"(*", " ", + RowBox[{"!!", "!"}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"m1", " ", "=", " ", + RowBox[{"Length", "[", "pairs", "]"}]}], ";", "\[IndentingNewLine]", + + RowBox[{"ns", " ", "=", + RowBox[{"Map", "[", + RowBox[{"Fst", ",", "pairs"}], "]"}]}], ";", "\[IndentingNewLine]", + + RowBox[{"es", " ", "=", + RowBox[{"Map", "[", + RowBox[{"Snd", ",", "pairs"}], "]"}]}], ";", "\[IndentingNewLine]", + + RowBox[{"X", "=", + RowBox[{"csmDisj", "[", "es", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{"\"\<xlam1 - \>\"", ",", "pairs"}], "]"}], ";", + "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{+ "\"\<xlam2 - \>\"", ",", "es", ",", "\"\< | \>\"", ",", "ns", ",", + "\"\< | \>\"", ",", + RowBox[{"uus", "[", "m1", "]"}], ",", "\"\< | \>\"", ",", "X"}], + "]"}], ";"}], " ", "*)"}], "\[IndentingNewLine]", + RowBox[{"Expand", "[", + RowBox[{"omegaLam", "[", + RowBox[{"es", ",", "ns", ",", + RowBox[{"uus", "[", "m1", "]"}], ",", "u", ",", "X"}], "]"}], + "]"}]}]}], "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{"equiv", " ", "CSM", " ", "of", " ", "D", + RowBox[{"(", + RowBox[{"d1", ",", "d2", ",", "..."}], ")"}]}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisj", "[", + RowBox[{"{", "n_", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"csmDisj", "[", + RowBox[{"{", "n", "}"}], "]"}], " ", "=", " ", + RowBox[{+ RowBox[{"csmDisj1", "[", "n", "]"}], "/.", + RowBox[{"{", + RowBox[{"u", "\[Rule]", + RowBox[{"uu", "[", "1", "]"}]}], "}"}]}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisj", "[", "ns0_", "]"}], ":=", + RowBox[{+ RowBox[{"csmDisj", "[", "ns0", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Length", "[", "ns0", "]"}]}], ",", "\[IndentingNewLine]", + "nis0", ",", "nis1", ",", "ns1", ",", "idxs", ",", "X", ",", "ttt"}],+ "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"nis0", " ", "=", + RowBox[{"Zip", "[", + RowBox[{"ns0", ",", + RowBox[{"Range", "[", "m", "]"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"nis1", "=", + RowBox[{"SortBy", "[", + RowBox[{"nis0", ",", + RowBox[{+ RowBox[{"-", + RowBox[{"Fst", "[", "#", "]"}]}], "&"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"idxs", "=", + RowBox[{"Map", "[", + RowBox[{"Snd", ",", "nis1"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"ns1", " ", "=", + RowBox[{"Select", "[", + RowBox[{+ RowBox[{"Map", "[", + RowBox[{"Fst", ",", "nis1"}], "]"}], ",", + RowBox[{+ RowBox[{"#", ">", "0"}], "&"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{+ "\"\<nis1 - \>\"", ",", "nis0", ",", "\"\< | \>\"", ",", "nis1"}], + "]"}], ";", "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{"\"\<nis2 - \>\"", ",", "ns1"}], "]"}], ";"}], " ", "*)"}],+ "\[IndentingNewLine]", + RowBox[{"X", "=", + RowBox[{"csmDisjSorted", "[", "ns1", "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"X", "=", + RowBox[{"X", "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"uu", "[", "i", "]"}], "\[Rule]", + RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"X", "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"Subscript", "[", + RowBox[{"ttt", ",", "i"}], "]"}], "\[Rule]", + RowBox[{"uu", "[", + RowBox[{+ "idxs", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}], + "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}]}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ "a", " ", "single", " ", "term", " ", "corresponding", " ", "to", " ", + "a", " ", "triple", " ", + RowBox[{"(", + RowBox[{"k", ",", "ds", ",", "es"}], ")"}]}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{"Clear", "[", "singleKDE", "]"}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"singleKDE", "[", + RowBox[{"{", + RowBox[{"k_", ",", "ds_", ",", "es_"}], "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"singleKDE", "[", + RowBox[{"{", + RowBox[{"k", ",", "ds", ",", "es"}], "}"}], "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ "A", ",", "B", ",", "\[IndentingNewLine]", "m", ",", "vars", ",", + "dims", ",", "\[IndentingNewLine]", "pp", ",", "qq", ",", "rr", ",", + "ss", ",", "\[IndentingNewLine]", "pps", ",", "qqs", ",", "rrs", ",",+ "sss"}], "\[IndentingNewLine]", "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"m", "=", + RowBox[{"Length", "[", "ds", "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"pp", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"pp$p", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"qq", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"qq$q", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"rr", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"rr$r", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"ss", "[", "i_", "]"}], ":=", + RowBox[{"Subscript", "[", + RowBox[{"ss$s", ",", "i"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"pps", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"pp", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"qqs", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"qq", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"rrs", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"rr", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"sss", "=", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{"ss", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", "m"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"vars", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "zzz", "}"}], ",", "pps", ",", "qqs"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"dims", "=", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "k", "}"}], ",", "ds", ",", "es"}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{+ RowBox[{"csmDisj", "[", "dims", "]"}], "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"uu", "[", "i", "]"}], "\[Rule]", + RowBox[{+ "vars", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}]}],+ ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", + RowBox[{+ RowBox[{"2", "m"}], "+", "1"}]}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", "A"}], ";", "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "m"}], ",", + RowBox[{"i", "++"}], ",", + RowBox[{"B", "=", + RowBox[{"Expand", "[", + RowBox[{"delta2", "[", + RowBox[{+ RowBox[{+ "es", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}], + ",", + RowBox[{"qq", "[", "i", "]"}], ",", + RowBox[{"{", + RowBox[{+ RowBox[{"rr", "[", "i", "]"}], ",", + RowBox[{"ss", "[", "i", "]"}]}], "}"}], ",", "B"}], "]"}], + "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", + RowBox[{"For", "[", + RowBox[{+ RowBox[{"i", "=", "1"}], ",", + RowBox[{"i", "\[LessEqual]", "m"}], ",", + RowBox[{"i", "++"}], ",", + RowBox[{"B", "=", + RowBox[{"Expand", "[", + RowBox[{"psi2", "[", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{+ "ds", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}], + ",", + RowBox[{+ "es", "\[LeftDoubleBracket]", "i", + "\[RightDoubleBracket]"}]}], "}"}], ",", + RowBox[{"{", + RowBox[{+ RowBox[{"pp", "[", "i", "]"}], ",", + RowBox[{"ss", "[", "i", "]"}]}], "}"}], ",", + RowBox[{"uu", "[", "i", "]"}], ",", "B"}], "]"}], "]"}]}]}], + "]"}], ";", "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"psiMany", "[", + RowBox[{+ RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "k", "}"}], ",", "es"}], "]"}], ",", + RowBox[{"Join", "[", + RowBox[{+ RowBox[{"{", "zzz", "}"}], ",", "rrs"}], "]"}], ",", "z", ",", + "B"}], "]"}]}], ";", "\[IndentingNewLine]", "B"}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", + "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"equiv", " ", "CSM", " ", "of", " ", "D", + RowBox[{"(", + RowBox[{"d1", ",", "d2", ",", "..."}], ")"}]}], ",", " ", + RowBox[{+ RowBox[{+ RowBox[{+ RowBox[{"but", " ", "we", " ", "require", " ", "d1"}], + "\[GreaterEqual]", "d2", "\[GreaterEqual]", "d3", "\[GreaterEqual]"}],+ "..."}], "\[GreaterEqual]", "dn", ">", "0"}]}], " ", "*)"}], + "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisjSorted", "[", + RowBox[{"{", "n_", "}"}], "]"}], ":=", + RowBox[{+ RowBox[{"csmDisjSorted", "[", + RowBox[{"{", "n", "}"}], "]"}], "=", + RowBox[{+ RowBox[{"csmDisj1", "[", "n", "]"}], "/.", + RowBox[{"{", + RowBox[{"u", "\[Rule]", + RowBox[{"uu", "[", "1", "]"}]}], "}"}]}]}]}], "\[IndentingNewLine]", + RowBox[{+ RowBox[{"csmDisjSorted", "[", "pns_", "]"}], ":=", + RowBox[{+ RowBox[{"csmDisjSorted", "[", "pns", "]"}], "=", + RowBox[{"Module", "[", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"{", + RowBox[{+ RowBox[{"p", "=", + RowBox[{+ "pns", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]}], + ",", "\[IndentingNewLine]", + RowBox[{"ns", "=", + RowBox[{"Drop", "[", + RowBox[{"pns", ",", "1"}], "]"}]}], ",", "\[IndentingNewLine]", + "A", ",", "B", ",", "rest", ",", "\[IndentingNewLine]", "KDE"}], + "\[IndentingNewLine]", "}"}], ",", "\[IndentingNewLine]", + RowBox[{+ RowBox[{"KDE", "=", + RowBox[{"kdeTriples", "[", + RowBox[{"p", ",", "ns"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"(*", " ", + RowBox[{+ RowBox[{"Print", "[", + RowBox[{+ "\"\<sorted1 - \>\"", ",", "p", ",", "\"\< | \>\"", ",", "ns"}], + "]"}], ";", "\[IndentingNewLine]", + RowBox[{"Print", "[", + RowBox[{"\"\<sorted2 - \>\"", ",", "KDE"}], "]"}], ";"}], " ", + "*)"}], "\[IndentingNewLine]", + RowBox[{"A", "=", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"csmDisj1", "[", "p", "]"}], "/.", + RowBox[{"{", + RowBox[{"u", "\[Rule]", "z"}], "}"}]}], ")"}], "*", + RowBox[{"csmDisj", "[", "ns", "]"}]}]}], ";", "\[IndentingNewLine]", + RowBox[{"rest", "=", + RowBox[{"Sum", "[", + RowBox[{+ RowBox[{"singleKDE", "[", "kde", "]"}], ",", + RowBox[{"{", + RowBox[{"kde", ",", "KDE"}], "}"}]}], "]"}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", " ", "=", " ", + RowBox[{"Expand", "[", + RowBox[{"A", "-", "rest"}], "]"}]}], ";", "\[IndentingNewLine]", + RowBox[{"B", " ", "=", + RowBox[{"B", "/.", + RowBox[{"Table", "[", + RowBox[{+ RowBox[{+ RowBox[{"uu", "[", "i", "]"}], "\[Rule]", + RowBox[{"uu", "[", + RowBox[{"i", "+", "1"}], "]"}]}], ",", + RowBox[{"{", + RowBox[{"i", ",", "1", ",", + RowBox[{"Length", "[", "ns", "]"}]}], "}"}]}], "]"}]}]}], ";", + "\[IndentingNewLine]", + RowBox[{"B", "=", + RowBox[{"B", "/.", + RowBox[{"{", + RowBox[{"z", "\[Rule]", + RowBox[{"uu", "[", "1", "]"}]}], "}"}]}]}]}]}], + "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]"}]}]], "Input",+ CellChangeTimes->{{3.799904396615363*^9, 3.799904406889674*^9}, + 3.7999044864107447`*^9, {3.799904522981793*^9, 3.799904542217388*^9}, {+ 3.799905368188403*^9, 3.799905440526905*^9}, {3.799910778489602*^9, + 3.799910789411199*^9}, {3.7999114574287767`*^9, 3.7999114795107517`*^9}, {+ 3.7999117495827513`*^9, 3.799911793714377*^9}, {3.7999118288998423`*^9, + 3.799911896725374*^9}, {3.799912109841093*^9, 3.7999121125284853`*^9}, {+ 3.7999125865497513`*^9, 3.7999126172056303`*^9}, 3.79991266733438*^9, {+ 3.799912899384604*^9, 3.7999129587478647`*^9}, {3.7999130239335003`*^9, + 3.79991307814552*^9}, {3.799914094737917*^9, 3.799914115471753*^9}, {+ 3.801080167288307*^9, 3.801080168489579*^9}}],++Cell[" ", "Text",+ Editable->False,+ Selectable->False,+ CellFrame->{{0, 0}, {0, 2}},+ ShowCellBracket->False,+ CellMargins->{{0, 0}, {1, 1}},+ CellElementSpacings->{"CellMinHeight"->1},+ CellFrameMargins->0,+ CellFrameColor->RGBColor[0, 0, 1],+ CellSize->{Inherited, 4}],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"hs2mat", "=", + RowBox[{"{", + RowBox[{+ RowBox[{"g", "\[Rule]", "u"}], ",", + RowBox[{"a", "\[Rule]", "\[Alpha]"}], ",", + RowBox[{"b", "\[Rule]", "\[Beta]"}]}], "}"}]}]], "Input",+ CellChangeTimes->{{3.799912245620652*^9, 3.799912259016245*^9}}],++Cell[BoxData[+ RowBox[{"{", + RowBox[{+ RowBox[{"g", "\[Rule]", "u"}], ",", + RowBox[{"a", "\[Rule]", "\[Alpha]"}], ",", + RowBox[{"b", "\[Rule]", "\[Beta]"}]}], "}"}]], "Output",+ CellChangeTimes->{3.799912260023808*^9, 3.7999140879900007`*^9, + 3.8010801719598103`*^9, 3.801138036574416*^9}]+}, Open ]],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"csmXLam", "[", + RowBox[{"{", + RowBox[{"2", ",", "2", ",", "1", ",", "1"}], "}"}], "]"}]], "Input",+ CellChangeTimes->{{3.801080172892398*^9, 3.801080178385489*^9}}],++Cell[BoxData[+ RowBox[{+ RowBox[{"24", " ", + SuperscriptBox["u", "2"]}], "-", + RowBox[{"18", " ", + SuperscriptBox["u", "3"]}], "+", + RowBox[{"144", " ", "u", " ", "\[Alpha]"}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", "\[Alpha]"}], "+", + RowBox[{"180", " ", + SuperscriptBox["\[Alpha]", "2"]}], "-", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Alpha]", "2"]}], "-", + RowBox[{"24", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Alpha]", "2"]}], "+", + RowBox[{"18", " ", + SuperscriptBox["u", "3"], " ", + SuperscriptBox["\[Alpha]", "2"]}], "-", + RowBox[{"360", " ", + SuperscriptBox["\[Alpha]", "3"]}], "-", + RowBox[{"144", " ", "u", " ", + SuperscriptBox["\[Alpha]", "3"]}], "+", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Alpha]", "3"]}], "-", + RowBox[{"180", " ", + SuperscriptBox["\[Alpha]", "4"]}], "+", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Alpha]", "4"]}], "+", + RowBox[{"360", " ", + SuperscriptBox["\[Alpha]", "5"]}], "+", + RowBox[{"144", " ", "u", " ", "\[Beta]"}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", "\[Beta]"}], "+", + RowBox[{"504", " ", "\[Alpha]", " ", "\[Beta]"}], "-", + RowBox[{"1056", " ", "u", " ", "\[Alpha]", " ", "\[Beta]"}], "+", + RowBox[{"48", " ", + SuperscriptBox["u", "2"], " ", "\[Alpha]", " ", "\[Beta]"}], "-", + RowBox[{"36", " ", + SuperscriptBox["u", "3"], " ", "\[Alpha]", " ", "\[Beta]"}], "-", + RowBox[{"1584", " ", + SuperscriptBox["\[Alpha]", "2"], " ", "\[Beta]"}], "+", + RowBox[{"144", " ", "u", " ", + SuperscriptBox["\[Alpha]", "2"], " ", "\[Beta]"}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Alpha]", "2"], " ", "\[Beta]"}], "-", + RowBox[{"144", " ", + SuperscriptBox["\[Alpha]", "3"], " ", "\[Beta]"}], "+", + RowBox[{"168", " ", "u", " ", + SuperscriptBox["\[Alpha]", "3"], " ", "\[Beta]"}], "+", + RowBox[{"864", " ", + SuperscriptBox["\[Alpha]", "4"], " ", "\[Beta]"}], "+", + RowBox[{"180", " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"24", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Beta]", "2"]}], "+", + RowBox[{"18", " ", + SuperscriptBox["u", "3"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"1584", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "2"]}], "+", + RowBox[{"144", " ", "u", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "2"]}], "+", + RowBox[{"648", " ", + SuperscriptBox["\[Alpha]", "2"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"1224", " ", "u", " ", + SuperscriptBox["\[Alpha]", "2"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"1224", " ", + SuperscriptBox["\[Alpha]", "3"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"360", " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"144", " ", "u", " ", + SuperscriptBox["\[Beta]", "3"]}], "+", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"144", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "3"]}], "+", + RowBox[{"168", " ", "u", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"1224", " ", + SuperscriptBox["\[Alpha]", "2"], " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"180", " ", + SuperscriptBox["\[Beta]", "4"]}], "+", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Beta]", "4"]}], "+", + RowBox[{"864", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "4"]}], "+", + RowBox[{"360", " ", + SuperscriptBox["\[Beta]", "5"]}]}]], "Output",+ CellChangeTimes->{3.801080178836585*^9, 3.801138037480577*^9}]+}, Open ]],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"ref2211", "=", + RowBox[{+ RowBox[{"(", + RowBox[{+ RowBox[{"180", "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"360", "*", + RowBox[{"b", "^", "3"}]}], "-", + RowBox[{"180", "*", + RowBox[{"b", "^", "4"}]}], "+", + RowBox[{"360", "*", + RowBox[{"b", "^", "5"}]}], "+", + RowBox[{"504", "*", "a", "*", "b"}], "-", + RowBox[{"1584", "*", "a", "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"144", "*", "a", "*", + RowBox[{"b", "^", "3"}]}], "+", + RowBox[{"864", "*", "a", "*", + RowBox[{"b", "^", "4"}]}], "+", + RowBox[{"180", "*", + RowBox[{"a", "^", "2"}]}], "-", + RowBox[{"1584", "*", + RowBox[{"a", "^", "2"}], "*", "b"}], "+", + RowBox[{"648", "*", + RowBox[{"a", "^", "2"}], "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"1224", "*", + RowBox[{"a", "^", "2"}], "*", + RowBox[{"b", "^", "3"}]}], "-", + RowBox[{"360", "*", + RowBox[{"a", "^", "3"}]}], "-", + RowBox[{"144", "*", + RowBox[{"a", "^", "3"}], "*", "b"}], "-", + RowBox[{"1224", "*", + RowBox[{"a", "^", "3"}], "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"180", "*", + RowBox[{"a", "^", "4"}]}], "+", + RowBox[{"864", "*", + RowBox[{"a", "^", "4"}], "*", "b"}], "+", + RowBox[{"360", "*", + RowBox[{"a", "^", "5"}]}], "+", + RowBox[{"144", "*", + RowBox[{"g", "^", "1"}], "*", "b"}], "-", + RowBox[{"444", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"144", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"b", "^", "3"}]}], "+", + RowBox[{"444", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"b", "^", "4"}]}], "+", + RowBox[{"144", "*", + RowBox[{"g", "^", "1"}], "*", "a"}], "-", + RowBox[{"1056", "*", + RowBox[{"g", "^", "1"}], "*", "a", "*", "b"}], "+", + RowBox[{"144", "*", + RowBox[{"g", "^", "1"}], "*", "a", "*", + RowBox[{"b", "^", "2"}]}], "+", + RowBox[{"168", "*", + RowBox[{"g", "^", "1"}], "*", "a", "*", + RowBox[{"b", "^", "3"}]}], "-", + RowBox[{"444", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"a", "^", "2"}]}], "+", + RowBox[{"144", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"a", "^", "2"}], "*", "b"}], "-", + RowBox[{"1224", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"a", "^", "2"}], "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"144", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"a", "^", "3"}]}], "+", + RowBox[{"168", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"a", "^", "3"}], "*", "b"}], "+", + RowBox[{"444", "*", + RowBox[{"g", "^", "1"}], "*", + RowBox[{"a", "^", "4"}]}], "+", + RowBox[{"24", "*", + RowBox[{"g", "^", "2"}]}], "-", + RowBox[{"162", "*", + RowBox[{"g", "^", "2"}], "*", "b"}], "-", + RowBox[{"24", "*", + RowBox[{"g", "^", "2"}], "*", + RowBox[{"b", "^", "2"}]}], "+", + RowBox[{"162", "*", + RowBox[{"g", "^", "2"}], "*", + RowBox[{"b", "^", "3"}]}], "-", + RowBox[{"162", "*", + RowBox[{"g", "^", "2"}], "*", "a"}], "+", + RowBox[{"48", "*", + RowBox[{"g", "^", "2"}], "*", "a", "*", "b"}], "-", + RowBox[{"162", "*", + RowBox[{"g", "^", "2"}], "*", "a", "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"24", "*", + RowBox[{"g", "^", "2"}], "*", + RowBox[{"a", "^", "2"}]}], "-", + RowBox[{"162", "*", + RowBox[{"g", "^", "2"}], "*", + RowBox[{"a", "^", "2"}], "*", "b"}], "+", + RowBox[{"162", "*", + RowBox[{"g", "^", "2"}], "*", + RowBox[{"a", "^", "3"}]}], "-", + RowBox[{"18", "*", + RowBox[{"g", "^", "3"}]}], "+", + RowBox[{"18", "*", + RowBox[{"g", "^", "3"}], "*", + RowBox[{"b", "^", "2"}]}], "-", + RowBox[{"36", "*", + RowBox[{"g", "^", "3"}], "*", "a", "*", "b"}], "+", + RowBox[{"18", "*", + RowBox[{"g", "^", "3"}], "*", + RowBox[{"a", "^", "2"}]}]}], ")"}], "/.", "hs2mat"}]}]], "Input",+ CellChangeTimes->{{3.801080194677876*^9, 3.801080214599786*^9}}],++Cell[BoxData[+ RowBox[{+ RowBox[{"24", " ", + SuperscriptBox["u", "2"]}], "-", + RowBox[{"18", " ", + SuperscriptBox["u", "3"]}], "+", + RowBox[{"144", " ", "u", " ", "\[Alpha]"}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", "\[Alpha]"}], "+", + RowBox[{"180", " ", + SuperscriptBox["\[Alpha]", "2"]}], "-", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Alpha]", "2"]}], "-", + RowBox[{"24", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Alpha]", "2"]}], "+", + RowBox[{"18", " ", + SuperscriptBox["u", "3"], " ", + SuperscriptBox["\[Alpha]", "2"]}], "-", + RowBox[{"360", " ", + SuperscriptBox["\[Alpha]", "3"]}], "-", + RowBox[{"144", " ", "u", " ", + SuperscriptBox["\[Alpha]", "3"]}], "+", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Alpha]", "3"]}], "-", + RowBox[{"180", " ", + SuperscriptBox["\[Alpha]", "4"]}], "+", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Alpha]", "4"]}], "+", + RowBox[{"360", " ", + SuperscriptBox["\[Alpha]", "5"]}], "+", + RowBox[{"144", " ", "u", " ", "\[Beta]"}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", "\[Beta]"}], "+", + RowBox[{"504", " ", "\[Alpha]", " ", "\[Beta]"}], "-", + RowBox[{"1056", " ", "u", " ", "\[Alpha]", " ", "\[Beta]"}], "+", + RowBox[{"48", " ", + SuperscriptBox["u", "2"], " ", "\[Alpha]", " ", "\[Beta]"}], "-", + RowBox[{"36", " ", + SuperscriptBox["u", "3"], " ", "\[Alpha]", " ", "\[Beta]"}], "-", + RowBox[{"1584", " ", + SuperscriptBox["\[Alpha]", "2"], " ", "\[Beta]"}], "+", + RowBox[{"144", " ", "u", " ", + SuperscriptBox["\[Alpha]", "2"], " ", "\[Beta]"}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Alpha]", "2"], " ", "\[Beta]"}], "-", + RowBox[{"144", " ", + SuperscriptBox["\[Alpha]", "3"], " ", "\[Beta]"}], "+", + RowBox[{"168", " ", "u", " ", + SuperscriptBox["\[Alpha]", "3"], " ", "\[Beta]"}], "+", + RowBox[{"864", " ", + SuperscriptBox["\[Alpha]", "4"], " ", "\[Beta]"}], "+", + RowBox[{"180", " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"24", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Beta]", "2"]}], "+", + RowBox[{"18", " ", + SuperscriptBox["u", "3"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"1584", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "2"]}], "+", + RowBox[{"144", " ", "u", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "2"]}], "+", + RowBox[{"648", " ", + SuperscriptBox["\[Alpha]", "2"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"1224", " ", "u", " ", + SuperscriptBox["\[Alpha]", "2"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"1224", " ", + SuperscriptBox["\[Alpha]", "3"], " ", + SuperscriptBox["\[Beta]", "2"]}], "-", + RowBox[{"360", " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"144", " ", "u", " ", + SuperscriptBox["\[Beta]", "3"]}], "+", + RowBox[{"162", " ", + SuperscriptBox["u", "2"], " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"144", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "3"]}], "+", + RowBox[{"168", " ", "u", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"1224", " ", + SuperscriptBox["\[Alpha]", "2"], " ", + SuperscriptBox["\[Beta]", "3"]}], "-", + RowBox[{"180", " ", + SuperscriptBox["\[Beta]", "4"]}], "+", + RowBox[{"444", " ", "u", " ", + SuperscriptBox["\[Beta]", "4"]}], "+", + RowBox[{"864", " ", "\[Alpha]", " ", + SuperscriptBox["\[Beta]", "4"]}], "+", + RowBox[{"360", " ", + SuperscriptBox["\[Beta]", "5"]}]}]], "Output",+ CellChangeTimes->{3.8010802149214277`*^9, 3.8011380407777863`*^9}]+}, Open ]],++Cell[CellGroupData[{++Cell[BoxData[+ RowBox[{"ref2211", "-", + RowBox[{"csmXLam", "[", + RowBox[{"{", + RowBox[{"2", ",", "2", ",", "1", ",", "1"}], "}"}], "]"}]}]], "Input",+ CellChangeTimes->{{3.801138043577608*^9, 3.80113805412545*^9}}],++Cell[BoxData["0"], "Output",+ CellChangeTimes->{3.801138054701275*^9}]+}, Open ]]+},+WindowSize->{740, 655},+WindowMargins->{{12, Automatic}, {Automatic, 24}},+FrontEndVersion->"9.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (November 20, \+2012)",+StyleDefinitions->"Default.nb"+]+(* End of Notebook Content *)++(* Internal cache information *)+(*CellTagsOutline+CellTagsIndex->{}+*)+(*CellTagsIndex+CellTagsIndex->{}+*)+(*NotebookFileOutline+Notebook[{+Cell[CellGroupData[{+Cell[579, 22, 3405, 92, 369, "Input"],+Cell[3987, 116, 470, 10, 58, "Message"]+}, Open ]],+Cell[4472, 129, 273, 9, 5, "Text"],+Cell[4748, 140, 5089, 136, 488, "Input"],+Cell[9840, 278, 271, 9, 8, "Text"],+Cell[10114, 289, 6112, 160, 454, "Input"],+Cell[16229, 451, 271, 9, 8, "Text"],+Cell[16503, 462, 4631, 120, 369, "Input"],+Cell[21137, 584, 273, 9, 5, "Text"],+Cell[21413, 595, 3740, 95, 335, "Input"],+Cell[25156, 692, 271, 9, 8, "Text"],+Cell[25430, 703, 6312, 165, 386, "Input"],+Cell[31745, 870, 273, 9, 5, "Text"],+Cell[32021, 881, 8347, 219, 658, "Input"],+Cell[40371, 1102, 271, 9, 8, "Text"],+Cell[40645, 1113, 1899, 50, 199, "Input"],+Cell[42547, 1165, 3558, 108, 335, "Input"],+Cell[46108, 1275, 18692, 473, 1661, "Input"],+Cell[64803, 1750, 271, 9, 8, "Text"],+Cell[CellGroupData[{+Cell[65099, 1763, 283, 7, 28, "Input"],+Cell[65385, 1772, 301, 7, 28, "Output"]+}, Open ]],+Cell[CellGroupData[{+Cell[65723, 1784, 193, 4, 28, "Input"],+Cell[65919, 1790, 3928, 102, 128, "Output"]+}, Open ]],+Cell[CellGroupData[{+Cell[69884, 1897, 4221, 119, 199, "Input"],+Cell[74108, 2018, 3932, 102, 128, "Output"]+}, Open ]],+Cell[CellGroupData[{+Cell[78077, 2125, 223, 5, 28, "Input"],+Cell[78303, 2132, 70, 1, 62, "Output"]+}, Open ]]+}+]+*)++(* End of internal cache information *)
+ mathematica/equivariant_CSM_via_motivic.src view
@@ -0,0 +1,372 @@++(* ==== COMPUTE THR EQUIVARIANT CHERN-SCHWARTZ-MACPHERSON + CLASS OF COINCIDENT ROOT LOCI VIA THE MOTIVIC ALGORITHM ==== *)++<< Combinatorica`++(* convention: u = -c_1(L) where L is the tautological line bundle on P^n *)++uu[i_] := Subscript[u, i]+vv[i_] := Subscript[u, i]+ww[i_] := Subscript[u, i]++(* only works for lists of equal length!! *)+Zip[as_, bs_] := MapThread[{#1, #2} &, {as, bs}]+Zip3[as_, bs_, cs_] := MapThread[{#1, #2, #3} &, {as, bs, cs}]++Fst[pair_] := pair[[1]]+Snd[pair_] := pair[[2]]++extendListWithZeros[L_, n_] := Join[L, Table[0, {i, 1, n - Length[L]}]]++SumList[L_] := Sum[x, {x, L}]++(* === EQUIVARIANT COHOMOLOGY RING OF P^n === *)++(* Weights of Sym^n C^2 *)+wt[n_, i_] := (n - i)*\[Alpha] + i*\[Beta]++(* the relation in H^*(P^n). Convention: +u = -c1(L) where L is the tautological line bundle *)++rel[n_] := Product[u + wt[n, i], {i, 0, n}]++Clear[upow$nplus1]+upow$nplus1[n_] := upow$nplus1[n] = Expand[u^(n + 1) - rel[n]]+(* (unefficiently) normalize a /polynomial/ in u *) ++Clear[normalizeSlow]+normalizeSlow[n_, X0_] := Module[{X = Expand[X0], m},+ m = Exponent[X, u];+ If[m <= n, X, normalizeSlow[n, X /. {u^m -> u^(m - n - 1)*upow$nplus1[n]}]]+ ]++(* table of normalized powers of u *)+Clear[UPowAB]+UPowAB[n_, k_] := UPowAB[n, k] = Expand[normalizeSlow[n, u^k]]++Clear[normalizeVarAB]+normalizeVarAB[n_, uuu_, X_] := Module[+ {m = Exponent[X, uuu]},+ Expand[Sum[Coefficient[X, uuu, k]*(UPowAB[n, k] /. {u -> uuu}), {k, 0, m}]]+ ]++(* === pushforward along the multiplication (single monom) === *)++(* Psi_* (u^k * v^l) = ? cohomology indexing *)+Clear[psiStarAB]+psiStarAB[n_, m_, 0, 0] := psiStarAB[n, m, 0, 0] = Binomial[n + m, n]+psiStarAB[n_, m_, k_, l_] := psiStarAB[n, m, k, l] = Module[+ {A, B, AB, F, R, IJ, sel, fun, cft},+ A = Product[u + wt[n, i], {i, 0, k - 1}];+ B = Product[v + wt[m, j], {j, 0, l - 1}];+ AB = Expand[A*B];+ sel[{i_, j_}] := (i < k) || (j < l);+ cft[{i_, j_}] := Coefficient[Coefficient[AB, u, i], v, j];+ fun[{i_, j_}] := psiStarAB[n, m, i, j];+ IJ = Flatten[Table[{i, j}, {i, 0, k}, {j, 0, l}], 1];+ IJ = Select[ IJ, sel];+ (* Print[IJ];+ Print[AB]; *)+ + F = Binomial[n + m - k - l, n - k]*+ Product[w + wt[n + m, i], {i, 0, k + l - 1}];+ R = Sum[ cft[ij]*fun[ij], {ij, IJ}]; + Expand[F - R]+ ]++Clear[psiStarChern]+psiStarChern[n_, m_, k_, l_] := psiStarChern[n, m, k, l] = + SymmetricReduction[psiStarAB[n, m, k, l], {\[Alpha], \[Beta]}, {c, d}][[1]]+++(* === class of the diagonal === *)++notk[n_, k_] := Select[Table[i, {i, 0, n}], # != k &]++(* class of the diagonal in P^n x P^n *)+Clear[deltaClassAB]+deltaClassAB[n_] := deltaClassAB[n] =+ Expand[Factor[+ Sum[ Product[(v + wt[n, i]) (w + wt[n, i])/(wt[n, i] - wt[n, k]), {i, + notk[n, k]}], {k, 0, n}]]]++Clear[deltaClassCh]+deltaClassCh[n_] := deltaClassCh[n] =+ Expand[SymmetricReduction[deltaClassAB[n], {\[Alpha], \[Beta]}, {c, d}][[1]]]++(* small diagonal in P^n x P^n x P^n *)+deltaClassTri[n_] := deltaClassTri[n] =+ Expand[Factor[+ Sum[ Product[(uu[1] + wt[n, i]) (uu[2] + + wt[n, i]) (uu[3] + wt[n, i])/(wt[n, i] - wt[n, k]), {i, + notk[n, k]}], {k, 0, n}]]]++(* === pushforward along the diagonal map (single monom) === *)++(* pushforward of u^k along Delta : P^n -> P^n x P^n *)+Clear[deltaStarAB]+deltaStarAB[n_, 0] := deltaStarAB[n, 0] = deltaClassAB[n]+deltaStarAB[n_, k_] := deltaStarAB[n, k] = Module[+ {prod, Y, preY, Delta, rest},+ Y = Expand[Product[v + wt[n, i], {i, 0, k - 1}]];+ preY = Y /. {v -> u};+ Delta = deltaClassAB[n];+ prod = normalizeVarAB[n, v, Y*Delta];+ rest = Sum[Coefficient[preY, u, i]*deltaStarAB[n, i], {i, 0, k - 1} ];+ Expand[ prod - rest]+ ]++Clear[deltaStarCh]+deltaStarCh[n_] := deltaStarCh[n] =+ Expand[SymmetricReduction[deltaStarAB[n], {\[Alpha], \[Beta]}, {c, d}][[1]]]+++(* === pushforwards for polynomials (not just single monoms) === *)++delta2[n_, uuu_, {vvv_, www_}, X0_] := Module[{X = Expand[X0]},+ Sum[Coefficient[X, uuu, i]*(deltaStarAB[n, i] /. {v -> vvv, w -> www}) , {i,+ 0, n}]+ ]++deltaMany[n_, uuu_, vvvs_, X_] := Module[{ttt},+ If[Length[vvvs] == 1, X /. {uuu -> vvvs[[1]]},+ If[Length[vvvs] == 2, delta2[n, uuu, vvvs, X],+ deltaMany[n, ttt, Drop[vvvs, 1], delta2[n, uuu, {vvvs[[1]], ttt}, X]]]]]++psi2[{n1_, n2_}, {uuu_, vvv_}, www_, X0_] := Module[{X = Expand[X0]},+ Sum[Coefficient[Coefficient[X, uuu, i], vvv, + j]*(psiStarAB[n1, n2, i, j] /. {w -> www}) , {i, 0, n1}, {j, 0, n2}]+ ]++psiMany[ns_, uuus_, www_, X_] := Module[{ttt, vvvs, ms},+ If[Length[uuus] == 1, X /. {uuus[[1]] -> www},+ If[Length[uuus] == 2, psi2[ns, uuus, www, X],+ ms = Join[{ns[[1]] + ns[[2]]}, Drop[ns, 2]];+ vvvs = Join[{ttt}, Drop[uuus, 2]];+ psiMany[ms, vvvs, www, psi2[Take[ns, 2], Take[uuus, 2], ttt, X]]]]]++ +(* === pushforward along the power map === *)++(* compute the pushforward by composing the diagonal with the merging map *)++Clear[slowOmegaAB]+slowOmegaAB[n_, d_, k_] := slowOmegaAB[n, d, k] = Module[+ {vars = Table[Subscript[ttt, i], {i, 1, d}],+ dims = Table[n, {i, 1, d}]},+ Factor[psiMany[dims, vars, u, deltaMany[n, u, vars, u^k]]]+ ]++(* d-th power of u^k : P^n -> P^(n*d) *)+(* NOTE: this formula is valid for k>n too! + you can experimentally check this + by pre-normalizing and post-normalizing *)+Clear[omegaAB]+omegaAB[n_, d_, k_] :=+ Module[+ {idxs = Select[Table[i, {i, 0, n*d}], Not[Divisible[#, d]] &]}+ , u^k*d^(n - k)*Product[u + (n*d - i)*\[Alpha] + i*\[Beta], {i, idxs}]+ ]++(* pushforward along d-th power : P^n -> P^(n*d) *)++omega1[n_, d_, uuu_, www_, X0_] := Module[{X = Expand[X0]},+ Sum[Coefficient[X, uuu, i]*(omegaAB[n, d, i] /. {u -> www}) , {i, 0, n}]+ ]++(* P^n1 x P^n2 x P^n3 -> P^(d1*n1) x P^(d2*n2) x P^(d3*n3) -> P^(d1*n1 + \+d2*n2 + d3*n3 *) +omegaLam[ns_, ds_, uuus_, www_, X0_] := Module[+ {X = Expand[X0],+ m = Length[ns],+ vars, Y, nds, ttt, i},+ vars = Table[Subscript[ttt, i], {i, 1, m}];+ nds = Table[ ns[[i]]*ds[[i]], {i, 1, m}];+ Y = X;+ For[i = 1, i <= m, i++, + Y = omega1[ns[[i]], ds[[i]], uuus[[i]], vars[[i]], Y]];+ psiMany[nds, vars, www, Y]+ ]++(* === EQUIVARIANT CSM CLASS === *)++uus[n_] := Table[uu[i], {i, 1, n}]+vvs[n_] := Table[vv[i], {i, 1, n}]++(* total chern class of P^n *)+Clear[chernPnAB]+chernPnAB[n_] := chernPnAB[n] = normalizeVarAB[n, u,+ Expand[Product[1 + u + wt[n, i], {i, 0, n}]]]++chernPnABVar[n_, uuu_] := chernPnAB[n] /. {u -> uuu}++EmptyPartQ[part_] := Length[part] == 0++DualPart[{}] := {}+DualPart[lam_] := + With[{m = lam[[1]]}, Table[Length[Select[lam, # >= i &]], {i, 1, m}]]+ +toExpoForm[{}] := {} +toExpoForm[part_] := + Module[{k = Max[part]}, Table[Length[Select[part, # == j &]], {j, 1, k}]]++posVectorQ[as_] := Map[# >= 0 &, as] /. {List -> And};+kdeTriples[p_, ns_] := Module[+ {m = Length[ns],+ posQ, oneK, A},+ oneK[k_] := + Table[{k, ns - es, es}, {es, Combinatorica`Compositions[p - k, m]}];+ A = Table [oneK[k], {k, 0, p - 1}];+ A = Select[Flatten[A, 1], posVectorQ[Snd[#]] &];+ A]++Clear[csmXLam, csmDisj1, csmDisj, csmDisjSorted]++csmXLam[{}] := csmXLam[{}] = 1+csmXLam[{1}] := csmXLam[{1}] = chernPnAB[1]++csmDisj1[0] := csmDisj1[0] = 1+csmDisj1[1] := csmDisj1[1] = chernPnAB[1]++csmDisj[{}] := csmDisj[{}] = 1++csmDisjSorted[{}] := csmDisjSorted[{}] = 1++(* equiv CSM of D(n) *)+csmDisj1[n_] := csmDisj1[n] = Module[+ {parts = Select[Combinatorica`Partitions[n], Length[#] < n &]},+ Expand[chernPnAB[n] - Sum[csmXLam[p], {p, parts}]]+ ]++(* equiv CSM of X_lambda *)+csmXLam[lambda_] := csmXLam[lambda] = Module[+ {es = toExpoForm[lambda], m, m1, ns, pairs, X},+ m = Length[es];+ ns = Range[m];+ pairs = Zip[ns, es]; (* i^e_ *)+ + pairs = Select[pairs, Snd[#] > 0 &]; (* !!! *)+ m1 = Length[pairs];+ ns = Map[Fst, pairs];+ es = Map[Snd, pairs];+ X = csmDisj[es];+ (* Print["xlam1 - ",pairs];+ Print["xlam2 - ",es," | ",ns," | ",uus[m1]," | ",X]; *)+ + Expand[omegaLam[es, ns, uus[m1], u, X]]+ ]++(* equiv CSM of D(d1,d2,...) *)++csmDisj[{n_}] := csmDisj[{n}] = csmDisj1[n] /. {u -> uu[1]}+csmDisj[ns0_] := csmDisj[ns0] = Module[+ {m = Length[ns0],+ nis0, nis1, ns1, idxs, X, ttt},+ nis0 = Zip[ns0, Range[m]];+ nis1 = SortBy[nis0, -Fst[#] &];+ idxs = Map[Snd, nis1];+ ns1 = Select[Map[Fst, nis1], # > 0 &];+ (* Print["nis1 - ",nis0," | ",nis1];+ Print["nis2 - ",ns1]; *)+ X = csmDisjSorted[ns1];+ X = X /. Table[uu[i] -> Subscript[ttt, i], {i, 1, m}];+ X /. Table[Subscript[ttt, i] -> uu[idxs[[i]]], {i, 1, m}]+ ]++(* a single term corresponding to a triple (k,ds,es) *)+Clear[singleKDE]+singleKDE[{k_, ds_, es_}] := singleKDE[{k, ds, es}] = Module[+ {A, B,+ m, vars, dims,+ pp, qq, rr, ss,+ pps, qqs, rrs, sss+ },+ m = Length[ds];+ pp[i_] := Subscript[pp$p, i];+ qq[i_] := Subscript[qq$q, i];+ rr[i_] := Subscript[rr$r, i];+ ss[i_] := Subscript[ss$s, i];+ pps = Table[pp[i], {i, 1, m}];+ qqs = Table[qq[i], {i, 1, m}];+ rrs = Table[rr[i], {i, 1, m}];+ sss = Table[ss[i], {i, 1, m}];+ vars = Join[{zzz}, pps, qqs];+ dims = Join[{k}, ds, es];+ A = csmDisj[dims] /. Table[uu[i] -> vars[[i]], {i, 1, 2 m + 1}];+ B = A;+ For[i = 1, i <= m, i++, + B = Expand[delta2[es[[i]], qq[i], {rr[i], ss[i]}, B]]];+ For[i = 1, i <= m, i++, + B = Expand[psi2[{ds[[i]], es[[i]]}, {pp[i], ss[i]}, uu[i], B]]];+ B = psiMany[Join[{k}, es], Join[{zzz}, rrs], z, B];+ B+ ]++(* equiv CSM of D(d1,d2,...), but we require d1>=d2>=d3>=...>=dn>0 *)++csmDisjSorted[{n_}] := csmDisjSorted[{n}] = csmDisj1[n] /. {u -> uu[1]}+csmDisjSorted[pns_] := csmDisjSorted[pns] = Module[+ {p = pns[[1]],+ ns = Drop[pns, 1],+ A, B, rest,+ KDE+ },+ KDE = kdeTriples[p, ns];+ (* Print["sorted1 - ",p," | ",ns];+ Print["sorted2 - ",KDE]; *)+ A = (csmDisj1[p] /. {u -> z})*csmDisj[ns];+ rest = Sum[singleKDE[kde], {kde, KDE}];+ B = Expand[A - rest];+ B = B /. Table[uu[i] -> uu[i + 1], {i, 1, Length[ns]}];+ B = B /. {z -> uu[1]}+ ]+++hs2mat = {g -> u, a -> \[Alpha], b -> \[Beta]}++csmXLam[{2, 2, 1, 1}]++24 u^2 - 18 u^3 + 144 u \[Alpha] - 162 u^2 \[Alpha] + 180 \[Alpha]^2 - + 444 u \[Alpha]^2 - 24 u^2 \[Alpha]^2 + 18 u^3 \[Alpha]^2 - 360 \[Alpha]^3 - + 144 u \[Alpha]^3 + 162 u^2 \[Alpha]^3 - 180 \[Alpha]^4 + 444 u \[Alpha]^4 + + 360 \[Alpha]^5 + 144 u \[Beta] - 162 u^2 \[Beta] + 504 \[Alpha] \[Beta] - + 1056 u \[Alpha] \[Beta] + 48 u^2 \[Alpha] \[Beta] - + 36 u^3 \[Alpha] \[Beta] - 1584 \[Alpha]^2 \[Beta] + + 144 u \[Alpha]^2 \[Beta] - 162 u^2 \[Alpha]^2 \[Beta] - + 144 \[Alpha]^3 \[Beta] + 168 u \[Alpha]^3 \[Beta] + 864 \[Alpha]^4 \[Beta] + + 180 \[Beta]^2 - 444 u \[Beta]^2 - 24 u^2 \[Beta]^2 + 18 u^3 \[Beta]^2 - + 1584 \[Alpha] \[Beta]^2 + 144 u \[Alpha] \[Beta]^2 - + 162 u^2 \[Alpha] \[Beta]^2 + 648 \[Alpha]^2 \[Beta]^2 - + 1224 u \[Alpha]^2 \[Beta]^2 - 1224 \[Alpha]^3 \[Beta]^2 - 360 \[Beta]^3 - + 144 u \[Beta]^3 + 162 u^2 \[Beta]^3 - 144 \[Alpha] \[Beta]^3 + + 168 u \[Alpha] \[Beta]^3 - 1224 \[Alpha]^2 \[Beta]^3 - 180 \[Beta]^4 + + 444 u \[Beta]^4 + 864 \[Alpha] \[Beta]^4 + 360 \[Beta]^5++ref2211 = (180*b^2 - 360*b^3 - 180*b^4 + 360*b^5 + 504*a*b - 1584*a*b^2 - + 144*a*b^3 + 864*a*b^4 + 180*a^2 - 1584*a^2*b + 648*a^2*b^2 - + 1224*a^2*b^3 - 360*a^3 - 144*a^3*b - 1224*a^3*b^2 - 180*a^4 + 864*a^4*b + + 360*a^5 + 144*g^1*b - 444*g^1*b^2 - 144*g^1*b^3 + 444*g^1*b^4 + + 144*g^1*a - 1056*g^1*a*b + 144*g^1*a*b^2 + 168*g^1*a*b^3 - 444*g^1*a^2 + + 144*g^1*a^2*b - 1224*g^1*a^2*b^2 - 144*g^1*a^3 + 168*g^1*a^3*b + + 444*g^1*a^4 + 24*g^2 - 162*g^2*b - 24*g^2*b^2 + 162*g^2*b^3 - 162*g^2*a + + 48*g^2*a*b - 162*g^2*a*b^2 - 24*g^2*a^2 - 162*g^2*a^2*b + 162*g^2*a^3 - + 18*g^3 + 18*g^3*b^2 - 36*g^3*a*b + 18*g^3*a^2) /. hs2mat++24 u^2 - 18 u^3 + 144 u \[Alpha] - 162 u^2 \[Alpha] + 180 \[Alpha]^2 - + 444 u \[Alpha]^2 - 24 u^2 \[Alpha]^2 + 18 u^3 \[Alpha]^2 - 360 \[Alpha]^3 - + 144 u \[Alpha]^3 + 162 u^2 \[Alpha]^3 - 180 \[Alpha]^4 + 444 u \[Alpha]^4 + + 360 \[Alpha]^5 + 144 u \[Beta] - 162 u^2 \[Beta] + 504 \[Alpha] \[Beta] - + 1056 u \[Alpha] \[Beta] + 48 u^2 \[Alpha] \[Beta] - + 36 u^3 \[Alpha] \[Beta] - 1584 \[Alpha]^2 \[Beta] + + 144 u \[Alpha]^2 \[Beta] - 162 u^2 \[Alpha]^2 \[Beta] - + 144 \[Alpha]^3 \[Beta] + 168 u \[Alpha]^3 \[Beta] + 864 \[Alpha]^4 \[Beta] + + 180 \[Beta]^2 - 444 u \[Beta]^2 - 24 u^2 \[Beta]^2 + 18 u^3 \[Beta]^2 - + 1584 \[Alpha] \[Beta]^2 + 144 u \[Alpha] \[Beta]^2 - + 162 u^2 \[Alpha] \[Beta]^2 + 648 \[Alpha]^2 \[Beta]^2 - + 1224 u \[Alpha]^2 \[Beta]^2 - 1224 \[Alpha]^3 \[Beta]^2 - 360 \[Beta]^3 - + 144 u \[Beta]^3 + 162 u^2 \[Beta]^3 - 144 \[Alpha] \[Beta]^3 + + 168 u \[Alpha] \[Beta]^3 - 1224 \[Alpha]^2 \[Beta]^3 - 180 \[Beta]^4 + + 444 u \[Beta]^4 + 864 \[Alpha] \[Beta]^4 + 360 \[Beta]^5++ref2211 - csmXLam[{2, 2, 1, 1}]
+ slides/csm_slides_2017.pdf view
binary file changed (absent → 496617 bytes)
+ slides/motivic_slides_2018.pdf view
binary file changed (absent → 476170 bytes)
src/Math/RootLoci/Algebra.hs view
@@ -5,19 +5,17 @@ -- to do -- -- > import Math.RootLoci.Algebra--- > import qualified Math.RootLoci.Algebra.FreeMod as ZMod+-- > import qualified Math.Algebra.Polynomial.FreeModule as ZMod -- module Math.RootLoci.Algebra ( ZMod , QMod , FreeMod - , module Math.RootLoci.Algebra.Polynomial+-- , module Math.RootLoci.Algebra.Polynomial , module Math.RootLoci.Algebra.SymmPoly--- , module ZMod -- apparently this does not work ) where -import Math.RootLoci.Algebra.FreeMod ( ZMod , QMod , FreeMod )-import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import Math.Algebra.Polynomial.FreeModule ( ZMod , QMod , FreeMod )+import qualified Math.Algebra.Polynomial.FreeModule as ZMod -import Math.RootLoci.Algebra.Polynomial import Math.RootLoci.Algebra.SymmPoly
− src/Math/RootLoci/Algebra/FreeMod.hs
@@ -1,214 +0,0 @@---- | Free modules. ------ This module should be imported qualified--{-# LANGUAGE BangPatterns, FlexibleInstances, TypeSynonymInstances #-}-module Math.RootLoci.Algebra.FreeMod where------------------------------------------------------------------------------------import Prelude hiding ( sum , product )-import Data.List hiding ( sum , product )--import Data.Monoid-import Data.Ratio-import Data.Maybe--import Math.Combinat.Sets ( choose )--import qualified Data.Map.Strict as Map-import Data.Map.Strict (Map)-------------------------------------------------------------------------------------- | Free module over a coefficient ring with the given base. Internally a map--- storing the coefficients. We maintain the invariant that the coefficients--- are never zero.-newtype FreeMod coeff base = FreeMod { unFreeMod :: Map base coeff } deriving (Eq,Show)---- | Free module with integer coefficients-type ZMod base = FreeMod Integer base---- | Free module with rational coefficients-type QMod base = FreeMod Rational base------------------------------------------------------------------------------------instance (Monoid b, Ord b, Eq c, Num c) => Num (FreeMod c b) where- (+) = add- (-) = sub- negate = neg- (*) = mul- fromInteger = konst . fromInteger- abs = error "FreeMod/abs"- signum = error "FreeMod/signum"------------------------------------------------------------------------------------- * Sanity checking---- | Should be the identity function-normalize :: (Ord b, Eq c, Num c) => FreeMod c b -> FreeMod c b-normalize = FreeMod . Map.filter (/=0) . unFreeMod---- | Safe equality testing (should be identical to @==@)-safeEq :: (Ord b, Eq b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> Bool-safeEq x y = normalize x == normalize y------------------------------------------------------------------------------------- * Constructing and deconstructing---- | The additive unit-zero :: FreeMod c b-zero = FreeMod $ Map.empty---- | A module generator-generator :: Num c => b -> FreeMod c b -generator x = FreeMod $ Map.singleton x 1---- | A single generator with a coefficient-singleton :: (Ord b) => b -> c -> FreeMod c b-singleton b c = FreeMod $ Map.singleton b c---- | Conversion from list. --- Note that we assume here that each generator appears at most once!-fromList :: (Eq c, Num c, Ord b) => [(b,c)] -> FreeMod c b-fromList = FreeMod . Map.fromList . filter cond where- cond (b,x) = (x/=0)---- | Conversion to list -toList :: FreeMod c b -> [(b,c)]-toList = Map.toList . unFreeMod---- | Extract the coefficient of a generator-coeffOf :: (Ord b, Num c) => b -> FreeMod c b -> c-coeffOf b (FreeMod x) = case Map.lookup b x of- Just c -> c- Nothing -> 0---- | Finds the term with the largest generator (in the natural ordering of the generators)-findMaxTerm :: (Ord b) => FreeMod c b -> Maybe (b,c)-findMaxTerm (FreeMod m) = if Map.null m- then Nothing- else Just (Map.findMax m)---- | Finds the term with the smallest generator (in the natural ordering of the generators)-findMinTerm :: (Ord b) => FreeMod c b -> Maybe (b,c)-findMinTerm (FreeMod m) = if Map.null m- then Nothing- else Just (Map.findMin m)------------------------------------------------------------------------------------- * Basic operations---- | Negation-neg :: Num c => FreeMod c b -> FreeMod c b -neg (FreeMod m) = FreeMod (Map.map negate m)---- | Additions-add :: (Ord b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> FreeMod c b-add (FreeMod m1) (FreeMod m2) = FreeMod (Map.mergeWithKey f id id m1 m2) where- f _ x y = case x+y of { 0 -> Nothing ; z -> Just z }---- | Subtraction-sub :: (Ord b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> FreeMod c b-sub (FreeMod m1) (FreeMod m2) = FreeMod (Map.mergeWithKey f id (Map.map negate) m1 m2) where- f _ x y = case x-y of { 0 -> Nothing ; z -> Just z }---- | Scaling by a number-scale :: (Ord b, Eq c, Num c) => c -> FreeMod c b -> FreeMod c b-scale 0 _ = zero-scale x (FreeMod m) = FreeMod (Map.mapMaybe f m) where- f y = case x*y of { 0 -> Nothing ; z -> Just z }---- | Dividing by a number (assuming that the coefficient ring is integral, and each coefficient--- is divisible by the given number)-invScale :: (Ord b, Eq c, Integral c, Show c) => c -> FreeMod c b -> FreeMod c b-invScale d (FreeMod m) = FreeMod (Map.mapMaybe f m) where- f a = case divMod a d of- (b,0) -> case b of { 0 -> Nothing ; z -> Just z }- _ -> error $ "FreeMod/invScale: not divisible by " ++ show d-------------------------------------------------------------------------------------- | Summation-sum :: (Ord b, Eq c, Num c) => [FreeMod c b] -> FreeMod c b-sum [] = zero-sum zms = (foldl1' add) zms---- | Linear combination-linComb :: (Ord b, Eq c, Num c) => [(c, FreeMod c b)] -> FreeMod c b-linComb = sumWith where-- sumWith :: (Ord b, Eq c, Num c) => [(c, FreeMod c b)] -> FreeMod c b- sumWith [] = zero- sumWith zms = sum [ scale c zm | (c,zm) <- zms ]---- | Expand each generator into a term in another module and then sum the results-flatMap :: (Ord b1, Ord b2, Eq c, Num c) => (b1 -> FreeMod c b2) -> FreeMod c b1 -> FreeMod c b2-flatMap f = sum . map g . Map.assocs . unFreeMod where- g (x,c) = scale c (f x)--flatMap' :: (Ord b1, Ord b2, Eq c2, Num c2) => (c1 -> c2) -> (b1 -> FreeMod c2 b2) -> FreeMod c1 b1 -> FreeMod c2 b2-flatMap' embed f = sum . map g . Map.assocs . unFreeMod where- g (x,c) = scale (embed c) (f x)---- | The histogram of a multiset of generators is naturally an element of the given Z-module.-{-# SPECIALIZE histogram :: Ord b => [b] -> ZMod b #-} -histogram :: (Ord b, Num c) => [b] -> FreeMod c b-histogram xs = FreeMod $ foldl' f Map.empty xs where- f old x = Map.insertWith (+) x 1 old- ------------------------------------------------------------------------------------ * Rings---- | The multiplicative unit-one :: (Monoid b, Num c) => FreeMod c b-one = konst 1---- | A constant-konst :: (Monoid b) => c -> FreeMod c b-konst c = FreeMod (Map.singleton mempty c)---- | Multiplying two ring elements-mul :: (Ord b, Monoid b, Eq c, Num c) => FreeMod c b -> FreeMod c b -> FreeMod c b-mul xx yy = sum [ (f x c) | (x,c) <- toList xx ] where- f x c = FreeMod $ Map.fromList [ (x<>y, cd) | (y,d) <- ylist , let cd = c*d , cd /= 0 ]- ylist = toList yy---- | Product-product :: (Ord b, Monoid b, Eq c, Num c) => [FreeMod c b] -> FreeMod c b-product [] = generator mempty-product xs = foldl1' mul xs---- | Multiplies by a monomial-mulMonom :: (Ord b, Monoid b) => b -> FreeMod c b -> FreeMod c b-mulMonom monom = FreeMod . Map.mapKeys (mappend monom) . unFreeMod------------------------------------------------------------------------------------- * Misc---- | A symmetric polynomial of some generators-symPoly :: (Ord a, Monoid a) => Int -> [a] -> ZMod a-symPoly k xs = fromList $ map (\x -> (x,1)) $ (map mconcat $ choose k xs) ---- | Changing the base set-mapBase :: (Ord a, Ord b) => (a -> b) -> FreeMod c a -> FreeMod c b-mapBase f = onFreeMod (Map.mapKeys f)---- | Changing the coefficient ring-mapCoeff :: (Ord b) => (c1 -> c2) -> FreeMod c1 b -> FreeMod c2 b-mapCoeff f = onFreeMod' (Map.map f)---- | Extract a subset of terms-filterBase :: (Ord a, Ord b) => (a -> Maybe b) -> FreeMod c a -> FreeMod c b-filterBase f = onFreeMod (Map.fromList . mapMaybe g . Map.toList) where- g (k,x) = case f k of { Just k' -> Just (k',x) ; Nothing -> Nothing }--onFreeMod :: (Ord a, Ord b) => (Map a c -> Map b c) -> FreeMod c a -> FreeMod c b-onFreeMod f = FreeMod . f . unFreeMod--onFreeMod' :: (Ord a, Ord b) => (Map a c -> Map b d) -> FreeMod c a -> FreeMod d b-onFreeMod' f = FreeMod . f . unFreeMod----------------------------------------------------------------------------------
− src/Math/RootLoci/Algebra/Polynomial.hs
@@ -1,102 +0,0 @@---- | Univariate polynomials--{-# LANGUAGE GeneralizedNewtypeDeriving #-}-module Math.RootLoci.Algebra.Polynomial where------------------------------------------------------------------------------------import Data.Array ( assocs ) --import Math.Combinat.Numbers--import Math.RootLoci.Misc--import qualified Math.RootLoci.Algebra.FreeMod as ZMod-import Math.RootLoci.Algebra.FreeMod ( FreeMod , ZMod , QMod )------------------------------------------------------------------------------------- * Polynomials---- | Standard univariate polynomials-newtype Poly coeff = Poly { fromPoly :: FreeMod coeff X } deriving (Eq,Num,Show)---- | Univariate polynomials using /rising factorials/ as a basis function-newtype RisingPoly coeff = RisingPoly { fromRisingPoly :: FreeMod coeff RisingF } deriving (Eq,Show)---- | Univariate polynomials using /falling factorials/ as a basis function-newtype FallingPoly coeff = FallingPoly { fromFallingPoly :: FreeMod coeff FallingF } deriving (Eq,Show)--instance (Num c, Show c, Eq c, IsSigned c) => Pretty (Poly c) where pretty (Poly p) = pretty p -instance (Num c, Show c, Eq c, IsSigned c) => Pretty (RisingPoly c) where pretty (RisingPoly p) = pretty p -instance (Num c, Show c, Eq c, IsSigned c) => Pretty (FallingPoly c) where pretty (FallingPoly p) = pretty p ------------------------------------------------------------------------------------- * Monomials ---- | A power of @x@ (that is, a monomial of the form @x^i@)-newtype X = X Int deriving (Eq,Ord,Show)--instance Monoid X where- mempty = X 0- mappend (X e) (X f) = X (e+f)--instance Pretty X where- pretty (X e) = case e of- 0 -> "1"- 1 -> "x"- _ -> "x^" ++ show e------------------------------------------------------------------------------------- * Rising and falling factorials ---- | Rising factorial @x^(k) = x(x+1)(x+2)...(x+k-1)@-newtype RisingF = RF Int deriving (Eq,Ord,Show)---- | Falling factorial @x_(k) = x(x-1)(x-2)...(x-k+1)@-newtype FallingF = FF Int deriving (Eq,Ord,Show)--instance Pretty RisingF where- pretty (RF k) = case k of- 0 -> "1"- 1 -> "x"- _ -> "x^(" ++ show k ++ ")"--instance Pretty FallingF where- pretty (FF k) = case k of- 0 -> "1"- 1 -> "x"- _ -> "x_(" ++ show k ++ ")"--risingPoly :: RisingF -> Poly Integer-risingPoly (RF k) = Poly $ ZMod.fromList- [ (X p, abs c) | (p,c) <- assocs (signedStirling1stArray k) ]--fallingPoly :: FallingF -> Poly Integer-fallingPoly (FF k) = Poly $ ZMod.fromList- [ (X p, c) | (p,c) <- assocs (signedStirling1stArray k) ]------------------------------------------------------------------------------------- * Lagrange interpolation--lagrangeInterp :: [(Rational,Rational)] -> Poly Rational-lagrangeInterp = Poly . lagrangeInterp'--lagrangeInterp' :: [(Rational,Rational)] -> QMod X-lagrangeInterp' xys = final where- final = ZMod.sum [ ZMod.scale (ys!!j) (lagrangePoly' xs j) | j<-[0..m-1] ] where- m = length xys- (xs,ys) = unzip xys--lagrangePoly' :: [Rational] -> Int -> QMod X-lagrangePoly' xs j = ZMod.scale (1/denom) numer where- numer = ZMod.product [ term i | i<-[0..m-1] , i /= j ]- denom = product [ x j - x i | i<-[0..m-1] , i /= j ]- m = length xs- x i = xs !! i- term i = ZMod.fromList - [ (X 1 , 1 )- , (X 0 , - x i )- ]----------------------------------------------------------------------------------
src/Math/RootLoci/Algebra/SymmPoly.hs view
@@ -30,28 +30,43 @@ -- -{-# LANGUAGE DataKinds, TypeFamilies, Rank2Types, GADTs, StandaloneDeriving #-}+{-# LANGUAGE BangPatterns, DataKinds, TypeFamilies, Rank2Types, GADTs, StandaloneDeriving #-} module Math.RootLoci.Algebra.SymmPoly where -------------------------------------------------------------------------------- -import Data.Proxy+import Control.Monad+import Data.List +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) +import Data.Foldable+import Data.Semigroup+#endif++import System.Random -- testing only+ import Math.Combinat.Sign import Math.Combinat.Numbers+import Math.Combinat.Sets ( choose ) import qualified Data.Map.Strict as Map -import Control.Monad-import System.Random+import Data.Array ( Array )+import Data.Array.IArray -import Math.RootLoci.Algebra.FreeMod (ZMod)-import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import Math.Algebra.Polynomial.FreeModule (ZMod)+import qualified Math.Algebra.Polynomial.FreeModule as ZMod -import Math.RootLoci.Misc.Pretty+import Math.RootLoci.Misc.Common+import Math.Algebra.Polynomial.Pretty -import Unsafe.Coerce as Unsafe+-------------------------------------------------------------------------------- +-- | An elementary symmetric polynomial of some generators+symPoly :: (Ord a, Monoid a) => Int -> [a] -> ZMod a+symPoly k xs = ZMod.fromList $ map (\x -> (x,1)) $ (map mconcat $ choose k xs) + -------------------------------------------------------------------------------- -- * Base monomials @@ -185,8 +200,31 @@ -------------------------------------------------------------------------------- +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) ++instance Semigroup AB where+ (AB a1 b1) <> (AB a2 b2) = AB (a1+a2) (b1+b2)++instance Semigroup Chern where+ (Chern e1 f1) <> (Chern e2 f2) = Chern (e1+e2) (f1+f2)++instance Semigroup Schur where+ (<>) = error "Schur/mappend: not a monoid"+ instance Monoid AB where mempty = AB 0 0 ++instance Monoid Chern where+ mempty = Chern 0 0 ++instance Monoid Schur where+ mempty = Schur 0 0++#else++instance Monoid AB where+ mempty = AB 0 0 (AB a1 b1) `mappend` (AB a2 b2) = AB (a1+a2) (b1+b2) instance Monoid Chern where@@ -197,6 +235,8 @@ mempty = Schur 0 0 mappend = error "Schur/mappend: not a monoid" +#endif+ -------------------------------------------------------------------------------- instance Pretty AB where@@ -227,9 +267,20 @@ instance Graded Chern where grade (Chern e f) = e + 2*f instance Graded Schur where grade (Schur i j) = i + j +-- | Filters out the given grade filterGrade :: (Ord b, Graded b) => Int -> ZMod b -> ZMod b filterGrade g = ZMod.onFreeMod filt where filt = Map.filterWithKey $ \x _ -> (grade x == g)++-- | Separates the different grades+separateGradedParts :: (Ord b, Graded b) => ZMod b -> Array Int (ZMod b)+separateGradedParts input = arr where+ table = foldl' worker Map.empty (ZMod.toList input) + worker !old (base,coeff) = insertMap (:[]) (:) (grade base) (base,coeff) old+ size = if Map.null table then 0 else fst (Map.findMax table)+ arr = listArray (0,size) + [ ZMod.fromList (Map.findWithDefault [] d table) + | d <- [0..size] ] -------------------------------------------------------------------------------- -- * Conversions
src/Math/RootLoci/CSM/Aluffi.hs view
@@ -30,14 +30,14 @@ import Math.RootLoci.Classic import Math.RootLoci.Misc -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod -------------------------------------------------------------------------------- -- * CSM computation -- | Paolo Aluffi's explicit formula for the (non-equivariant) CSM of open coincident root loci aluffiOpenCSM :: Partition -> ZMod G-aluffiOpenCSM part@(Partition ps) = ZMod.invScale (aut part) xsum where+aluffiOpenCSM part@(Partition ps) = ZMod.divideByConst (aut part) xsum where n = sum ps d = length ps xsum = ZMod.fromList [ ( G (n-d+k) , coeff k ) | k<-[0..d] ]
src/Math/RootLoci/CSM/Equivariant/Direct.hs view
@@ -29,7 +29,7 @@ import Math.RootLoci.Geometry import Math.RootLoci.Misc -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.CSM.Equivariant.PushForward import qualified Math.RootLoci.CSM.Equivariant.Ordered as Ordered@@ -47,14 +47,14 @@ directCalcOpenCSM :: ChernBase base => Partition -> ZMod (Gam base) directCalcOpenCSM part@(Partition xs) = result where m = partitionWeight part- result = ZMod.invScale (aut part) $ pi_star m middle+ result = ZMod.divideByConst (aut part) $ pi_star m middle middle = delta_star_ part distinct distinct = Ordered.formulaDistinctCSM (length xs) -------------------------------------------------------------------------------- -- | To compute the CSM of the closed loci, we just some over the open strata--- in the closure.+-- in the closure directClosedCSM :: ChernBase base => Partition -> ZMod (Gam base) directClosedCSM = polyCache2 calc where @@ -62,4 +62,3 @@ calc part = ZMod.sum [ directOpenCSM q | q <- Set.toList (closureSet part) ] ---------------------------------------------------------------------------------
src/Math/RootLoci/CSM/Equivariant/Ordered.hs view
@@ -43,6 +43,12 @@ -------------------------------------------------------------------------------- +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) +import Data.Foldable+import Data.Semigroup+#endif+ import Math.Combinat.Classes import Math.Combinat.Numbers import Math.Combinat.Sign@@ -56,7 +62,7 @@ import qualified Data.Set as Set ; import Data.Set (Set) -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.CSM.Equivariant.PushForward @@ -181,10 +187,22 @@ -- | A formal monomial @q^k@ newtype QPow = QPow Int deriving (Eq,Ord,Show) +#if MIN_VERSION_base(4,11,0) ++instance Semigroup QPow where+ (<>) (QPow e) (QPow f) = QPow (e+f)+ instance Monoid QPow where mempty = QPow 0++#else++instance Monoid QPow where+ mempty = QPow 0 mappend (QPow e) (QPow f) = QPow (e+f) +#endif+ instance Pretty QPow where pretty (QPow k) = showVarPower "q" k @@ -217,7 +235,7 @@ , (monom [1,2] (-3) , 2) ] | n >= 3 = ZMod.sum- [ ZMod.scale coeff $ (ZMod.symPoly (n-3-k) us) * (ZMod.generator $ monom [] k)+ [ ZMod.scale coeff $ (symPoly (n-3-k) us) * (ZMod.generator $ monom [] k) | k<-[0..n-3] , let coeff = negateIfOdd (n-3+k) (factorial (n-3) `div` factorial k) ]@@ -270,7 +288,7 @@ {- smaller = ZMod.sum [ ZMod.scale coeff $ - (ZMod.symPoly (n-k) us) * (embed $ computeQPolys k)+ (symPoly (n-k) us) * (embed $ computeQPolys k) | k<-[0..n-1] , let coeff = negateIfOdd (n+k) (factorial n `div` factorial k) ]
src/Math/RootLoci/CSM/Equivariant/PushForward.hs view
@@ -47,7 +47,7 @@ import Math.RootLoci.Geometry import Math.RootLoci.Misc -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod -------------------------------------------------------------------------------- -- * The function tau@@ -94,7 +94,7 @@ full = ZMod.generator (Eta ks mempty) -- == sigma_n(eta) rest = ZMod.sum [ sigma (n-i) * tauEta (i-2) * ab | i<-[2..n] ] - sigma k = ZMod.symPoly k [ Eta [k] mempty | k<-ks ]+ sigma k = symPoly k [ Eta [k] mempty | k<-ks ] -- | a group generator on the left is a subset (=product) of U-s, which -- we map to a linear combinaton of H-s@@ -224,7 +224,7 @@ g :: Integer -> ZMod (Gam Chern) -> ZMod (Gam Chern) -> ZMod (Gam Chern) g k prev1 prev2 - = ZMod.invScale (mm-k)+ = ZMod.divideByConst (mm-k) $ mulGam prev1 + ZMod.scale k (mulInjMonom c1 prev1) + ZMod.scale k (mulInjMonom c2 prev2) @@ -245,9 +245,9 @@ g :: Integer -> ZMod Chern -> ZMod Chern -> ZMod Chern g k prev1 prev2 - = ZMod.invScale (mm-k)- $ ZMod.scale ( k)- $ (ZMod.mulMonom c1 prev1 + ZMod.mulMonom c2 prev2) + = ZMod.divideByConst (mm-k)+ $ ZMod.scale ( k)+ $ (ZMod.mulByMonom c1 prev1 + ZMod.mulByMonom c2 prev2) mm = fromIntegral m :: Integer
src/Math/RootLoci/CSM/Equivariant/Recursive.hs view
@@ -31,7 +31,7 @@ import Math.RootLoci.Geometry import Math.RootLoci.Misc -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod -------------------------------------------------------------------------------- -- * CSM calculation@@ -66,7 +66,7 @@ openCSM = polyCache2 calcOpenCSM where calcOpenCSM :: ChernBase base => Partition -> ZMod (Gam base)- calcOpenCSM part = ZMod.invScale thisCoeff (pushdown `ZMod.sub` smaller) where+ calcOpenCSM part = ZMod.divideByConst thisCoeff (pushdown `ZMod.sub` smaller) where n = partitionWeight part pushdown = lowerClass part smaller = ZMod.linComb [ (c , openCSM q) | (q,c) <- Map.assocs theClosure ]
src/Math/RootLoci/CSM/Equivariant/Umbral.hs view
@@ -19,6 +19,12 @@ -------------------------------------------------------------------------------- +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) +import Data.Foldable+import Data.Semigroup+#endif+ import Math.Combinat.Classes import Math.Combinat.Numbers import Math.Combinat.Partitions.Integer@@ -31,8 +37,11 @@ import Math.RootLoci.Geometry import Math.RootLoci.Misc -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import Math.Algebra.Polynomial.Misc ( IsSigned(..) ) +import Math.Algebra.Polynomial.Pretty +import qualified Math.Algebra.Polynomial.FreeModule as ZMod+ import Math.RootLoci.CSM.Equivariant.PushForward ( tau , piStarTableAff , piStarTableProj ) import Math.RootLoci.CSM.Equivariant.Ordered ( formulaQPoly ) @@ -46,10 +55,23 @@ = ST !Int !Int deriving (Eq,Ord,Show) +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) ++instance Semigroup ST where+ (ST s1 t1) <> (ST s2 t2) = ST (s1+s2) (t1+t2)+ instance Monoid ST where mempty = ST 0 0 ++#else++instance Monoid ST where+ mempty = ST 0 0 (ST s1 t1) `mappend` (ST s2 t2) = ST (s1+s2) (t1+t2) +#endif+ instance Pretty ST where pretty st = case st of ST 0 0 -> "" @@ -57,7 +79,7 @@ ST 0 f -> showVarPower "t" f ST e f -> showVarPower "s" e ++ "*" ++ showVarPower "t" f -prettyMixedST :: forall b c. (Pretty b, Num c, Eq c, IsSigned c, Show c) => FreeMod (FreeMod c b) ST -> String+prettyMixedST :: forall b c. (Pretty b, Num c, Eq c, IsSigned c, Pretty c) => FreeMod (FreeMod c b) ST -> String prettyMixedST = prettyFreeMod'' prettyInner pretty where prettyInner :: FreeMod c b -> String@@ -78,8 +100,8 @@ | otherwise = error "theta: non-positive input" where - term0 = [ (ST 0 i , ZMod.scale (binomial p i) ( tau (p-i-1)) ) | i<-[0..p-1] ]- term1 = [ (ST 1 i , ZMod.scale (binomial p i) (ZMod.mulMonom c2_monom $ tau (p-i-2)) ) | i<-[0..p-2] ] + term0 = [ (ST 0 i , ZMod.scale (binomial p i) ( tau (p-i-1)) ) | i<-[0..p-1] ]+ term1 = [ (ST 1 i , ZMod.scale (binomial p i) (ZMod.mulByMonom c2_monom $ tau (p-i-2)) ) | i<-[0..p-2] ] ++ [ (ST 1 p , ZMod.konst (-1) ) ] c2_monom = select0 (alphaBeta,c2)@@ -107,6 +129,25 @@ -------------------------------------------------------------------------------- -- * The affine CSM +-- | Weights of the representation @Sym^m C^2@+affineWeights :: Int -> [ZMod AB]+affineWeights m = + [ ZMod.fromList [ ( AB 1 0 , fi (m-j) ) , ( AB 0 1 , fi j ) ]+ | j <- [0..m]+ ]+ where+ fi :: Int -> Integer+ fi = fromIntegral++-- | The top Chern class of the representation is just the product of weights.+-- This represents the zero orbit, and we need to add this to the closure in the+-- affine case!+topChernClass :: ChernBase base => Int -> ZMod base+topChernClass m = select1 (total , abToChern total) where+ total = product [ w | w <- affineWeights m ]++--------------------------------------------------------------------------------+ -- | The polynomial to be substituted in the place of @s^k*t^j@: -- -- > s^k*t^j -> P_j(m) * Q_k(n-3-k) * (n-3)_k@@ -144,18 +185,25 @@ -- the current umbral formula only works for @n >= 3@ ?? calc mu | n < 3 = forgetGamma (Direct.directOpenCSM mu)- | otherwise = ZMod.invScale (aut mu)+ | otherwise = ZMod.divideByConst (aut mu) $ umbralSubstitutionAff mu $ integralUmbralFormula mu where n = numberOfParts mu --- | Sum over the strata in the closure+--------------------------------------------------------------------------------++-- | CSM class of the zero orbit (which is just the top Chern class)+affineZeroCSM :: ChernBase base => Int -> ZMod base+affineZeroCSM m = topChernClass m++-- | Sum over the strata in the closure (including the zero orbit!) umbralAffClosedCSM :: ChernBase base => Partition -> ZMod base umbralAffClosedCSM = polyCache1 calc where calc :: ChernBase base => Partition -> ZMod base- calc part = ZMod.sum [ umbralAffOpenCSM q | q <- Set.toList (closureSet part) ] + calc part = affineZeroCSM (weight part)+ + ZMod.sum [ umbralAffOpenCSM q | q <- Set.toList (closureSet part) ] -------------------------------------------------------------------------------- -- * The projective CSM@@ -198,7 +246,7 @@ -- the current umbral formula only works for @n >= 3@ ?? calc mu | n < 3 = Direct.directOpenCSM mu - | otherwise = ZMod.invScale (aut mu)+ | otherwise = ZMod.divideByConst (aut mu) $ umbralSubstitutionProj mu $ integralUmbralFormula mu where
src/Math/RootLoci/CSM/Projective.hs view
@@ -39,7 +39,7 @@ import Math.RootLoci.Geometry import Math.RootLoci.Misc -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod -------------------------------------------------------------------------------- @@ -171,7 +171,7 @@ -- | we know that (pi_* upperCSM) = sum (chi * openCSM) calcOpenCSM :: Partition -> ZMod G- calcOpenCSM part = ZMod.invScale thisCoeff (pushdown - smaller) where+ calcOpenCSM part = ZMod.divideByConst thisCoeff (pushdown - smaller) where n = partitionWeight part pushdown = lowerCSM part -- pi_star n (upperCSM part) smaller = ZMod.linComb [ (c , openCSM q) | (q,c) <- Map.assocs theClosure ]
src/Math/RootLoci/Classic.hs view
@@ -70,21 +70,67 @@ -- check_hilbert2 = and [ hilbert p == hilbert2 p | n<-[0..20] , p<-partitions n ] ----------------------------------------------------------------------------------- * Schubert+-- * Enumerative geometry --- | Number of 4-tangent lines to a generic degree @d@ surface -quadTangentLines :: Int -> Integer-quadTangentLines d0+-- | The degree of the dual curve is @d(d-1)@+degreeOfDualCurve :: Int -> Integer+degreeOfDualCurve d0 + | d < 2 = 0+ | otherwise = d*(d-1) + where+ d = fromIntegral d0 :: Integer++-- | Number of flex lines to a generic degree @d@ plane curve+numberOfCurveFlexes :: Int -> Integer+numberOfCurveFlexes d0+ | d < 3 = 0+ | otherwise = 3*d*(d-2)+ where+ d = fromIntegral d0 :: Integer++-- | Number of bitangent lines to a generic degree @d@ plane curve+numberOfCurveBiTangents :: Int -> Integer+numberOfCurveBiTangents d0+ | d < 3 = 0+ | otherwise = div ((-3 + d)* (-2 + d)* d* (3 + d)) 2 + where+ d = fromIntegral d0 :: Integer++-- | Number of 4-tangent lines to a generic degree @d@ surface (Schubert)+numberOfSurface4xTangents :: Int -> Integer+numberOfSurface4xTangents d0 | d < 8 = 0 | otherwise = d * (d - 4) * (d - 5) * (d - 6) * (d - 7) * (d^3 + 6*d^2 + 7*d - 30) where d = fromIntegral d0 :: Integer -- | Number of lines meeting a generic degree @d@ surface at point with 5x multiplicity-quintFlexLines :: Int -> Integer-quintFlexLines d0+numberOfSurface5xHyperflexes :: Int -> Integer+numberOfSurface5xHyperflexes d0 | d < 5 = 0- | otherwise = error "quintFlexLines"+ | otherwise = (35*d^3 - 200*d^2 + 240*d)+ where+ d = fromIntegral d0 :: Integer++-- | Bidegree of bitangent locus of a generic hypersurface+-- +-- (See: Kathlen Kohn, Bernt Ivar Utstol Nodland, Paolo Tripoli: Secants, bitangents, and their congruences)+--+bidegreeOfSurfaceBiTangents :: Int -> (Integer,Integer)+bidegreeOfSurfaceBiTangents d0 + | d < 4 = ( 0 , 0 )+ | otherwise = ( div (d*(d-1)*(d-2)*(d-3)) 2 , div (d*(d-2)*(d-3)*(d+3)) 2 )+ where+ d = fromIntegral d0 :: Integer++-- | Bidegree of the flex locus of a generic hypersurface+--+-- (See: Kathlen Kohn, Bernt Ivar Utstol Nodland, Paolo Tripoli: Secants, bitangents, and their congruences)+--+bidegreeOfSurfaceFlexes :: Int -> (Integer,Integer)+bidegreeOfSurfaceFlexes d0+ | d < 4 = ( 0 , 0 ) + | otherwise = ( d*(d-1)*(d-3) , 3*d*(d-2) ) where d = fromIntegral d0 :: Integer
src/Math/RootLoci/Dual/Localization.hs view
@@ -11,6 +11,7 @@ -- out the result (we know a priori that it is a homogenenous polynomial -- in @alpha@ and @beta@). +{-# LANGUAGE DataKinds #-} module Math.RootLoci.Dual.Localization where --------------------------------------------------------------------------------@@ -27,13 +28,23 @@ import qualified Data.Map as Map -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod +import Math.Algebra.Polynomial.Univariate+import Math.Algebra.Polynomial.Univariate.Lagrange+ import Math.RootLoci.Algebra import Math.RootLoci.Classic -------------------------------------------------------------------------------- +type X = U "x"++mkX :: Int -> X+mkX = U++--------------------------------------------------------------------------------+ -- | The localization formula as a string which Mathematica can parse localizeMathematica :: Partition -> String localizeMathematica (Partition xs) = formula where@@ -86,7 +97,7 @@ localizeDual :: Partition -> ZMod AB localizeDual part = ZMod.mapBase worker $ localizeInterpolatedZ part where c = codim part- worker (X i) = AB (c-i) i + worker (U i) = AB (c-i) i -- | We can use Lagrange interpolation to express the dual class from the -- localization formula (since we know a priori that the result is a homogeneous@@ -97,7 +108,7 @@ codim = sum xs - length xs bs = map fromIntegral [ 2..codim+2 ] :: [Rational] qs = [ localizeEval part 1 b | b<-bs ] :: [Rational]- final = lagrangeInterp' (zip bs qs)+ final = unUni $ lagrangeInterp (zip bs qs) localizeInterpolatedZ :: Partition -> ZMod X localizeInterpolatedZ = (ZMod.mapCoeff f . localizeInterpolatedQ) where
src/Math/RootLoci/Dual/Restriction.hs view
@@ -27,7 +27,7 @@ import qualified Data.Set as Set ; import Data.Set (Set) -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.Algebra import Math.RootLoci.Classic@@ -144,7 +144,7 @@ -- | The dual class of the closure agress with the lowest degree part of the CSM class. dualClassFromProjCSM :: forall base. ChernBase base => ZMod (Gam base) -> ZMod base-dualClassFromProjCSM csm = dualClassFromAffCSM (ZMod.filterBase nogamma csm) where+dualClassFromProjCSM csm = dualClassFromAffCSM (ZMod.mapMaybeBase nogamma csm) where nogamma :: Gam base -> Maybe base nogamma (Gam k ab) = if k==0 then Just ab else Nothing
src/Math/RootLoci/Geometry/Cohomology.hs view
@@ -23,16 +23,22 @@ import Data.List import Data.Monoid +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) +import Data.Foldable+import Data.Semigroup+#endif+ import Math.Combinat.Numbers import qualified Data.Map as Map import qualified Data.Set as Set -import qualified Math.RootLoci.Algebra.FreeMod as ZMod-import Math.RootLoci.Algebra.FreeMod ( ZMod , FreeMod(..) , unFreeMod )+import qualified Math.Algebra.Polynomial.FreeModule as ZMod+import Math.Algebra.Polynomial.FreeModule ( ZMod , FreeMod(..) , unFreeMod ) import Math.RootLoci.Algebra.SymmPoly -import Math.RootLoci.Misc.Pretty+import Math.Algebra.Polynomial.Pretty -------------------------------------------------------------------------------- -- * The non-equivariant case@@ -54,8 +60,41 @@ -------------------------------------------------------------------------------- +-- Semigroup became a superclass of Monoid+#if MIN_VERSION_base(4,11,0) ++instance Semigroup US where+ (US us1) <> (US us2) = + if nub us3 == us3+ then US us3+ else error "[U]/monoid: duplicate indices"+ where+ us3 = sort (us1 ++ us2)++instance Semigroup HS where+ (HS hs1) <> (HS hs2) = + if nub hs3 == hs3+ then HS hs3+ else error "[H]/monoid: duplicate indices"+ where+ hs3 = sort (hs1 ++ hs2)++instance Semigroup G where+ (G e) <> (G f) = G (e+f)+ instance Monoid US where mempty = US []++instance Monoid HS where+ mempty = HS []++instance Monoid G where+ mempty = G 0++#else++instance Monoid US where+ mempty = US [] (US us1) `mappend` (US us2) = if nub us3 == us3 then US us3@@ -75,6 +114,8 @@ instance Monoid G where mempty = G 0 (G e) `mappend` (G f) = G (e+f)++#endif -------------------------------------------------------------------------------- @@ -149,13 +190,13 @@ injectZMod = ZMod.mapBase injectMonom forgetGamma :: Ord base => ZMod (Gam base) -> ZMod base -forgetGamma = ZMod.filterBase f where+forgetGamma = ZMod.mapMaybeBase f where f (Gam k ab) = case k of 0 -> Just ab _ -> Nothing forgetEquiv :: ChernBase base => ZMod (Gam base) -> ZMod G-forgetEquiv = ZMod.filterBase f where+forgetEquiv = ZMod.mapMaybeBase f where f (Gam k ab) = if (ab == mempty) then Just (G k) else Nothing@@ -211,18 +252,50 @@ -------------------------------------------------------------------------------- -- | This is a hack to reuse the same pushforward code-unsafeEtaToOmega :: Ord ab => FreeMod coeff (Eta ab) -> FreeMod coeff (Omega ab)+unsafeEtaToOmega :: (Eq coeff, Num coeff, Ord ab) => FreeMod coeff (Eta ab) -> FreeMod coeff (Omega ab) unsafeEtaToOmega = ZMod.mapBase f where f (Eta js ab) = Omega js ab -unsafeOmegaToEta :: Ord ab => FreeMod coeff (Omega ab) -> FreeMod coeff (Eta ab)+unsafeOmegaToEta :: (Eq coeff, Num coeff, Ord ab) => FreeMod coeff (Omega ab) -> FreeMod coeff (Eta ab) unsafeOmegaToEta = ZMod.mapBase f where f (Omega js ab) = Eta js ab -------------------------------------------------------------------------------- +#if MIN_VERSION_base(4,11,0) ++instance Semigroup ab => Semigroup (Omega ab) where+ (Omega as ab1) <> (Omega bs ab2) = + if nub cs == cs+ then Omega cs (ab1 <> ab2)+ else error "Omega/monoid: duplicate indices"+ where+ cs = sort (as ++ bs)++instance Semigroup ab => Semigroup (Eta ab) where+ (Eta fs ab1) <> (Eta gs ab2) = + if nub hs == hs+ then Eta hs (ab1 <> ab2)+ else error "Eta/monoid: duplicate indices"+ where+ hs = sort (fs ++ gs)++instance Semigroup ab => Semigroup (Gam ab) where+ (Gam e ab1) <> (Gam f ab2) = Gam (e+f) (ab1 <> ab2)+ instance Monoid ab => Monoid (Omega ab) where mempty = Omega [] mempty++instance Monoid ab => Monoid (Eta ab) where+ mempty = Eta [] mempty++instance Monoid ab => Monoid (Gam ab) where+ mempty = Gam 0 mempty++#else++instance Monoid ab => Monoid (Omega ab) where+ mempty = Omega [] mempty (Omega as ab1) `mappend` (Omega bs ab2) = if nub cs == cs then Omega cs (ab1 <> ab2)@@ -242,6 +315,8 @@ instance Monoid ab => Monoid (Gam ab) where mempty = Gam 0 mempty (Gam e ab1) `mappend` (Gam f ab2) = Gam (e+f) (ab1 <> ab2)++#endif --------------------------------------------------------------------------------
src/Math/RootLoci/Geometry/Forget.hs view
@@ -62,10 +62,10 @@ countDirectCoarsenings :: Partition -> Map Partition Integer countDirectCoarsenings part = Map.fromListWith (+) list where list = - [ ( fromExponentialFrom ((i1+i2,1):(i1,e1-1):(i2,e2-1):rest) , fromIntegral (e1*e2) )+ [ ( fromExponentialForm ((i1+i2,1):(i1,e1-1):(i2,e2-1):rest) , fromIntegral (e1*e2) ) | ( (i1,e1):(i2,e2):[] , rest ) <- choose' 2 ies ] ++- [ ( fromExponentialFrom ((2*i,1):(i,e-2):rest) , binomial e 2 )+ [ ( fromExponentialForm ((2*i,1):(i,e-2):rest) , binomial e 2 ) | ( (i,e):[] , rest ) <- choose' 1 ies , e >= 2 ]
src/Math/RootLoci/Geometry/Mobius.hs view
@@ -31,7 +31,7 @@ import Math.Combinat.Partitions.Set import Math.Combinat.Sets -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.Algebra import Math.RootLoci.Misc
src/Math/RootLoci/Misc.hs view
@@ -4,10 +4,10 @@ module Math.RootLoci.Misc ( module Math.RootLoci.Misc.Common , module Math.RootLoci.Misc.PTable- , module Math.RootLoci.Misc.Pretty + , module Math.Algebra.Polynomial.Pretty ) where import Math.RootLoci.Misc.Common import Math.RootLoci.Misc.PTable-import Math.RootLoci.Misc.Pretty +import Math.Algebra.Polynomial.Pretty
src/Math/RootLoci/Misc/Common.hs view
@@ -1,7 +1,7 @@ -- | Some auxilary functions -{-# LANGUAGE BangPatterns, TypeSynonymInstances, FlexibleInstances, DeriveFunctor #-}+{-# LANGUAGE CPP, BangPatterns, TypeSynonymInstances, FlexibleInstances, DeriveFunctor #-} module Math.RootLoci.Misc.Common where --------------------------------------------------------------------------------@@ -9,6 +9,7 @@ import Data.List import Data.Monoid import Data.Ratio+import Data.Ord import Control.Monad @@ -21,10 +22,6 @@ import qualified Data.Map.Strict as Map import Data.Map (Map) --- import qualified Math.RootLoci.Algebra.FreeMod as ZMod--- import Math.RootLoci.Algebra.SymmPoly--- import Math.RootLoci.Geometry.Cohomology- -------------------------------------------------------------------------------- -- * Pairs @@ -35,6 +32,10 @@ -------------------------------------------------------------------------------- -- * Lists +{-# SPECIALIZE sum' :: [Int] -> Int #-}+sum' :: Num a => [a] -> a+sum' = foldl' (+) 0 + {-# SPECIALIZE unique :: [Partition] -> [Partition] #-} unique :: Ord a => [a] -> [a] unique = map head . group . sort@@ -48,6 +49,34 @@ histogram xs = foldl' f Map.empty xs where f old x = Map.insertWith (+) x 1 old +#if MIN_VERSION_base(4,8,0)+-- sortOn already in base, nothing to do+#else+-- sortOn not yet in base, let's define it+sortOn :: Ord b => (a -> b) -> [a] -> [a]+sortOn f = sortBy (comparing f)+#endif++longZipWith :: (a -> c) -> (b -> c) -> (a -> b -> c) -> [a] -> [b] -> [c]+longZipWith f g h = go where+ go (x:xs) (y:ys) = h x y : go xs ys+ go xs [] = map f xs+ go [] ys = map g ys++evens :: [a] -> [a]+evens (x:xs) = x : odds xs+evens [] = []++odds :: [a] -> [a]+odds (_:xs) = evens xs+odds [] = []++interleave :: [a] -> [a] -> [a]+interleave = go where + go (x:xs) (y:ys) = x : y : go xs ys+ go [] [] = []+ go _ _ = error "interleave: input lists do not have the same length"+ -------------------------------------------------------------------------------- -- * Maps @@ -60,6 +89,21 @@ Just y -> y Nothing -> error "unsafeDeleteLookup: key not found" +-- | Example usage: @insertMap (:[]) (:) ...@+insertMap :: Ord k => (b -> a) -> (b -> a -> a) -> k -> b -> Map k a -> Map k a+insertMap f g k y = Map.alter h k where+ h mb = case mb of+ Nothing -> Just (f y)+ Just x -> Just (g y x) ++-- | Example usage: @buildMap (:[]) (:) ...@+buildMap :: Ord k => (b -> a) -> (b -> a -> a) -> [(k,b)] -> Map k a+buildMap f g xs = foldl' worker Map.empty xs where+ worker !old (k,y) = Map.alter h k old where+ h mb = case mb of+ Nothing -> Just (f y)+ Just x -> Just (g y x) + -------------------------------------------------------------------------------- -- * Partitions @@ -72,6 +116,14 @@ aut part = product $ map factorial es where es = map snd $ toExponentialForm part +-- | TODO: move this into combinat+exponentVector :: Partition -> [Int]+exponentVector p = go 1 (toExponentialForm p) where+ go _ [] = []+ go !i ef@((j,e):rest) = if i<j + then 0 : go (i+1) ef+ else e : go (i+1) rest+ -------------------------------------------------------------------------------- -- * Set partitions @@ -89,6 +141,7 @@ -------------------------------------------------------------------------------- -- * Signs +{- class IsSigned a where signOf :: a -> Maybe Sign @@ -101,6 +154,7 @@ instance IsSigned Int where signOf = signOfNum instance IsSigned Integer where signOf = signOfNum instance IsSigned Rational where signOf = signOfNum+-} -------------------------------------------------------------------------------- -- * Numbers@@ -130,3 +184,48 @@ prod' = foldl' (*) 1 --------------------------------------------------------------------------------+-- * Utility++-- | Put into parentheses+paren :: String -> String+paren s = '(' : s ++ ")"++--------------------------------------------------------------------------------++-- | Exponential form of a partition+expFormString :: Partition -> String+expFormString p = "(" ++ intercalate "," (map f ies) ++ ")" where+ ies = toExponentialForm p+ f (i,e) = show i ++ "^" ++ show e++extendStringL :: Int -> String -> String+extendStringL k s = s ++ replicate (k - length s) ' '++extendStringR :: Int -> String -> String+extendStringR k s = replicate (k - length s) ' ' ++ s++--------------------------------------------------------------------------------+-- * Mathematica-formatted output++class Mathematica a where+ mathematica :: a -> String++instance Mathematica Int where+ mathematica = show++instance Mathematica Integer where+ mathematica = show++instance Mathematica String where+ mathematica = show++instance Mathematica Partition where+ mathematica (Partition ps) = "{" ++ intercalate "," (map show ps) ++ "}"++data Indexed a = Indexed String a++instance Mathematica a => Mathematica (Indexed a) where+ mathematica (Indexed x sub) = "Subscript[" ++ x ++ "," ++ mathematica sub ++ "]"++--------------------------------------------------------------------------------+
− src/Math/RootLoci/Misc/Pretty.hs
@@ -1,137 +0,0 @@--{-# LANGUAGE FlexibleInstances #-}---- | Pretty-printing- -module Math.RootLoci.Misc.Pretty where------------------------------------------------------------------------------------import Data.List--import Math.Combinat.Sign-import Math.Combinat.Partitions.Integer--import qualified Data.Map.Strict as Map-import Data.Map.Strict (Map)--import Math.RootLoci.Algebra.FreeMod ( FreeMod, ZMod, QMod )-import qualified Math.RootLoci.Algebra.FreeMod as ZMod--import Math.RootLoci.Misc.Common------------------------------------------------------------------------------------class Pretty a where- pretty :: a -> String---- instance Pretty a => Pretty (ZMod a) where--- pretty = prettyZMod pretty--instance (Num c, Eq c, Show c, IsSigned c, Pretty b) => Pretty (FreeMod c b) where- pretty = prettyFreeMod' True pretty------------------------------------------------------------------------------------- * Pretty printing elements of free modules---- | Example: @showVarPower "x" 5 == "x^5"@-showVarPower :: String -> Int -> String-showVarPower name expo = case expo of- 0 -> "1"- 1 -> name- _ -> name ++ "^" ++ show expo-------------------------------------------------------------------------------------- | no multiplication sign (ok for mathematica and humans)-prettyZMod_ :: (b -> String) -> ZMod b -> String-prettyZMod_ = prettyFreeMod' False- --- | multiplication sign (ok for maple etc)-prettyZMod :: (b -> String) -> ZMod b -> String-prettyZMod = prettyFreeMod' True------------------------------------------------------------------------------------prettyFreeMod' - :: (Num c, Eq c, Show c, IsSigned c) - => Bool -- ^ use star for multiplication (@False@ means just concatenation)- -> (b -> String) -- ^ show base- -> FreeMod c b - -> String-prettyFreeMod' star showBase what = final where- final = if take 3 stuff == " + " then drop 3 stuff else drop 1 stuff- stuff = concatMap f (ZMod.toList what) - f (g, 1) = plus ++ showBase' g- f (g, -1) = minus ++ showBase' g- f (g, c) = sgn c ++ {- extendStringR 3 -} (show $ abs c) ++ starStr ++ showBase' g- -- cond (_,c) = (c/=0)- starStr = if star then "*" else " "- showBase' g = case showBase g of- "" -> "1" -- "(1)"- s -> s- sgn c = case signOf c of- Just Minus -> minus- _ -> plus- plus = " + "- minus = " - "--prettyFreeMod'' - :: (c -> String) -- ^ show coefficient- -> (b -> String) -- ^ show base- -> FreeMod c b - -> String-prettyFreeMod'' showCoeff showBase what = result where- result = intercalate " + " (map f $ ZMod.toList what) - f (g, c) = showCoeff c ++ starStr ++ showBase' g- starStr = "*" -- if star then "*" else " "- showBase' g = case showBase g of- "" -> "1" -- "(1)"- s -> s------------------------------------------------------------------------------------- * Utility---- | Put into parentheses-paren :: String -> String-paren s = '(' : s ++ ")"-------------------------------------------------------------------------------------- | Exponential form of a partition-expFormString :: Partition -> String-expFormString p = "(" ++ intercalate "," (map f ies) ++ ")" where- ies = toExponentialForm p- f (i,e) = show i ++ "^" ++ show e--extendStringL :: Int -> String -> String-extendStringL k s = s ++ replicate (k - length s) ' '--extendStringR :: Int -> String -> String-extendStringR k s = replicate (k - length s) ' ' ++ s------------------------------------------------------------------------------------- * Mathematica-formatted output--class Mathematica a where- mathematica :: a -> String--instance Mathematica Int where- mathematica = show--instance Mathematica Integer where- mathematica = show--instance Mathematica String where- mathematica = show--instance Mathematica Partition where- mathematica (Partition ps) = "{" ++ intercalate "," (map show ps) ++ "}"--data Indexed a = Indexed String a--instance Mathematica a => Mathematica (Indexed a) where- mathematica (Indexed x sub) = "Subscript[" ++ x ++ "," ++ mathematica sub ++ "]"-----------------------------------------------------------------------------------
+ src/Math/RootLoci/Motivic/Abstract.hs view
@@ -0,0 +1,430 @@++-- | The abstract motivic algorithm+--+-- See: B. Komuves: Motivic characteristic classes of discriminant strata+--+-- TODO: caching of results (otherwise it is very slow)++{-# LANGUAGE CPP, BangPatterns, FlexibleInstances, TypeSynonymInstances,+ MultiParamTypeClasses, FunctionalDependencies, GeneralizedNewtypeDeriving,+ TypeFamilies+ #-}+module Math.RootLoci.Motivic.Abstract where++--------------------------------------------------------------------------------++import Data.Char+import Data.List+import Data.Ord+import Data.Maybe++import Data.Map.Strict (Map)+import qualified Data.Map.Strict as Map++import qualified Math.Algebra.Polynomial.FreeModule as ZMod +import Math.Algebra.Polynomial.FreeModule (ZMod,QMod,FreeMod)+import Math.Algebra.Polynomial.Pretty++import Math.Combinat.Classes hiding (empty)+import Math.Combinat.Tuples+import Math.Combinat.Partitions+import Math.Combinat.Permutations hiding (permute)++-- import Debug.Trace+-- debug s x y = trace (">>> " ++ s ++ " -> " ++ show x) y++import Math.RootLoci.Motivic.Classes+import Math.RootLoci.Misc.Common++--------------------------------------------------------------------------------+-- * The abstract algorithm++-- | The (abstract) class of @Sym^n(X)@+symn :: Num c => Dim -> FreeMod c SingleLam+symn dim = ZMod.generator $ SingleLam (Bindings [dim]) (Single [(DeBruijn 0, 1)])++-- | The open stratum X(1,1,...,1)+open :: Dim -> ZMod SingleLam+open d@(Dim n) = symn d `ZMod.sub` rest where+ rest = ZMod.sum [ xlam p | p <- partitions n , width p < n ]++zeros :: Int -> ZMod MultiLam+zeros k = ZMod.generator + $ MultiLam (Bindings []) (Multi $ replicate k (Single []))++-- | The open stratum X(lambda)+xlam :: Partition -> ZMod SingleLam+xlam p = + if height p == 1 + then open (Dim $ weight p)+ else normalize $ psi $ omega123 $ dvec $ dimVector p++-- | The open stratum D(n1,n2,...)+dvec :: [Dim] -> ZMod MultiLam+dvec dims0 = permute invperm sorted where+ invperm = inversePermutation perm+ perm = sortingPermutationDesc dims0+ dims1 = permuteList perm dims0+ (dims2,dzeros) = span (>0) dims1 -- separate zero dimensions+ sorted = cross (dvecSorted dims2) (zeros $ length dzeros)++-- | The open stratum D(n1,n2,...), assuming @n1 >= n2 >= n3 >= ...@+dvecSorted :: [Dim] -> ZMod MultiLam+dvecSorted [] = error "dvec: empty dimension vector shouldn't appear in the algorithm"+dvecSorted [n] = singleToMulti (open n)+dvecSorted (p:ns) = normalize (ZMod.sub big rest) where+ big = cross (singleToMulti $ open p) (dvecSorted ns)+ rest = ZMod.sum + [ theta (dvec (k : interleave ds es))+ | ds <- dimTuples ns+ , let es = zipWith (-) ns ds+ , let l = sum es+ , l > 0 + , let k = p - l+ , k >= 0+ ] ++--------------------------------------------------------------------------------+-- * Data types and instances++-- | A variable, implemented as a /de Bruijn level/ (indexing starts from 0)+newtype Var + = DeBruijn Int + deriving (Eq,Ord,Show)++--------------------------------------------------------------------------------++-- | We use de Bruijn levels to index the bound variables, and ecah bound variables has a dimension+newtype Bindings + = Bindings [Dim]+ deriving (Eq,Ord,Show)++numberOfBoundVariables :: Bindings -> Int+numberOfBoundVariables (Bindings ds) = length ds++dimensionTable :: Bindings -> Map Var Dim+dimensionTable (Bindings dims) = Map.fromList $ zip (map DeBruijn [0..]) dims++--------------------------------------------------------------------------------++-- | An expression living on @Sym^n(X)@, with free variables+newtype Single+ = Single [(Var,Int)]+ deriving (Eq,Ord,Show)++unSingle :: Single -> [(Var,Int)]+unSingle (Single ves) = ves++-- | An expression living on @Sym^{n_1}(X) x ... x Sym^{n_r}(X)@, with free variables+newtype Multi+ = Multi [Single]+ deriving (Eq,Ord,Show)++-- | A lambda expression living on @Sym^n(X)@, with variables bound to @Sym^d(X)@ with different dimensions+data SingleLam+ = SingleLam !Bindings !Single+ deriving (Eq,Ord,Show)++-- | A lambda expression living on @Sym^{n_1}(X) x ... x Sym^{n_r}(X)@, with variables bound to @Sym^d(X)@ with different dimensions+data MultiLam+ = MultiLam !Bindings !Multi+ deriving (Eq,Ord,Show)++--------------------------------------------------------------------------------++instance Pretty Bindings where+ pretty (Bindings dims) = "\\" ++ concat (zipWith f vars dims) where+ vars = map DeBruijn [0..]+ f v d = "(" ++ pretty v ++ ":S" ++ show d ++ ")"++instance Pretty Var where + pretty (DeBruijn i) = chr (97 + i) : []++instance Pretty (Var,Int) where+ pretty (v,0) = "1"+ pretty (v,1) = pretty v+ pretty (v,e) = pretty v ++ "^" ++ show e++instance Pretty Single where+ pretty (Single ves) = intercalate "*" $ map pretty ves++instance Pretty Multi where+ pretty (Multi ts) = "[" ++ (intercalate "," $ map pretty ts) ++ "]"++instance Pretty SingleLam where+ pretty (SingleLam binds body) = "{" ++ pretty binds ++ "->" ++ pretty body ++ "}"++instance Pretty MultiLam where+ pretty (MultiLam binds body) = "{" ++ pretty binds ++ "->" ++ pretty body ++ "}"++--------------------------------------------------------------------------------++instance Degree SingleLam where+ type MultiDegree SingleLam = Int+ multiDegree (SingleLam binds (Single ves)) = sum [ (unDim $ (Map.!) dimTable v) * e | (v,e) <- ves ] where+ dimTable = dimensionTable binds+ totalDegree = multiDegree++instance Degree MultiLam where+ type MultiDegree MultiLam = [Int]+ multiDegree (MultiLam binds (Multi bodies)) = map totalDegree [ (SingleLam binds b) | b <- bodies ]+ totalDegree = sum . multiDegree++--------------------------------------------------------------------------------++instance Empty Bindings where+ empty = Bindings []++instance Empty Single where+ empty = Single []++instance Empty Multi where+ empty = Multi []++instance Empty SingleLam where+ empty = SingleLam empty empty++instance Empty MultiLam where+ empty = MultiLam empty empty++--------------------------------------------------------------------------------++-- | Shift de Bruijn levels+class Shift a where+ shift :: Int -> a -> a+ +instance Shift Var where+ shift k (DeBruijn l) = DeBruijn (k+l)++instance Shift Single where+ shift k (Single ves) = Single [ (shift k v, e) | (v,e) <- ves ]++instance Shift Multi where+ shift k (Multi terms) = Multi $ map (shift k) terms++--------------------------------------------------------------------------------++-- | Rename variables+class Rename a where+ rename :: (Var -> Var) -> a -> a++instance Rename Var where+ rename f v = f v++instance Rename (Var,Int) where+ rename f (v,e) = (f v, e)++instance Rename Single where+ rename f (Single ves) = Single $ map (rename f) ves++instance Rename Multi where+ rename f (Multi ts) = Multi $ map (rename f) ts++--------------------------------------------------------------------------------++-- | Extract the exponent of a given variable+exponentOf :: Var -> Single -> Int+exponentOf u (Single ves) = sum [ e | (v,e) <- ves , v==u ]++-- | Extract the exponent vector of a given variable+exponentVectorOf :: Var -> Multi -> [Int]+exponentVectorOf v (Multi ts) = map (exponentOf v) ts++--------------------------------------------------------------------------------++instance Normalize Single where+ normalize (Single ves) = Single $ Map.toList $ Map.fromListWith (+) ves++instance Normalize Multi where+ normalize (Multi terms) = Multi (map normalize terms) ++normalizeWithExpo :: (Rename term, Normalize term, Ord expo) => (expo -> Bool) -> (Var -> term -> expo) -> (Bindings,term) -> (Bindings,term) +normalizeWithExpo cond expo (binds,body) = (binds',body') where+ Bindings dims = binds+ vars = map DeBruijn [0..]+ vby = [ (v,(d,es)) | (v,d) <- zip vars dims , let es = expo v body , cond es ]+ sorted = sortOn snd vby+ dims' = map (fst . snd) sorted+ binds' = Bindings dims'+ f v = DeBruijn $ fromJust $ findIndex (\pair -> fst pair == v) sorted+ body' = normalize $ rename f $ body++instance Normalize SingleLam where+ normalize (SingleLam binds body) = SingleLam binds' body' where+ (binds',body') = normalizeWithExpo (>0) exponentOf (binds,body)++instance Normalize MultiLam where+ normalize (MultiLam binds body) = MultiLam binds' body' where+ cond ds = any (>0) ds+ (binds',body') = normalizeWithExpo cond f (binds,body)+ f v = {- reverse . -} exponentVectorOf v++instance (Eq c, Num c) => Normalize (FreeMod c SingleLam) where+ normalize = ZMod.mapBase normalize++instance (Eq c, Num c) => Normalize (FreeMod c MultiLam) where+ normalize = ZMod.mapBase normalize++--------------------------------------------------------------------------------++instance SuperNormalize Multi where+ superNormalize (Multi ts) = Multi $ reverse $ dropWhile isempty $ reverse $ map normalize $ ts where+ isempty (Single xs) = null xs++instance SuperNormalize MultiLam where+ superNormalize mlam = MultiLam binds (superNormalize body) where+ (MultiLam binds body) = normalize mlam++instance (Eq c, Num c) => SuperNormalize (FreeMod c MultiLam) where+ superNormalize = ZMod.mapBase superNormalize+ +--------------------------------------------------------------------------------++instance Cross Bindings where+ cross (Bindings ds) (Bindings es) = Bindings (ds++es)+ crossInterleave = error "Bindings/crossInterleave: undefined"+ +instance Cross Multi where+ cross (Multi xs) (Multi ys) = Multi (xs++ys)+ crossInterleave (Multi xs) (Multi ys) = Multi (interleave xs ys)++instance Cross MultiLam where+ cross (MultiLam binds1 bodies1) (MultiLam binds2 bodies2) = normalize $ MultiLam binds3 bodies3 where+ n1 = numberOfBoundVariables binds1+ binds3 = binds1 `cross` binds2+ bodies3 = bodies1 `cross` (shift n1 bodies2)++ crossInterleave (MultiLam binds1 bodies1) (MultiLam binds2 bodies2) = normalize $ MultiLam binds3 bodies3 where+ n1 = numberOfBoundVariables binds1+ binds3 = binds1 `cross` binds2+ bodies3 = bodies1 `crossInterleave` (shift n1 bodies2)++instance (Eq c, Num c) => Cross (FreeMod c MultiLam) where+ cross x y = normalize $ ZMod.mulWith cross x y+ crossInterleave x y = normalize $ ZMod.mulWith crossInterleave x y++--------------------------------------------------------------------------------++instance SingleToMulti Single Multi where+ singleToMulti = Multi . (:[])++instance SingleToMulti SingleLam MultiLam where+ singleToMulti (SingleLam binds single) = MultiLam binds (Multi [single])++instance (Eq c, Num c) => SingleToMulti (FreeMod c SingleLam) (FreeMod c MultiLam) where+ singleToMulti = ZMod.mapBase singleToMulti++--------------------------------------------------------------------------------++instance Omega (Var,Int) where+ omega 0 _ = omegaZeroError + omega k (v,d) = (v,d*k)++instance Omega Single where+ omega 0 _ = Single [] -- omegaZeroError + omega k (Single ves) = Single $ map (omega k) ves++instance Omega Multi where+ omega 0 _ = omegaZeroError + omega k (Multi ts) = Multi $ map (omega k) ts++instance Omega SingleLam where+ omega 0 _ = omegaZeroError + omega k (SingleLam binds body) = SingleLam binds (omega k body)++instance Omega MultiLam where+ omega 0 _ = omegaZeroError + omega k (MultiLam binds body) = MultiLam binds (omega k body)++instance (Eq c, Num c) => Omega (FreeMod c SingleLam) where+ omega 0 = omegaZeroError + omega k = ZMod.mapBase (omega k)++instance (Eq c, Num c) => Omega (FreeMod c MultiLam) where+ omega 0 = omegaZeroError + omega k = normalize . ZMod.mapBase (omega k)++--------------------------------------------------------------------------------++instance Omega123 Multi where+ omega123 (Multi ts) = Multi $ zipWith omega [1..] ts++instance Omega123 MultiLam where+ omega123 (MultiLam binds body) = MultiLam binds (omega123 body)++instance (Eq c, Num c) => Omega123 (FreeMod c MultiLam) where+ omega123 = normalize . ZMod.mapBase omega123++--------------------------------------------------------------------------------++instance Psi Multi Single where+ psi (Multi ts) = normalize $ Single $ concat $ map unSingle ts++instance Psi MultiLam SingleLam where+ psi (MultiLam binds body) = SingleLam binds (psi body)++instance (Eq c, Num c) => Psi (FreeMod c MultiLam) (FreeMod c SingleLam) where+ psi = normalize . ZMod.mapBase psi++instance (Eq c, Num c) => Psi [FreeMod c SingleLam] (FreeMod c SingleLam) where+ psi = normalize . psi . crossMany . map singleToMulti++--------------------------------------------------------------------------------++instance PsiEvenOdd Multi where+ psiEvenOdd (Multi ts) = normalize $ Multi $ zipWith f (evens ts) (odds ts) where+ f (Single xs) (Single ys) = Single (xs++ys)++instance PsiEvenOdd MultiLam where+ psiEvenOdd (MultiLam binds body) = MultiLam binds (psiEvenOdd body)++instance PsiEvenOdd (ZMod MultiLam) where+ psiEvenOdd = normalize . ZMod.mapBase psiEvenOdd++--------------------------------------------------------------------------------++instance Pontrjagin SingleLam where+ pontrjaginOne = empty+ pontrjaginMul a b = psi $ cross (singleToMulti a) (singleToMulti b)++instance Pontrjagin MultiLam where+ pontrjaginOne = empty+ pontrjaginMul a b = psiEvenOdd $ crossInterleave a' b' where+ (a',b') = extendToCommonSize (a,b)++--------------------------------------------------------------------------------++instance ExtendToCommonSize Multi where+ extendToCommonSize (Multi xs, Multi ys) = (Multi xs', Multi ys') where+ (xs',ys') = extendToCommonSize (xs,ys) ++instance ExtendToCommonSize MultiLam where+ extendToCommonSize (MultiLam as xs, MultiLam bs ys) = (MultiLam as xs', MultiLam bs ys') where+ (xs',ys') = extendToCommonSize (xs,ys) ++--------------------------------------------------------------------------------++instance Permute Multi where+ permute p (Multi ts) = Multi (permuteList p ts)++instance Permute MultiLam where+ permute p (MultiLam binds multi) = MultiLam binds (permute p multi)++instance Permute (ZMod MultiLam) where+ permute p = ZMod.mapBase (permute p)++--------------------------------------------------------------------------------++instance Theta Multi where+ theta (Multi (u:us)) = Multi (a:bs) where+ a = psi $ Multi (u : odds us)+ bs = zipWith f (evens us) (odds us)+ f (Single u) (Single v) = normalize $ Single (u ++ v)++instance Theta MultiLam where+ theta (MultiLam binds body) = MultiLam binds (theta body)++instance Theta (ZMod MultiLam) where+ theta = normalize . ZMod.mapBase theta++--------------------------------------------------------------------------------
+ src/Math/RootLoci/Motivic/Classes.hs view
@@ -0,0 +1,182 @@++{-# LANGUAGE FlexibleInstances, TypeSynonymInstances,+ MultiParamTypeClasses, FunctionalDependencies, + TypeFamilies, DataKinds, GeneralizedNewtypeDeriving+ #-}+module Math.RootLoci.Motivic.Classes where++--------------------------------------------------------------------------------++import Data.Char+import Data.List+import Data.Ord+import Data.Maybe++import GHC.TypeLits++import Data.Map.Strict (Map)+import qualified Data.Map.Strict as Map++import qualified Math.Algebra.Polynomial.FreeModule as ZMod +import Math.Algebra.Polynomial.FreeModule (ZMod,QMod,FreeMod)+import Math.Algebra.Polynomial.Pretty++import Math.Combinat.Classes hiding (empty)+import Math.Combinat.Tuples+import Math.Combinat.Partitions+import Math.Combinat.Permutations hiding (permute)++import Math.Algebra.Polynomial.Class+import Math.Algebra.Polynomial.Monomial.Indexed ++import Math.RootLoci.Misc.Common++--------------------------------------------------------------------------------+-- * Dimensions++-- | A dimension (@d@ in @Sym^d(X)@)+newtype Dim + = Dim Int+ deriving (Eq,Ord,Show,Num)++unDim :: Dim -> Int+unDim (Dim d) = d++dimVector :: Partition -> [Dim]+dimVector = map Dim . exponentVector++dimTuples :: [Dim] -> [[Dim]]+dimTuples + = (map . map) Dim+ . tuples'+ . map unDim ++--------------------------------------------------------------------------------+-- * Classes++-- | Degree of something+class Degree a where+ type MultiDegree a :: *+ totalDegree :: a -> Int+ multiDegree :: a -> MultiDegree a++instance (KnownNat n) => Degree (XS v n) where+ type MultiDegree (XS v n) = [Int]+ totalDegree = totalDegXS+ multiDegree = xsToExponents++--------------------------------------------------------------------------------++class Empty a where+ empty :: a++instance Empty [a] where+ empty = []++instance Empty (Maybe a) where+ empty = Nothing++instance Empty Int where+ empty = 0++instance KnownNat n => Empty (XS v n) where+ empty = emptyXS++--------------------------------------------------------------------------------++-- | Normalize terms and lambdas+class Normalize a where+ normalize :: a -> a++-- | This is a hack because there is some issue when this is included in normalize that i don't want to debug right now+class SuperNormalize a where+ superNormalize :: a -> a + +--------------------------------------------------------------------------------++-- | Exterior (or cross) product+class Cross a where+ cross :: a -> a -> a+ crossMany :: [a] -> a+ crossMany = foldl1' cross+ crossInterleave :: a -> a -> a -- ^ interleaved cross product of vectors++instance Cross [a] where+ cross = (++)+ crossMany = concat + crossInterleave xs ys = interleave xs ys++-------------------------------------------------------------------------------++-- | Conversion from scalar to vector+class SingleToMulti s t | s->t, t->s where+ singleToMulti :: s -> t++--------------------------------------------------------------------------------++omegaZeroError :: a+omegaZeroError = error "Omega^0 should not appear in the algorithm"++-- | replicating points (power map)+class Omega a where+ omega :: Int -> a -> a++--------------------------------------------------------------------------------++-- | @Omega^{1,2,3,...}@+class Omega123 a where+ omega123 :: a -> a++--------------------------------------------------------------------------------++-- | The merging (or multiplication) map+class Psi t s | t->s where+ psi :: t -> s++--------------------------------------------------------------------------------++-- | The interleaved pairwise merging map+class PsiEvenOdd t where+ psiEvenOdd :: t -> t++--------------------------------------------------------------------------------++-- | Pontrjagin ring+class Pontrjagin a where+ pontrjaginOne :: a + pontrjaginMul :: a -> a -> a++--------------------------------------------------------------------------------++class ExtendToCommonSize a where+ extendToCommonSize :: (a,a) -> (a,a)++instance Empty a => ExtendToCommonSize [a] where+ extendToCommonSize (xs,ys) = (xs',ys') where+ a = length xs+ b = length ys+ n = max a b+ xs' = xs ++ replicate (n-a) empty+ ys' = ys ++ replicate (n-b) empty++--------------------------------------------------------------------------------++-- | Applying permutations+class Permute a where+ permute :: Permutation -> a -> a++instance Permute [a] where+ permute = permuteList++--------------------------------------------------------------------------------++-- | The custom pusforward @Theta@ appearing in the algorithm+--+-- we subdivide the input as @[z;x1,y1,x2,y2,x3,y3...]@+-- and then duplicate each of @y1,y2,y3...@, then combine the left copies of @y_i@ with+-- @z@, and the right copies of @y_i@ with the corresponding @x_i@-s, resulting in+-- @[z*y1*y2*...;x1*y1,x2*y2,...]@+class Theta a where+ theta :: a -> a --mypf :: a -> a++--------------------------------------------------------------------------------
+ src/Math/RootLoci/Motivic/Homology.hs view
@@ -0,0 +1,173 @@+ +-- | Motivic classes in homology + +{-# LANGUAGE + DataKinds, KindSignatures, TypeOperators, ScopedTypeVariables, MultiParamTypeClasses, + TypeFamilies, FlexibleContexts, TypeSynonymInstances, FlexibleInstances + #-} +module Math.RootLoci.Motivic.Homology where + +-------------------------------------------------------------------------------- + +import Data.Array + +import Data.Proxy +import GHC.TypeLits + +import Unsafe.Coerce as Unsafe + +import Math.Combinat.Classes +import Math.Combinat.Numbers +import Math.Combinat.Partitions + +import qualified Math.Algebra.Polynomial.FreeModule as ZMod + +import qualified Math.Algebra.Polynomial.Monomial.Infinite as XInf +import qualified Math.Algebra.Polynomial.Monomial.Indexed as XS + +import Math.Algebra.Polynomial.Multivariate.Infinite as XInf +import Math.Algebra.Polynomial.Multivariate.Indexed as XS + +import Math.Algebra.Polynomial.Class +import Math.Algebra.Polynomial.Univariate +import Math.Algebra.Polynomial.Pretty + +import Math.RootLoci.Geometry.Cohomology ( G(..) ) + +import Math.RootLoci.Misc.Common +import Math.RootLoci.Motivic.Abstract as Abstract +import Math.RootLoci.Motivic.Classes + +import Math.RootLoci.CSM.Aluffi + +-------------------------------------------------------------------------------- + +interpretSingleLam :: (Dim -> KRing Integer) -> SingleLam -> KRing Integer +interpretSingleLam symFun (SingleLam (Bindings bindings) (Single body)) = result where + syms = map symFun bindings + result = psiAny $ crossKs $ map f body + f (DeBruijn i, e) = omegaH e (syms!!i) + +csmPn :: Dim -> KRing Integer +csmPn (Dim d) = Uni $ ZMod.fromList [ (U k , binomial (d+1) (k+1)) | k<-[0..d] ] + +-- | CSM class in homology +csm_xlam_P1 :: Partition -> KRing Integer +csm_xlam_P1 part = Uni $ ZMod.flatMap f (Abstract.xlam part) where + f x = unUni (interpretSingleLam csmPn x) + +-- | CSM class in cohomology (via Poincare duality) +csm_xlam_P1_cohom :: Partition -> ZMod.ZMod G +csm_xlam_P1_cohom part = ZMod.mapBase f $ unUni $ csm_xlam_P1 part where + n = weight part + f (U k) = G (n-k) + +-- | Compares Aluffi's CSM formula to the motivic algorithm (up to partitions of size @n@) +test_motivic_csm_vs_aluffi :: Int -> Bool +test_motivic_csm_vs_aluffi n = and + [ csm_xlam_P1_cohom part == aluffiOpenCSM part + | k<-[1..n] , part <- partitions k + ] + +-------------------------------------------------------------------------------- + +instance SingleToMulti (KRing c) (GRing c) where + singleToMulti = embedInf + +instance Ring c => Psi (GRing c) (KRing c) where + psi = psiAny + +instance Ring c => Omega (KRing c) where + omega = omegaH + +-------------------------------------------------------------------------------- + +type KRing c = Univariate c "u" -- ^ @lim_n H_*(Sym^n(P1))@ +type GRing c = XInf.Poly c "u" -- ^ @lim_{n1,n2,...} H_*(Sym^n1(P1) x Sym^n2(P1) x ... )@ + +-- fuck Haskell's type level naturals, they are completely unusable +-- type NRing c k = XS.Poly c "u" k -- ^ @lim_{n1,...,nk} H_*(Sym^n1(P1) x ... x Sym^nk(P1) )@ + +embedInf :: KRing c -> GRing c +embedInf = XInf.Poly . ZMod.unsafeMapBase f . unUni where + f (U k) = if k > 0 then XInf [k] else XInf [] + +project1 :: GRing c -> KRing c +project1 = Uni . ZMod.unsafeMapBase f . XInf.unPoly where + f (XInf ns) = U $ head ns + +delta2 :: Ring c => KRing c -> GRing c +delta2 = XInf.Poly . ZMod.flatMap f . unUni where + f (U k) = ZMod.sum [ ZMod.generator (XInf [i,k-i]) | i<-[0..k] ] + +deltaN :: Ring c => Int -> KRing c -> GRing c +deltaN n input + | n <= 0 = error "deltaN: n <= 0" + | n == 1 = embedInf input + | n == 2 = delta2 input + | otherwise = unify1st2nd + $ mapCoeffP delta2 + $ separate1st (deltaN (n-1) input) + where + mapCoeffP f = XInf.Poly . ZMod.mapCoeff f . XInf.unPoly + +psi2 :: Ring c => GRing c -> KRing c +psi2 = Uni . ZMod.mapMaybeBaseCoeff f . XInf.unPoly where + f (XInf xs) = let [i,j] = take 2 (xs ++ [0,0]) + in Just ( U (i+j) , fromInteger (binomial (i+j) i) ) + +psiNaive :: (Ring c) => Int -> GRing c -> KRing c +psiNaive n input + | n <= 0 = error "psiN: n <= 0" + | n == 1 = project1 input + | n == 2 = psi2 input + | otherwise = psi2 $ kkToG2 $ psiNaive (n-1) $ separate1st input + +psiAny :: Ring c => GRing c -> KRing c +psiAny = Uni . ZMod.mapMaybeBaseCoeff f . XInf.unPoly where + f (XInf is) = Just (U (sum is) , fromInteger (multinomial is)) + +omegaNaive :: Ring c => Int -> KRing c -> KRing c +omegaNaive n = psiAny . deltaN n + +omegaH :: Ring c => Int -> KRing c -> KRing c +omegaH d = Uni . ZMod.mapMaybeBaseCoeff f . unUni where + f (U k) = Just (U k, fromIntegral d ^ k) + +separate1st :: forall c n. (Ring c) => GRing c -> GRing (KRing c) +separate1st = XInf.Poly . ZMod.mapMaybeBaseCoeff g . ZMod.mapCoeff f . XInf.unPoly where + f c = scalarP c :: KRing c + g (XInf (k:ns)) = Just (XInf ns, c) where + c = monomP (U k) + +unify1st :: forall c n. (Ring c) => GRing (KRing c) -> GRing c +unify1st = XInf.Poly . ZMod.fromList . concatMap f . ZMod.toList . XInf.unPoly where + f (XInf xs , Uni poly) = [ (XInf (k:xs) , c) | (U k, c) <- ZMod.toList poly ] + +unify1st2nd :: forall c n. (Ring c) => GRing (GRing c) -> GRing c +unify1st2nd = XInf.Poly . ZMod.fromList . concatMap f . ZMod.toList . XInf.unPoly where + f (XInf xs , XInf.Poly poly) = [ (XInf (kl++xs) , c) | (XInf kl0, c) <- ZMod.toList poly , let kl = take 2 (kl0++[0,0]) ] + +crossKs :: Ring c => [KRing c] -> GRing c +crossKs = XInf.Poly . ZMod.productWith empty cross . map (ZMod.mapBase sing) . map unUni where + sing (U k) = XInf [k] + cross (XInf as) (XInf bs) = XInf (as++bs) + empty = XInf [] + +kkToG2 :: Ring c => KRing (KRing c) -> GRing c +kkToG2 = XInf.Poly . ZMod.fromList . concatMap f . ZMod.toList . unUni where + f (U k , Uni poly) = [ (XInf [k,l] , c) | (U l, c) <- ZMod.toList poly ] + +unifyKK :: Ring c => KRing (KRing c) -> KRing c +unifyKK = Uni . ZMod.fromList . concatMap f . ZMod.toList . unUni where + f (U k , Uni poly) = [ (U (k+l) , c) | (U l, c) <- ZMod.toList poly ] + +-------------------------------------------------------------------------------- + +{- +deltaN :: Num c => Int -> KRing c -> GRing c +deltaN 0 = error "deltaN: 0" +deltaN 1 = embed +deltaN 2 = delta2 +deltaN +-}
+ src/Math/RootLoci/Segre/Equivariant.hs view
@@ -0,0 +1,137 @@++-- | The equivariant Segre-Schwartz-MacPherson classes+--+-- We can recover the Segre-SM classes by dividing the CSM class+-- by the total Chern class of the tangent bundle of the (smooth)+-- ambient variety.+--+-- The Segre-SM class is useful because it behaves well wrt. pullback.+--++{-# LANGUAGE ScopedTypeVariables, BangPatterns #-}+module Math.RootLoci.Segre.Equivariant where++--------------------------------------------------------------------------------++import Math.Combinat.Classes+import Math.Combinat.Numbers+import Math.Combinat.Sign+import Math.Combinat.Compositions+import Math.Combinat.Partitions.Integer+import Math.Combinat.Numbers.Series++import Data.Array (Array)+import Data.Array.IArray++import Math.RootLoci.Algebra+import Math.RootLoci.Geometry+import Math.RootLoci.Misc++import qualified Math.Algebra.Polynomial.FreeModule as ZMod++import Math.RootLoci.CSM.Equivariant.Umbral -- this is the fastest one++--------------------------------------------------------------------------------+-- * The total Chern class++-- | Total Chern class of the representation @Sym^m C^2@ +--+-- > c(Sym^m C^2) = \prod_{i=0}^m (1 + i*a + (m-i)*b)+--+affTotalChernClass :: ChernBase base => Int -> ZMod base+affTotalChernClass m = select1 (total , abToChern total) where+ total = product [ 1 + w | w <- affineWeights m ]++-- | Parts of the total Chern class, separated by degree+affTotalChernClassByDegree :: ChernBase base => Int -> [ZMod base]+affTotalChernClassByDegree = elems . separateGradedParts . affTotalChernClass++--------------------------------------------------------------------------------+-- * Inverse of the total Chern class++-- | Infinite power series expansion (by degree) of the multiplicative+-- inverse of the total Chern class of the representation @Sym^m C^2@+--+-- This is just the sum of all complete symmetric polynomials of the sums.+--+recipTotalChernClass :: forall base. ChernBase base => Int -> [ZMod base]+recipTotalChernClass m = pseries' coeffs where++ coeffs = zip (map ZMod.neg prodWeights) [1..]+ prodWeights = tail (affTotalChernClassByDegree m)++-- | Another implementation of 'recipTotalChernClass'+recipTotalChernClass2 :: forall base. ChernBase base => Int -> [ZMod base]+recipTotalChernClass2 m = integralReciprocalSeries (affTotalChernClassByDegree m) where++-- | A third, very slow implementation of 'recipTotalChernClass'+recipTotalChernClassSlow :: forall base. ChernBase base => Int -> [ZMod base]+recipTotalChernClassSlow m = select2 (list , map abToChern list) where++ weights = affineWeights m+ list = [ grade d | d <- [0..] ]++ grade :: Int -> ZMod AB+ grade d = negateIfOdd d + $ ZMod.sum (map mkProduct $ compositions (m+1) d)++ mkProduct es = ZMod.product [ (weightPowers!i) !! e | (i,e) <- zip [0..m] es ]++ -- much faster to cache to powers of the weights!+ weightPowers :: Array Int [ZMod AB]+ weightPowers = listArray (0,m) [ wtPowList (weights !! i) | i <- [0..m] ] ++ wtPowList :: ZMod AB -> [ZMod AB]+ wtPowList w = go 1 where { go !x = x : go (x*w) }+++--------------------------------------------------------------------------------++-- | Divides a polynomial with the total chern class. As the result is an+-- infinite power series, we return it's homogeneous parts as an infinite list.+--+-- Equivalent (but should be faster than) to:+--+-- > separeteGradedParts what `mulSeries` (recipTotalChernClass m)+-- +divideByTotalChernClass :: ChernBase base => Int -> ZMod base -> [ZMod base]+divideByTotalChernClass m what = convolveWithPSeries' coeffs numerList where++ numerArr = separateGradedParts what+ numerList = elems numerArr++ coeffs = zip (map ZMod.neg prodWeights) [1..]+ prodWeights = tail (affTotalChernClassByDegree m)++-- | Another, very slow implementation of 'divideByTotalChernClass'+divideByTotalChernClassSlow :: ChernBase base => Int -> ZMod base -> [ZMod base]+divideByTotalChernClassSlow m what = final where+ (0,n) = bounds numerArr+ numerArr = separateGradedParts what+ denomList = recipTotalChernClassSlow m+ final = [ part d | d <- [0..] ]+ part deg = ZMod.sum + [ (numerArr ! i) * (denomList !! j) + | j <- [ max 0 (deg-n) .. deg ] + , let i = deg - j + ]++--------------------------------------------------------------------------------+-- * Affine Segre-SM classes++-- | Affine equivariant Segre-SM class of the open strata+affineOpenSegreSM :: ChernBase base => Partition -> [ZMod base]+affineOpenSegreSM part = divideByTotalChernClass m (umbralAffOpenCSM part) where+ m = weight part++-- | Affine equivariant Segre-SM class of the zero orbit+affineZeroSegreSM :: ChernBase base => Int -> [ZMod base]+affineZeroSegreSM m = divideByTotalChernClass m (affineZeroCSM m)++-- | Affine equivariant Segre-SM class of the closure of the strata (including the zero orbit!)+affineClosedSegreSM :: ChernBase base => Partition -> [ZMod base]+affineClosedSegreSM part = divideByTotalChernClass m (umbralAffClosedCSM part) where+ m = weight part++--------------------------------------------------------------------------------+
test/Tests/CSM/Equivariant.hs view
@@ -1,8 +1,7 @@ -- | Tests for the equivariant CSM class --{-# LANGUAGE Rank2Types, GADTs, TypeFamilies #-}+{-# LANGUAGE Rank2Types, GADTs, TypeFamilies, PackageImports #-} module Tests.CSM.Equivariant where --------------------------------------------------------------------------------@@ -13,7 +12,7 @@ import Math.Combinat.Partitions.Integer import Math.Combinat.Partitions.Set -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified "polynomial-algebra" Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.Algebra import Math.RootLoci.Geometry
test/Tests/CSM/Projective.hs view
@@ -1,7 +1,7 @@ -- | Tests for the non-equivarant CSM classes -{-# LANGUAGE Rank2Types, GADTs, TypeFamilies #-}+{-# LANGUAGE Rank2Types, GADTs, TypeFamilies, PackageImports #-} module Tests.CSM.Projective where --------------------------------------------------------------------------------@@ -12,7 +12,7 @@ import Math.Combinat.Partitions.Integer import Math.Combinat.Partitions.Set -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified "polynomial-algebra" Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.Algebra import Math.RootLoci.Geometry
test/Tests/Pushforward.hs view
@@ -2,7 +2,7 @@ -- | Tests for the push-forward -{-# LANGUAGE Rank2Types, GADTs, TypeFamilies #-}+{-# LANGUAGE Rank2Types, GADTs, TypeFamilies, PackageImports #-} module Tests.Pushforward where --------------------------------------------------------------------------------@@ -12,7 +12,7 @@ import Math.Combinat.Classes import Math.Combinat.Partitions -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified "polynomial-algebra" Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.Algebra import Math.RootLoci.Geometry
test/Tests/RootVsClass/Check.hs view
@@ -1,7 +1,7 @@ -- | Checking polymorphic functions -{-# LANGUAGE Rank2Types, GADTs, TypeFamilies, ScopedTypeVariables #-}+{-# LANGUAGE Rank2Types, GADTs, TypeFamilies, ScopedTypeVariables, PackageImports #-} module Tests.RootVsClass.Check where --------------------------------------------------------------------------------@@ -15,7 +15,7 @@ import Math.RootLoci.Misc import Math.RootLoci.Geometry.Cohomology -import qualified Math.RootLoci.Algebra.FreeMod as ZMod+import qualified "polynomial-algebra" Math.Algebra.Polynomial.FreeModule as ZMod import Math.RootLoci.CSM.Equivariant.Umbral ( ST )