Macaulay2 Engine
Loading...
Searching...
No Matches
schur2.hpp File Reference

SchurRing2 — refactored Schur ring with length-prefixed partitions and an explicit Ring base. More...

#include <vector>
#include "poly.hpp"
#include "schur-poly-heap.hpp"

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_wordschur_partition
typedef const schur_wordconst_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)

Detailed Description

SchurRing2 — refactored Schur ring with length-prefixed partitions and an explicit Ring base.

Note
AI-generated documentation. Verify against the source before relying on it.

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.

See also
schur.hpp
schur-poly-heap.hpp
poly.hpp

Definition in file schur2.hpp.