Safe Haskell | None |
---|---|

Language | Haskell2010 |

Shared code

- data AnyRing = CoeffRing r => AnyRing (Proxy r)
- solveAny :: Problem problem => AnyRing -> Batch -> problem -> FreeMod Schur Integer
- ringZZ :: AnyRing
- ringQQ :: AnyRing
- ringZp :: AnyRing
- class (Eq a, Num a, Show a, Determinant a, Eq (FieldOfFractions a), Show (FieldOfFractions a), Fractional (FieldOfFractions a), Pretty (Term a)) => CoeffRing a where
- type FieldOfFractions a :: *

- ratToInt :: Rational -> Maybe Integer
- unsafeProject :: CoeffRing c => Proxy c -> FieldOfFractions c -> Integer
- class Problem problem where
- fullFName :: Problem problem => Batch -> problem -> FilePath
- solveAndProject :: forall problem coeff. (Problem problem, CoeffRing coeff) => Proxy coeff -> Batch -> problem -> FreeMod Schur Integer
- data Stats = Stats {}
- data Batch = Batch {
- _whichBatch :: !Int
- _nBatches :: !Int

- defaultBatch :: Batch
- selectBatch :: Batch -> [a] -> [a]
- batchSuffix :: Batch -> String
- type Term coeff = FreeMod Symbol coeff
- alpha :: CoeffRing coeff => Int -> Term coeff
- newtype Schur = Schur Partition
- evaluate :: (Num a, FreeModule x) => (Base x -> Coeff x -> a) -> x -> a
- partitionPairs :: Int -> Int -> Int -> Int -> [(Partition, Partition)]
- posnegPairToPartition :: (Int, Int) -> (Partition, Partition) -> Partition

# Rings and fields

class (Eq a, Num a, Show a, Determinant a, Eq (FieldOfFractions a), Show (FieldOfFractions a), Fractional (FieldOfFractions a), Pretty (Term a)) => CoeffRing a where Source #

type FieldOfFractions a :: * Source #

unsafeProject :: CoeffRing c => Proxy c -> FieldOfFractions c -> Integer Source #

# Thom polynomial problems

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

"Statistics" of a problem

# Batches

defaultBatch :: Batch Source #

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

batchSuffix :: Batch -> String Source #

# Misc

# Evaluate

# 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 !