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.wlt keeps 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 (were Tests/<Name>Tests.m), run by Tests/RunTests.wls (was RunTests.m), which sets testRoot and loads the paclet. A test taking more than 120 seconds fails, and the runner prints per-file times.
  • Scripts/BuildPaclet.m takes an optional output directory (default build/).

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.

  • ShiftedJackPSymmetric moved from SymmetricFunctions to the new ShiftedSymmetricFunctions package (unchanged behaviour); load that package to use it (#51).
  • MacdonaldPolynomials is a legacy package. Its key, atom and Schubert polynomials are in the new NonsymmetricPolynomials, which indexes keys by weak compositions in the standard way: new KeyPolynomial[alpha, x] equals legacy KeyPolynomial[Reverse[alpha], x] (atoms and Schubert polynomials agree with the legacy ones) (#51).

  • MacdonaldHSymmetric follows Haglund’s convention: H~_{2} = s_2 + q s_11. The former MacdonaldHSymmetric[mu, q, t] equals the new MacdonaldHSymmetric[mu, t, q]. DeltaOperator, DeltaPrimOperator, NablaOperator and ToMacdonaldHBasis follow (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) and Legacy/; load them with PacletDirectoryLoad or install the paclet. Context names and Needs calls are unchanged (#7, #42). Tests and scripts are plain .m files (#49).
  • CatalanObjectsRookPlacementPlot (a Grid) is renamed RookPlacementGrid; the name RookPlacementPlot` belongs to RookTools (#46).
  • StrictEdges and WeakEdges are single shared options in CombinatoricTools (#46).
  • MacdonaldPolynomials no longer loads OldYoungTableaux, no longer exports its own KnuthRepresentative and PartitionedCompositionCoarsenings (use NewTableaux and QuasiSymmetricFunctions), and its 3-argument ToPowerSumBasis is renamed ToPowerSumBasisMacdonald (#43).
  • MonomialQSymbol products 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 as NewTableauxPrivatehelper (#3, #32).
  • ChromaticFunctions, OldYoungTableaux, TreesData and RunSortedWords are legacy packages; see Legacy/README.md (#9).

Added

  • Example scripts for NonsymmetricPolynomials, ShiftedSymmetricFunctions, QuasiSymmetricFunctions, GTPatterns, NewTableaux fillings and LegacyConversions (Examples/*.m); Tests/ExamplesTests.m runs every example in a fresh kernel.
  • TUTORIAL.md: a tour of the packages and how they fit together. Its code is checked by Tests/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 symbols KeySymbol, AtomSymbol, SchubertSymbol; ToKeyBasis, ToAtomBasis, ToSchubertBasis, NonsymmetricToPolynomial; Lehmer codes (#51).
  • NonsymmetricPolynomials: Grothendieck and Lascoux polynomials (K-theoretic operators, parameter beta, default -1), fundamental slide and lock polynomials, their basis symbols and ToLascouxBasis, ToGrothendieckBasis, ToFundamentalSlideBasis, ToLockBasis. Locks are indexed as by Assaf-Searles (Kohnert polynomials of right-justified diagrams); legacy MacdonaldPolynomialsLockPolynomial[alpha] is the new LockPolynomial[Reverse[alpha]]` (#51).
  • NonsymmetricPolynomials: nonsymmetric Macdonald polynomials MacdonaldEPolynomial[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 basements MacdonaldEPolynomial[alpha, sigma, x, q, t] (from the identity basement by t-Demazure operators, Alexandersson 2019, Corollary 16), NonsymmetricJackPolynomial and IntegralMacdonaldE (#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. Legacy DualGrothendieckPolynomial[alpha] is the new one at Reverse[alpha] (#51).
  • AlgebraicBases supports permutation-indexed bases.
  • Polynomial bridges: PolynomialToSymmetricFunction (to any core basis, validating symmetry), QuasiSymmetricFunctionToPolynomial, PolynomialToQuasiSymmetricFunction, and ToQuasiSymmetric (embedding Sym into QSym) (#51).
  • QuasiSchurQSymbol and QuasiSchurQSymmetric: quasisymmetric Schur functions, built from Demazure atoms (#51).
  • GTPatterns, ported from OldYoungTableaux (bottom-to-top rows): BZ patterns (BZPattern, BZPatterns, BZPlus), GTPlus, GTMonomial, GogPatterns, MagogPatterns, tiles and snakes (GTTiles, GTSnakes, TilingMatrix, ContainingFaceDimension), GTPatternForm options GTPartition (string values) and EnableSkew, GTPatternTikz, LatticePathForm, LatticePathTikz, UpperBoundKostkaDegree and GTEhrhartPolynomial (stretched Kostka counts) (#51).
  • Helpers ported from OldYoungTableaux: SkewShapeQ, ShapeUnion, YoungLatticePaths, PermutationOfType, SetPartitionRefinementQ, SageForm, MacdonaldPsiPrime and bounded PartitionAddBox[lam, top]/PartitionRemoveBox[lam, bot] (CombinatoricTools); ShapeTriplets and BoxCountMatrix (GTPatterns); SequenceToPolynomial (with a degree bound) and HVector (PolynomialTools); HasOuterCornerQ and the YTableauTeX options LineBreaks and UseArray (NewTableaux) (#51).
  • New package ShiftedSymmetricFunctions (Okounkov-Olshanski): ShiftedSchurPolynomial, ShiftedSchurEvaluate, ShiftedJackPPolynomial, ShiftedJackJPolynomial, ShiftedJackPEvaluate, ShiftedJackJEvaluate, NormalizedCharacter and StanleyCharacterPolynomial (Feray-Sniady formula in multirectangular coordinates; legacy ChNormalizedCharacter = (-1)^(|mu| - length(mu)) times it) (#51).
  • New package LegacyConversions for old notebooks: FromLegacyGTPattern/ToLegacyGTPattern (row order), FromLegacyYoungTableau/ToLegacyYoungTableau (skew marker), FromLegacyAreaList/ToLegacyAreaList, FromLegacyEdges/ToLegacyEdges, FromLegacyKeyIndex and FromLegacyIndex[family, index]. It loads no legacy package and puts no other context on $ContextPath (#51).
  • NewTableaux: semistandard augmented fillings as SSAF[rows] objects (SSAFForm, SSAFQ, shape, basement, weight, monomial), SSAFillings, AtomFillings, KeyFillings, TAtomFillings (standard index), statistics (SSAFMajorIndex, SSAFInversions, SSAFCoInversions, SSAFDn, SSAFColumnSets), crystal operators via CrystalEi/CrystalFi/ CrystalSi with SSAFCrystalWord and SSAFCrystalString, LascouxSchutzenberger, SSAFWeightNormalize, Mason’s insertion SSYTToAtom, RPPToAtom, SSAFKnownCharge and ChargeToMajMap (#51). The legacy LascouxSchutzenberger can return invalid fillings (for example on {{1}, {2}, {3, 3}} with i = 2); the new one stays within the filling set.
  • UnicellularChromatics, ported from legacy ChromaticFunctions: GraphAreaLists (0-first area lists, including circular ones), AreaConjugate, ValleyEdges, DiagramRookPlacements, OrientationPlot, PArrayPlot, UnitIntervalPlot (#51).
  • GraphTools: GraphOrientations, GraphAcyclicOrientations and OrientationSinks accept a Graph or an edge list, with StrictEdges/WeakEdges options; UnicellularChromatics now uses them instead of private copies (#51).
  • AlgebraicBases, an internal package with CreateBasis, shared by the algebra packages for basis symbols (formatting, index normalization, products) (#51).
  • CONVENTIONS.md and Tests/CompatibilityTests.m: shared object representations between packages (#51).

  • ClearSymmetricFunctionsCache[] (#23).
  • CombinatoricToolsRunSortedPermutations` (from RunSortedWords, now a shim) (#39).
  • GraphToolsRootedTreeGraphs` for n <= 10 (from TreesData) (#40).
  • kSchurSymmetric is exported (#27). MonomialQSymmetric, OrderedRootedTreeSize and RationalDyckPaths are 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.m runs every Tests/*Tests.m file 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 libraries sym-poly, combinatoric-core, combpoly and polytool covering about 25 families (#34, #41).
  • Scripts/BuildPaclet.m builds and verifies the paclet archive; RELEASING.md, CHANGELOG.md, CONTRIBUTING.md and an MIT LICENSE.
  • Examples/SymmetricFunctions-Introduction.m, a plain-text version of the introduction notebook.

Fixed

  • DualGrothendieckPolynomial, SetPartitionsTypeB, SetPartitionsNoZeroBlock and PosetNaturalLabeling were documented but not exported (they were only reachable by full private names). A new test checks that every documented name in Kernel/ is exported; test files could not catch this, because parsing a test file creates the public symbols it mentions. SymmetricFunctions
  • MacdonaldHSymmetric, ToMacdonaldHBasis, DeltaOperator, DeltaPrimOperator, NablaOperator, SkewKostkaCoefficient and KroneckerCoefficient no longer abort with $RecursionLimit, and memoized functions no longer emit Set::write (regression from eed1b77, #5, #23).
  • Loading no longer exports protected junk symbols name and rest (#23).
  • HallInnerProduct/JackInnerProduct with constant terms, Plethysm with constant terms, LRCoefficient for mismatched sizes, PrincipalSpecialization at q = 1, and SkewMacdonaldESymmetric (unresolved helper) (#20, #27).

Core utilities

  • CombinatoricTools: LatticeWordQ returns a Boolean; IntegerCompositions[0], Derangements[0], negative SetPartitions; PartitionIntervalSize; LinearlyIndependentRows; Durfee usage; the SystemPermutations` 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/RealRootedQ always return Booleans, EulerianA[0, m] (#4, #13, #24).
  • NewTableaux: KnuthRepresentative and BiwordRSK no longer recurse forever, CrystalSi on words, BSTHeightVector, empty skew SSYT, leaked helpers (#14, #25).
  • GTPatterns: partial RowFlags lists and invalid values (#14, #25).
  • GraphTools, MatroidTools, RookTools: GraphIndependentTriangles, GraphDeleteEdge, failed data imports no longer memoized, MatroidDeletion by a set, IsMatroidQ, MatroidContraction by dependent sets, RookPlacementPlot (#15, #26).
  • CatalanObjects, PermutationTools, QuasiSymmetricFunctions: DyckPaths, PerfectMatchings, FussCatalanPaths, ORTTo231Perm, empty base cases, SeparablePermutationQ, SplitSeparablePermutation, GeneratePAPS and PermutationFromWord caches, PowerSumAltQSymmetric (#16, #31).
  • ChromaticFunctions and UnicellularChromatics: weighted chromatic cache, VerticalStripLLTPolynomial, DinvFromAreaSeq, AreaRowPermutation, SystemWeights usage no longer overwritten, UnicellularLLTSymmetric with integer q, Schroeder orientations, ChromaticSymmetric` on arbitrary vertex labels (#17, #28).
  • Legacy packages: GetTrees, FundamentalSlide, QuasiSymmetricPowerSum2, loading MacdonaldPolynomials no longer modifies other packages, OrderPolynomial for non-natural labellings, StembridgePoset size, SchurPolynomial (#18, #29).
  • Graph and tree data no longer load from a hard-coded ~/Dropbox path (#8, #37).

Removed

  • SymmetricFunctionsTestSuite.m; its cases are in Tests/SymmetricFunctionsTests.m (#27).
  • Tex2WebUtilities (website tooling of an older project, replaced by other tools); it remains available in the pre-refresh-2026-10 tag.

Generated by Scripts/BuildDocs.m from the repository. MIT license.