sigma-ij-0.2.0.2: Thom polynomials of second order Thom-Boardman singularities

Safe HaskellNone
LanguageHaskell2010

Math.ThomPoly.Shared

Contents

Description

Shared code

Synopsis

Rings and fields

data AnyRing Source #

Constructors

CoeffRing r => AnyRing (Proxy r) 

solveAny :: Problem problem => AnyRing -> Batch -> problem -> FreeMod Schur Integer Source #

Thom polynomial problems

class Problem problem where Source #

Minimal complete definition

baseFName, calcStats, solve

Methods

baseFName :: problem -> String Source #

calcStats :: problem -> Stats Source #

solve :: CoeffRing coeff => Proxy coeff -> Batch -> problem -> FreeMod Schur (FieldOfFractions coeff) Source #

fullFName :: Problem problem => Batch -> problem -> FilePath Source #

solveAndProject :: forall problem coeff. (Problem problem, CoeffRing coeff) => Proxy coeff -> Batch -> problem -> FreeMod Schur Integer Source #

data Stats Source #

"Statistics" of a problem

Constructors

Stats 

Fields

  • _codim0 :: !Int

    codimension (for m=n)

  • _mu :: !Int

    algebraic multiplicity (minus 1)

  • _maxPairs :: !Int

    maximum number of possible non-zero coefficients

Instances

Batches

data Batch Source #

Constructors

Batch 

Fields

Instances

selectBatch :: Batch -> [a] -> [a] Source #

Misc

type Term coeff = FreeMod Symbol coeff Source #

alpha :: CoeffRing coeff => Int -> Term coeff Source #

newtype Schur Source #

Constructors

Schur Partition 

Instances

Evaluate

evaluate :: (Num a, FreeModule x) => (Base x -> Coeff x -> a) -> x -> a Source #

Signed partitions

partitionPairs :: Int -> Int -> Int -> Int -> [(Partition, Partition)] Source #

Pairs of partition with weights of fix difference, given by the third parameter, ofs=|pos|-|neg|, and complementary length; the first giving the positive deviation compared to the box of (m-n+i)*i, and the second giving the negative one. Picture:

        m-n+i                    n-i
   +------------------+----------------+---------+
   |                  |          _____/          |
 i |      lambda      |  pos____/                |
   |                  |    /                     |
   |                  |   /                      |
mu +................._|__/                       | mu
   |              __/ |       C lambda ~         |
   |          ___/    |                          |
   |         /  neg   |                          |
   +--------+---------+--------------------------+
                      m

The length ("width" in combinat-speak, unfortunately) of the partitions are less than mu; the "height" (first element) of pos is at most (n-i), the height of neg is unlimited (well, it is limited by (mu-1)*(n-i) of course).

Actually, in the case of sigmaij, length(pos)<=i and length(neg)<=mu-i !

posnegPairToPartition :: (Int, Int) -> (Partition, Partition) -> Partition Source #

Given the parameters (m-n+i,mu) (pos,neg), this computes lambda in the picture above.