Skip to content

Commit

Permalink
hallPolynomials
Browse files Browse the repository at this point in the history
  • Loading branch information
stla committed Jul 12, 2024
1 parent 0cca1c7 commit 45b6f8d
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/Math/Algebra/Jack/Internal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ module Math.Algebra.Jack.Internal
, _skewGelfandTsetlinPatterns
, _skewTableauxWithGivenShapeAndWeight
, _semiStandardTableauxWithGivenShapeAndWeight
, _msPolynomialsInHLPbasis
)
where
import Prelude
Expand Down Expand Up @@ -1060,15 +1061,17 @@ msPolynomialsInSchurBasis ::
msPolynomialsInSchurBasis n weight =
_inverseKostkaMatrix n weight 1 'P'

msPolynomialsInHLPbasis ::
-- | monomial symmetric polynomials in Hall-Littlewood P-polynomials basis
_msPolynomialsInHLPbasis ::
Int -> Int -> Map Partition (Map Partition (Spray Rational))
msPolynomialsInHLPbasis n weight =
_msPolynomialsInHLPbasis n weight =
DM.fromDistinctAscList
(map (
\lambda ->
(
lambda
, DM.filter (not . isZeroSpray) $ DM.unionsWith (^+^) (hlpCombos lambda)
, DM.filter (not . isZeroSpray) $
DM.unionsWith (^+^) (hlpCombos lambda)
)
) lambdas)
where
Expand All @@ -1085,9 +1088,6 @@ msPolynomialsInHLPbasis n weight =
DM.map (\spray -> r *^ spray) (hlpCombo mu))
(msAssocs lambda)




_e :: AlgRing.C a => MCP.Partition -> a -> a
_e lambda alpha =
alpha * fromIntegral (_n (dualPartition lambda)) - fromIntegral (_n lambda)
Expand Down
39 changes: 39 additions & 0 deletions src/Math/Algebra/SymmetricPolynomials.hs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ module Math.Algebra.SymmetricPolynomials
, factorialSchurPol'
, skewFactorialSchurPol
, skewFactorialSchurPol'
, hallPolynomials
) where
import Prelude hiding ( fromIntegral, fromRational )
import qualified Algebra.Additive as AlgAdd
Expand Down Expand Up @@ -157,6 +158,7 @@ import Math.Algebra.Hspray (
, lone
, qlone
, lone'
, qlone'
, fromList
, getCoefficient
, getConstantTerm
Expand All @@ -165,6 +167,8 @@ import Math.Algebra.Hspray (
, (%/%)
, RatioOfSprays (..)
, RatioOfQSprays
, asRatioOfSprays
, evalRatioOfSprays'
, constantRatioOfSprays
, zeroRatioOfSprays
, prettyRatioOfQSpraysXYZ
Expand Down Expand Up @@ -212,6 +216,7 @@ import Math.Algebra.Jack.Internal (
, macdonaldJinMSPbasis
, inverseKostkaNumbers
, skewSchurLRCoefficients
, _msPolynomialsInHLPbasis
)
import Math.Algebra.JackPol (
schurPol
Expand Down Expand Up @@ -927,6 +932,40 @@ jackSymbolicCombination' which spray =
IM.fromList
(zip weights (map (msPolynomialsInJackSymbolicBasis which n) weights))

-- | symmetric simple parametric spray as a linear combination of
-- Hall-Littlewood P-polynomials
hlpCombination ::
SimpleParametricQSpray -> Map Partition QSpray
hlpCombination spray =
_symmPolyCombination
(\lambda -> (combos IM.! (sum lambda)) DM.! lambda)
(AlgRing.*) spray
where
weights = filter (/= 0) (map DF.sum (allExponents spray))
n = numberOfVariables spray
combos =
IM.fromList
(zip weights (map (_msPolynomialsInHLPbasis n) weights))

hallPolynomials ::
Partition
-> Partition
-> Map Partition RatioOfQSprays
hallPolynomials mu nu =
DM.mapWithKey f
(hlpCombination
(hallLittlewoodPolynomial' n mu 'P' ^*^ hallLittlewoodPolynomial' n nu 'P'))
where
n = sum mu + sum nu
_n :: Partition -> Int
_n lambda = sum (zipWith (*) [1 .. ] (drop1 lambda))
_n_mu_nu = _n mu + _n nu
t = qlone' 1
invt = RatioOfSprays unitSpray (qlone 1)
f :: Partition -> QSpray -> RatioOfQSprays
f lambda spray =
(t (_n lambda - _n_mu_nu)) AlgMod.*> (evalRatioOfSprays' (asRatioOfSprays spray) [invt])

-- | Kostka-Foulkes polynomial of two given partitions. This is a univariate
-- polynomial whose value at @1@ is the Kostka number of the two partitions.
kostkaFoulkesPolynomial ::
Expand Down

0 comments on commit 45b6f8d

Please sign in to comment.