Changelog
All notable changes to this repository are documented here. The format follows Keep a Changelog, and versions follow semantic versioning as described in RELEASING.md. Issue and pull-request numbers refer to https://github.com/PerAlexandersson/Mathematica-packages.
[Unreleased]
Added
- Documentation site on GitHub Pages (https://peralexandersson.github.io/Mathematica-packages/), generated by
Scripts/BuildDocs.m: the guides and a reference page per package from the usage strings, with background links to symmetricfunctions.com.Tests/Docs.wltkeeps it in sync. - Ko-fi donation link in the README, on the documentation site and as the GitHub sponsor button (
.github/FUNDING.yml).
Changed
- Test files follow the Wolfram conventions:
Tests/<Name>.wlt(wereTests/<Name>Tests.m), run byTests/RunTests.wls(wasRunTests.m), which setstestRootand loads the paclet. A test taking more than 120 seconds fails, and the runner prints per-file times. Scripts/BuildPaclet.mtakes an optional output directory (defaultbuild/).
0.1.0 - 2026-10-10
First release as a paclet (PerAlexandersson/MathematicaPackages). The state before this refactoring is tagged pre-refresh-2026-10.
Breaking changes
The legacy packages are frozen; Legacy/MIGRATION.md maps every legacy name to its supported replacement, and LegacyConversions converts legacy data.
ShiftedJackPSymmetricmoved fromSymmetricFunctionsto the newShiftedSymmetricFunctionspackage (unchanged behaviour); load that package to use it (#51).-
MacdonaldPolynomialsis a legacy package. Its key, atom and Schubert polynomials are in the newNonsymmetricPolynomials, which indexes keys by weak compositions in the standard way: newKeyPolynomial[alpha, x]equals legacyKeyPolynomial[Reverse[alpha], x](atoms and Schubert polynomials agree with the legacy ones) (#51). MacdonaldHSymmetricfollows Haglund’s convention: H~_{2} = s_2 + q s_11. The formerMacdonaldHSymmetric[mu, q, t]equals the newMacdonaldHSymmetric[mu, t, q].DeltaOperator,DeltaPrimOperator,NablaOperatorandToMacdonaldHBasisfollow (B_mu = sum of q^a’(c) t^l’(c)). Results symmetric in q and t are unchanged (#35, #38).- The repository is a paclet: packages live in
Kernel/(supported and experimental) andLegacy/; load them withPacletDirectoryLoador install the paclet. Context names andNeedscalls are unchanged (#7, #42). Tests and scripts are plain.mfiles (#49). CatalanObjectsRookPlacementPlot(aGrid) is renamedRookPlacementGrid; the nameRookPlacementPlot` belongs to RookTools (#46).StrictEdgesandWeakEdgesare single shared options inCombinatoricTools(#46).- MacdonaldPolynomials no longer loads OldYoungTableaux, no longer exports its own
KnuthRepresentativeandPartitionedCompositionCoarsenings(use NewTableaux and QuasiSymmetricFunctions), and its 3-argumentToPowerSumBasisis renamedToPowerSumBasisMacdonald(#43). MonomialQSymbolproducts and powers expand automatically (#16, #31).- Every package uses its own private context; code that reached package helpers through the shared top-level
Private`context must use full names such asNewTableauxPrivatehelper(#3, #32). - ChromaticFunctions, OldYoungTableaux, TreesData and RunSortedWords are legacy packages; see
Legacy/README.md(#9).
Added
- Example scripts for
NonsymmetricPolynomials,ShiftedSymmetricFunctions,QuasiSymmetricFunctions,GTPatterns,NewTableauxfillings andLegacyConversions(Examples/*.m);Tests/ExamplesTests.mruns every example in a fresh kernel. TUTORIAL.md: a tour of the packages and how they fit together. Its code is checked byTests/TutorialTests.m: every block runs, and every stated result is compared.NonsymmetricPolynomials: divided difference, Demazure and Demazure atom operators with t- and K-theoretic deformations; key, atom, t-key, t-atom and Schubert polynomials generated by operators; basis symbolsKeySymbol,AtomSymbol,SchubertSymbol;ToKeyBasis,ToAtomBasis,ToSchubertBasis,NonsymmetricToPolynomial; Lehmer codes (#51).NonsymmetricPolynomials: Grothendieck and Lascoux polynomials (K-theoretic operators, parameterbeta, default -1), fundamental slide and lock polynomials, their basis symbols andToLascouxBasis,ToGrothendieckBasis,ToFundamentalSlideBasis,ToLockBasis. Locks are indexed as by Assaf-Searles (Kohnert polynomials of right-justified diagrams); legacyMacdonaldPolynomialsLockPolynomial[alpha]is the newLockPolynomial[Reverse[alpha]]` (#51).NonsymmetricPolynomials: nonsymmetric Macdonald polynomialsMacdonaldEPolynomial[alpha, x, q, t], generated from 1 by the Knop-Sahi affine shift and intertwiners (they agree with the Haglund-Haiman-Loehr filling formula, the legacy package and sym-poly), permuted basementsMacdonaldEPolynomial[alpha, sigma, x, q, t](from the identity basement by t-Demazure operators, Alexandersson 2019, Corollary 16),NonsymmetricJackPolynomialandIntegralMacdonaldE(#51).- The divided-difference family of operators is applied monomial by monomial in x[i], x[i+1] with memoized expanded formulas instead of forming and cancelling quotients (keys about 2.4 times faster, t-keys and Lascoux polynomials about 2.6-2.9 times) (#51).
NonsymmetricPolynomials:DualGrothendieckPolynomial[alpha, x]from fillings (column weights); for weakly increasing alpha it is the Lam-Pylyavskyy dual Grothendieck g_lambda. LegacyDualGrothendieckPolynomial[alpha]is the new one atReverse[alpha](#51).AlgebraicBasessupports permutation-indexed bases.- Polynomial bridges:
PolynomialToSymmetricFunction(to any core basis, validating symmetry),QuasiSymmetricFunctionToPolynomial,PolynomialToQuasiSymmetricFunction, andToQuasiSymmetric(embedding Sym into QSym) (#51). QuasiSchurQSymbolandQuasiSchurQSymmetric: quasisymmetric Schur functions, built from Demazure atoms (#51).GTPatterns, ported fromOldYoungTableaux(bottom-to-top rows): BZ patterns (BZPattern,BZPatterns,BZPlus),GTPlus,GTMonomial,GogPatterns,MagogPatterns, tiles and snakes (GTTiles,GTSnakes,TilingMatrix,ContainingFaceDimension),GTPatternFormoptionsGTPartition(string values) andEnableSkew,GTPatternTikz,LatticePathForm,LatticePathTikz,UpperBoundKostkaDegreeandGTEhrhartPolynomial(stretched Kostka counts) (#51).- Helpers ported from
OldYoungTableaux:SkewShapeQ,ShapeUnion,YoungLatticePaths,PermutationOfType,SetPartitionRefinementQ,SageForm,MacdonaldPsiPrimeand boundedPartitionAddBox[lam, top]/PartitionRemoveBox[lam, bot](CombinatoricTools);ShapeTripletsandBoxCountMatrix(GTPatterns);SequenceToPolynomial(with a degree bound) andHVector(PolynomialTools);HasOuterCornerQand theYTableauTeXoptionsLineBreaksandUseArray(NewTableaux) (#51). - New package
ShiftedSymmetricFunctions(Okounkov-Olshanski):ShiftedSchurPolynomial,ShiftedSchurEvaluate,ShiftedJackPPolynomial,ShiftedJackJPolynomial,ShiftedJackPEvaluate,ShiftedJackJEvaluate,NormalizedCharacterandStanleyCharacterPolynomial(Feray-Sniady formula in multirectangular coordinates; legacyChNormalizedCharacter= (-1)^(|mu| - length(mu)) times it) (#51). - New package
LegacyConversionsfor old notebooks:FromLegacyGTPattern/ToLegacyGTPattern(row order),FromLegacyYoungTableau/ToLegacyYoungTableau(skew marker),FromLegacyAreaList/ToLegacyAreaList,FromLegacyEdges/ToLegacyEdges,FromLegacyKeyIndexandFromLegacyIndex[family, index]. It loads no legacy package and puts no other context on$ContextPath(#51). NewTableaux: semistandard augmented fillings asSSAF[rows]objects (SSAFForm,SSAFQ, shape, basement, weight, monomial),SSAFillings,AtomFillings,KeyFillings,TAtomFillings(standard index), statistics (SSAFMajorIndex,SSAFInversions,SSAFCoInversions,SSAFDn,SSAFColumnSets), crystal operators viaCrystalEi/CrystalFi/CrystalSiwithSSAFCrystalWordandSSAFCrystalString,LascouxSchutzenberger,SSAFWeightNormalize, Mason’s insertionSSYTToAtom,RPPToAtom,SSAFKnownChargeandChargeToMajMap(#51). The legacyLascouxSchutzenbergercan return invalid fillings (for example on{{1}, {2}, {3, 3}}with i = 2); the new one stays within the filling set.UnicellularChromatics, ported from legacyChromaticFunctions:GraphAreaLists(0-first area lists, including circular ones),AreaConjugate,ValleyEdges,DiagramRookPlacements,OrientationPlot,PArrayPlot,UnitIntervalPlot(#51).GraphTools:GraphOrientations,GraphAcyclicOrientationsandOrientationSinksaccept aGraphor an edge list, withStrictEdges/WeakEdgesoptions;UnicellularChromaticsnow uses them instead of private copies (#51).AlgebraicBases, an internal package withCreateBasis, shared by the algebra packages for basis symbols (formatting, index normalization, products) (#51).-
CONVENTIONS.mdandTests/CompatibilityTests.m: shared object representations between packages (#51). ClearSymmetricFunctionsCache[](#23).CombinatoricToolsRunSortedPermutations` (from RunSortedWords, now a shim) (#39).GraphToolsRootedTreeGraphs` for n <= 10 (from TreesData) (#40).kSchurSymmetricis exported (#27).MonomialQSymmetric,OrderedRootedTreeSizeandRationalDyckPathsare defined and exported (#31).- UnicellularChromatics contains the useful ChromaticFunctions API (graph and area-list chromatic and LLT polynomials with weights and strict/weak edges, orientations, Gasharov P-tableaux, vertical-strip LLT, dinv/maj/bounce statistics), using the 0-first area-list convention (#44).
- Usage strings for every public symbol (#21, #36).
- Datasets in
Data/with provenance (Data/README.md), found relative to the paclet (#8, #37). - Tests:
wolframscript -file Tests/RunTests.mruns everyTests/*Tests.mfile in a fresh kernel (#22). It includes regression tests for all fixed defects, load-order and isolation tests, a Code Inspector baseline (#33), usage-string coverage, the introduction example (#48), and a cross-check against the Rust librariessym-poly,combinatoric-core,combpolyandpolytoolcovering about 25 families (#34, #41). Scripts/BuildPaclet.mbuilds and verifies the paclet archive;RELEASING.md,CHANGELOG.md,CONTRIBUTING.mdand an MITLICENSE.Examples/SymmetricFunctions-Introduction.m, a plain-text version of the introduction notebook.
Fixed
DualGrothendieckPolynomial,SetPartitionsTypeB,SetPartitionsNoZeroBlockandPosetNaturalLabelingwere documented but not exported (they were only reachable by full private names). A new test checks that every documented name inKernel/is exported; test files could not catch this, because parsing a test file creates the public symbols it mentions. SymmetricFunctionsMacdonaldHSymmetric,ToMacdonaldHBasis,DeltaOperator,DeltaPrimOperator,NablaOperator,SkewKostkaCoefficientandKroneckerCoefficientno longer abort with$RecursionLimit, and memoized functions no longer emitSet::write(regression fromeed1b77, #5, #23).- Loading no longer exports protected junk symbols
nameandrest(#23). HallInnerProduct/JackInnerProductwith constant terms,Plethysmwith constant terms,LRCoefficientfor mismatched sizes,PrincipalSpecializationat q = 1, andSkewMacdonaldESymmetric(unresolved helper) (#20, #27).
Core utilities
- CombinatoricTools:
LatticeWordQreturns a Boolean;IntegerCompositions[0],Derangements[0], negativeSetPartitions;PartitionIntervalSize;LinearlyIndependentRows;Durfeeusage; theSystemPermutations` convenience rule no longer caches about 290 MB, and package code no longer relies on it (#4, #13, #24, #32). - PolynomialTools:
ElementarySymmetricPolynomial,CompleteHomogeneousPolynomial,UltraLogConcaveQ,HilbertFunctionValues(stale results across calls),InterleavingRootsQ/RealRootedQalways return Booleans,EulerianA[0, m](#4, #13, #24). - NewTableaux:
KnuthRepresentativeandBiwordRSKno longer recurse forever,CrystalSion words,BSTHeightVector, empty skew SSYT, leaked helpers (#14, #25). - GTPatterns: partial
RowFlagslists and invalid values (#14, #25). - GraphTools, MatroidTools, RookTools:
GraphIndependentTriangles,GraphDeleteEdge, failed data imports no longer memoized,MatroidDeletionby a set,IsMatroidQ,MatroidContractionby dependent sets,RookPlacementPlot(#15, #26). - CatalanObjects, PermutationTools, QuasiSymmetricFunctions:
DyckPaths,PerfectMatchings,FussCatalanPaths,ORTTo231Perm, empty base cases,SeparablePermutationQ,SplitSeparablePermutation,GeneratePAPSandPermutationFromWordcaches,PowerSumAltQSymmetric(#16, #31). - ChromaticFunctions and UnicellularChromatics: weighted chromatic cache,
VerticalStripLLTPolynomial,DinvFromAreaSeq,AreaRowPermutation,SystemWeightsusage no longer overwritten,UnicellularLLTSymmetricwith integer q, Schroeder orientations,ChromaticSymmetric` on arbitrary vertex labels (#17, #28). - Legacy packages:
GetTrees,FundamentalSlide,QuasiSymmetricPowerSum2, loading MacdonaldPolynomials no longer modifies other packages,OrderPolynomialfor non-natural labellings,StembridgePosetsize,SchurPolynomial(#18, #29). - Graph and tree data no longer load from a hard-coded
~/Dropboxpath (#8, #37).
Removed
SymmetricFunctionsTestSuite.m; its cases are inTests/SymmetricFunctionsTests.m(#27).Tex2WebUtilities(website tooling of an older project, replaced by other tools); it remains available in thepre-refresh-2026-10tag.