|
Macaulay2 Engine
|
SchurRing2 — refactored Schur ring with length-prefixed partitions and an explicit Ring base. More...
Go to the source code of this file.
Classes | |
| class | tableau2 |
| class | schur_poly |
| class | schur_poly_iterator |
| class | SchurRing2 |
| Refactored Schur (symmetric-function) ring whose elements are schur_poly sums of partitions over a configurable coefficient ring. More... | |
Typedefs | |
| using | schur_word = int |
| typedef schur_word * | schur_partition |
| typedef const schur_word * | const_schur_partition |
Functions | |
| bool | operator== (const schur_poly::iterator &a, const schur_poly::iterator &b) |
| bool | operator!= (const schur_poly::iterator &a, const schur_poly::iterator &b) |
SchurRing2 — refactored Schur ring with length-prefixed partitions and an explicit Ring base.
Declares SchurRing2, the second-generation Schur-function ring. Unlike schur.hpp's SchurRing (which inherits from PolyRing), SchurRing2 derives directly from Ring. Partitions are stored in the schur_partition layout [n + 1, a_1, ..., a_n] — a length prefix followed by the non-increasing parts a_1 >= a_2 >= ... >= a_n (an in-source note flags that parts may be negative). Elements are schur_poly objects carrying parallel coeffs and monoms vectors, where monoms is a flat concatenation of schur_partitions walked by the length prefix. Multiplication uses Littlewood-Richardson enumeration through the private skew_schur / SM recursion with reusable SMtab / SMfilled tableau2 scratch tableaux, and accumulates into the schur_poly_heap *SMheap defined in schur-poly-heap.hpp.
The class is allowed to have a free coefficient ring (coefficientRing) and an optional variable-count cap nvars (-1 means "infinite-rank" virtual partitions, served by createInfinite). dimension(f) evaluates the Schur polynomial at the all-ones specialisation; invert, divide, and syzygy are explicitly no-ops because they have no meaning in this ring.
Definition in file schur2.hpp.