Macaulay2 Engine
Loading...
Searching...
No Matches
SchurRing Class Reference

PolyRing subclass implementing the Schur (symmetric-function) ring whose monomials are partitions and whose multiplication is the Littlewood-Richardson rule. More...

#include <schur.hpp>

Inheritance diagram for SchurRing:
PolyRing PolyRingFlat PolynomialRing Ring MutableEngineObject our_gc_cleanup our_new_delete

Public Member Functions

virtual const SchurRingcast_to_SchurRing () const
virtual SchurRingcast_to_SchurRing ()
virtual void text_out (buffer &o) const
virtual void elem_text_out (buffer &o, const ring_elem f, bool p_one=true, bool p_plus=false, bool p_parens=false) const
void dimension (const int *exp, mpz_t result) const
ring_elem dimension (const ring_elem f) const
virtual ring_elem mult_by_term (const ring_elem f, const ring_elem c, const int *m) const
ring_elem power (const ring_elem f, mpz_srcptr n) const
 Exponentiation. This is the default function, if a class doesn't define this.
ring_elem power (const ring_elem f, int n) const
Public Member Functions inherited from PolyRing
virtual void clear ()
virtual const PolyRingcast_to_PolyRing () const
virtual PolyRingcast_to_PolyRing ()
ring_elem fromCoefficient (ring_elem &coeff) const
virtual ring_elem from_long (long n) const
virtual ring_elem from_int (mpz_srcptr n) const
virtual bool from_rational (mpq_srcptr q, ring_elem &result) const
virtual bool from_BigComplex (gmp_CC z, ring_elem &result) const
virtual bool from_BigReal (gmp_RR z, ring_elem &result) const
virtual bool from_Interval (gmp_RRi z, ring_elem &result) const
virtual bool from_ComplexInterval (gmp_CCi z, ring_elem &result) const
virtual bool from_double (double a, ring_elem &result) const
virtual bool from_complex_double (double re, double im, ring_elem &result) const
virtual ring_elem var (int v) const
virtual int index_of_var (const ring_elem a) const
virtual M2_arrayint support (const ring_elem a) const
virtual bool promote (const Ring *R, const ring_elem f, ring_elem &result) const
virtual bool lift (const Ring *R, const ring_elem f, ring_elem &result) const
virtual ring_elem preferred_associate (ring_elem f) const
ring_elem preferred_associate_divisor (ring_elem ff) const
virtual bool is_unit (const ring_elem f) const
virtual bool is_zero (const ring_elem f) const
virtual bool is_equal (const ring_elem f, const ring_elem g) const
virtual int compare_elems (const ring_elem f, const ring_elem g) const
virtual bool is_homogeneous (const ring_elem f) const
virtual bool multi_degree (const ring_elem f, monomial d) const
virtual void degree_weights (const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const
virtual ring_elem homogenize (const ring_elem f, int v, int deg, const std::vector< int > &wts) const
virtual ring_elem homogenize (const ring_elem f, int v, const std::vector< int > &wts) const
virtual ring_elem copy (const ring_elem f) const
virtual void remove (ring_elem &f) const
void internal_negate_to (ring_elem &f) const
void internal_add_to (ring_elem &f, ring_elem &g) const
void internal_subtract_to (ring_elem &f, ring_elem &g) const
virtual ring_elem negate (const ring_elem f) const
virtual ring_elem add (const ring_elem f, const ring_elem g) const
virtual ring_elem subtract (const ring_elem f, const ring_elem g) const
virtual ring_elem mult (const ring_elem f, const ring_elem g) const
virtual ring_elem invert (const ring_elem f) const
virtual ring_elem divide (const ring_elem f, const ring_elem g) const
 Warning! This function works even if g does not divide f.
ring_elem gcd (const ring_elem f, const ring_elem g) const
ring_elem gcd_extended (const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
virtual ring_elem remainder (const ring_elem f, const ring_elem g) const
virtual ring_elem quotient (const ring_elem f, const ring_elem g) const
virtual ring_elem remainderAndQuotient (const ring_elem f, const ring_elem g, ring_elem &quot) const
virtual void syzygy (const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const
virtual ring_elem random () const
virtual ring_elem eval (const RingMap *map, const ring_elem f, int first_var) const
virtual int n_flat_terms (const ring_elem f) const
virtual int n_logical_terms (int nvars0, const ring_elem f) const
virtual ring_elem get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const
virtual ring_elem get_terms (int nvars0, const ring_elem f, int lo, int hi) const
virtual ring_elem make_flat_term (const ring_elem a, const_monomial m) const
virtual ring_elem make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const
virtual ring_elem lead_flat_coeff (const ring_elem f) const
virtual ring_elem lead_logical_coeff (const Ring *coeffR, const ring_elem f) const
virtual const_monomial lead_flat_monomial (const ring_elem f) const
virtual void lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const
ring_elem lead_term (const ring_elem f) const
virtual engine_RawArrayPairOrNull list_form (const Ring *coeffR, const ring_elem f) const
virtual ring_elemget_parts (const std::vector< int > &wts, const ring_elem f, long &result_len) const
virtual ring_elem get_part (const std::vector< int > &wts, const ring_elem f, bool lobound_given, bool hibound_given, long lobound, long hibound) const
virtual void mult_coeff_to (ring_elem a, ring_elem &f) const
virtual void divide_coeff_to (ring_elem &f, ring_elem a) const
virtual ring_elem lead_term (int nparts, const ring_elem f) const
ring_elem fromSmallIntegerCoefficients (const std::vector< long > &coeffs, int var) const
virtual ring_elem zeroize_tiny (gmp_RR epsilon, const ring_elem f) const
virtual void increase_maxnorm (gmp_RRmutable norm, const ring_elem f) const
virtual vec vec_lead_term (int nparts, const FreeModule *F, vec v) const
virtual vec vec_top_coefficient (const vec v, int &var, int &exp) const
const vectermvec_locate_lead_term (const FreeModule *F, vec v) const
virtual void monomial_divisor (const ring_elem a, exponents_t exp) const
virtual ring_elem diff (ring_elem a, ring_elem b, int use_coeff) const
virtual bool in_subring (int nslots, const ring_elem a) const
virtual void degree_of_var (int n, const ring_elem a, int &lo, int &hi) const
virtual ring_elem divide_by_var (int n, int d, const ring_elem a) const
virtual ring_elem divide_by_expvector (const_exponents exp, const ring_elem a) const
virtual void lower_content (ring_elem &cont, ring_elem new_coeff) const
virtual ring_elem content (ring_elem f) const
virtual ring_elem content (ring_elem f, ring_elem g) const
virtual ring_elem divide_by_given_content (ring_elem f, ring_elem c) const
void sort (Nterm *&f) const
void determine_common_denominator_QQ (ring_elem f, mpz_ptr denom_so_far) const
ring_elem get_denominator_QQ (ring_elem f) const
ring_elem vec_get_denominator_QQ (vec f) const
gbvectortranslate_gbvector_from_vec_QQ (const FreeModule *F, const vec v, ring_elem &result_denominator) const
vec translate_gbvector_to_vec_QQ (const FreeModule *F, const gbvector *v, const ring_elem denom) const
gbvectortranslate_gbvector_from_ringelem_QQ (ring_elem coeff) const
gbvectortranslate_gbvector_from_ringelem (ring_elem coeff) const
gbvectortranslate_gbvector_from_vec (const FreeModule *F, const vec v, ring_elem &result_denominator) const
vec translate_gbvector_to_vec (const FreeModule *F, const gbvector *v) const
vec translate_gbvector_to_vec_denom (const FreeModule *F, const gbvector *v, const ring_elem denom) const
Public Member Functions inherited from PolyRingFlat
virtual Ntermnumerator (ring_elem f) const
virtual const PolyRingFlatcast_to_PolyRingFlat () const
virtual PolyRingFlatcast_to_PolyRingFlat ()
Public Member Functions inherited from PolynomialRing
MatrixgetPresentation () const
unsigned long get_precision () const
bool is_basic_ring () const
bool is_poly_ring () const
bool is_graded () const
CoefficientType coefficient_type () const
int n_vars () const
QRingInfoget_quotient_info () const
const RinggetCoefficientRing () const
MonomialTableget_quotient_MonomialTable () const
const MonomialIdealget_quotient_monomials () const
const MonomialTableZZget_quotient_MonomialTableZZ () const
int n_quotients () const
Ntermquotient_element (int i) const
const gbvectorquotient_gbvector (int i) const
const MonomialIdealmake_basis_MonomialIdeal () const
bool is_quotient_ring () const
bool is_skew_commutative () const
int n_skew_commutative_vars () const
int skew_variable (int i) const
bool is_skew_var (int v) const
const SkewMultiplicationgetSkewInfo () const
virtual bool is_commutative_ring () const
virtual bool is_weyl_algebra () const
virtual bool is_skew_commutative_ring () const
virtual bool is_solvable_algebra () const
virtual const PolyRinggetNumeratorRing () const
virtual const PolynomialRinggetAmbientRing () const
virtual const RinggetDenominatorRing () const
virtual GBRingget_gb_ring () const
virtual const RinggetCoefficients () const
virtual const MonoidgetMonoid () const
virtual bool is_fraction_poly_ring () const
virtual int n_fraction_vars () const
virtual const PolynomialRingcast_to_PolynomialRing () const
virtual PolynomialRingcast_to_PolynomialRing ()
SumCollectormake_SumCollector () const
virtual unsigned int computeHashValue (const ring_elem a) const
int n_terms (const ring_elem f) const
virtual ring_elem make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const =0
virtual ring_elem get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const =0
virtual void lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const =0
virtual void monomial_divisor (const ring_elem a, exponents_t exp) const =0
virtual ring_elem divide_by_expvector (const_exponents exp, const ring_elem a) const =0
Public Member Functions inherited from Ring
virtual ~Ring ()
const CoefficientRingRgetCoefficientRingR () const
long characteristic () const
const Monoiddegree_monoid () const
const PolynomialRingget_degree_ring () const
const std::vector< int > & get_heft_vector () const
virtual M2::RingID ringID () const
virtual bool isFinitePrimeField () const
virtual bool isGaloisField () const
virtual bool is_ZZ () const
virtual bool is_QQ () const
virtual bool is_RRR () const
virtual bool is_RRi () const
virtual bool is_CCC () const
virtual bool is_fraction_field () const
bool is_field () const
bool declare_field ()
ring_elem get_non_unit () const
void set_non_unit (ring_elem zero_div) const
virtual bool has_associate_divisors () const
virtual const RingZZcast_to_RingZZ () const
virtual RingZZcast_to_RingZZ ()
virtual const Z_modcast_to_Z_mod () const
virtual Z_modcast_to_Z_mod ()
virtual const GFcast_to_GF () const
virtual GFcast_to_GF ()
virtual const Towercast_to_Tower () const
virtual Towercast_to_Tower ()
virtual const PolyQQ * cast_to_PolyQQ () const
virtual PolyQQ * cast_to_PolyQQ ()
virtual const FractionFieldcast_to_FractionField () const
virtual FractionFieldcast_to_FractionField ()
virtual const LocalRingcast_to_LocalRing () const
virtual LocalRingcast_to_LocalRing ()
virtual const M2FreeAlgebracast_to_M2FreeAlgebra () const
virtual M2FreeAlgebracast_to_M2FreeAlgebra ()
virtual const M2FreeAlgebraQuotientcast_to_M2FreeAlgebraQuotient () const
virtual M2FreeAlgebraQuotientcast_to_M2FreeAlgebraQuotient ()
virtual const M2FreeAlgebraOrQuotientcast_to_M2FreeAlgebraOrQuotient () const
virtual M2FreeAlgebraOrQuotientcast_to_M2FreeAlgebraOrQuotient ()
virtual const SchurRing2cast_to_SchurRing2 () const
virtual SchurRing2cast_to_SchurRing2 ()
virtual const SchurSnRingcast_to_SchurSnRing () const
virtual SchurSnRingcast_to_SchurSnRing ()
virtual const SkewPolynomialRingcast_to_SkewPolynomialRing () const
virtual SkewPolynomialRingcast_to_SkewPolynomialRing ()
virtual const SolvableAlgebracast_to_SolvableAlgebra () const
virtual SolvableAlgebracast_to_SolvableAlgebra ()
virtual const WeylAlgebracast_to_WeylAlgebra () const
virtual RRR * cast_to_RRR ()
virtual const RRR * cast_to_RRR () const
virtual RRi * cast_to_RRi ()
virtual const RRi * cast_to_RRi () const
virtual CCCcast_to_CCC ()
virtual const CCCcast_to_CCC () const
virtual const RingElementgetMinimalPolynomial () const
virtual const RingElementgetGenerator () const
virtual long discreteLog (const ring_elem &a) const
virtual const RingElementgetRepresentation (const ring_elem &a) const
virtual MutableMatrixmakeMutableMatrix (size_t nrows, size_t ncols, bool dense) const
virtual FreeModulemake_FreeModule () const
virtual FreeModulemake_Schreyer_FreeModule () const
virtual FreeModulemake_FreeModule (int n) const
virtual std::pair< bool, long > coerceToLongInteger (ring_elem a) const
ring_elem one () const
ring_elem minus_one () const
ring_elem zero () const
virtual bool lower_associate_divisor (ring_elem &f, ring_elem g) const
void negate_to (ring_elem &f) const
void add_to (ring_elem &f, const ring_elem &g) const
void subtract_to (ring_elem &f, const ring_elem &g) const
void mult_to (ring_elem &f, const ring_elem g) const
const_monomial degree (const ring_elem f) const
virtual ring_elem antipode (ring_elem f) const
vec vec_zeroize_tiny (gmp_RR epsilon, const vec f) const
void vec_increase_maxnorm (gmp_RRmutable norm, const vec f) const
void vec_sort (vecterm *&f) const
int compare_vecs (vec v, vec w) const
vec e_sub_i (int r) const
vec make_vec (int r, ring_elem a) const
vec make_vec_from_array (int len, Nterm **array) const
vec copy_vec (const vecterm *v) const
void remove_vec (vec v) const
bool is_equal (const vecterm *a, const vecterm *b) const
bool get_entry (const vecterm *v, int r, ring_elem &result) const
ring_elem get_entry (vec v, int r) const
vec sub_vector (const vecterm *v, M2_arrayint r) const
int n_nonzero_terms (const vecterm *v) const
void vec_text_out (buffer &o, const vecterm *v, bool p_one=true, bool p_plus=false, bool p_parens=false) const
vec vec_eval (const RingMap *map, const FreeModule *F, const vec v) const
vec negate_vec (vec v) const
vec add_vec (vec v, vec w) const
vec subtract_vec (vec v, vec w) const
vec mult_vec (int n, vec v) const
vec mult_vec (const ring_elem f, const vec w) const
vec rightmult_vec (const vec w, const ring_elem f) const
void set_entry (vec &v, int i, ring_elem r) const
void mult_vec_to (vec &v, const ring_elem r, bool opposite_mult) const
void mult_row (vec &v, const ring_elem r, int i, bool opposite_mult) const
void negate_vec_to (vec &v) const
void add_vec_to (vec &v, vec &w) const
void subtract_vec_to (vec &v, vec &w) const
vec mult_vec_matrix (const Matrix *m, vec v, bool opposite_mult) const
vec component_shift (int n, vec v) const
vec tensor_shift (int n, int m, vec v) const
vec tensor (const FreeModule *F, vec v, const FreeModule *G, vec w) const
void divide_vec_to (vec &v, const ring_elem a) const
void divide_row (vec &v, int r, const ring_elem a) const
ring_elem dot_product (const vecterm *v, const vecterm *w) const
vec vec_diff (vec v, int rankFw, vec w, int use_coeff) const
int vec_in_subring (int n, const vec v) const
void vec_degree_of_var (int n, const vec v, int &lo, int &hi) const
vec vec_divide_by_var (int n, int d, const vec v) const
vec vec_divide_by_expvector (const_exponents exp, const vec v) const
bool vec_is_scalar_multiple (vec f, vec g) const
vec vec_remove_monomial_factors (vec f, bool make_squarefree_only) const
bool vec_multi_degree (const FreeModule *F, const vec f, monomial degf) const
void vec_degree_weights (const FreeModule *F, const vec f, const std::vector< int > &wts, int &lo, int &hi) const
bool vec_is_homogeneous (const FreeModule *F, const vec f) const
vec vec_homogenize (const FreeModule *F, const vec f, int v, int deg, const std::vector< int > &wts) const
vec vec_homogenize (const FreeModule *F, const vec f, int v, const std::vector< int > &wts) const
ring_elem divide_by_content (ring_elem f) const
ring_elem split_off_content (ring_elem f, ring_elem &result) const
ring_elem vec_content (vec f) const
vec vec_divide_by_given_content (vec f, ring_elem c) const
vec vec_divide_by_content (vec f) const
ring_elem vec_split_off_content (vec f, vec &result) const
Public Member Functions inherited from MutableEngineObject
 MutableEngineObject ()
virtual ~MutableEngineObject ()
unsigned int hash () const
Public Member Functions inherited from our_gc_cleanup
 our_gc_cleanup ()
virtual ~our_gc_cleanup ()

Static Public Member Functions

static SchurRingcreate (const PolynomialRing *R)
static SchurRingcreate (const Ring *A, int n)
static SchurRingcreateInfinite (const Ring *A)
Static Public Member Functions inherited from PolyRing
static const PolyRingcreate (const Ring *K, const Monoid *M)
static const PolyRingget_trivial_poly_ring ()
Static Public Member Functions inherited from PolynomialRing
static PolynomialRingcreate_quotient (const PolynomialRing *R, const Matrix *M)
static PolynomialRingcreate_quotient (const PolynomialRing *R, const PolynomialRing *B)
static PolynomialRingcreate_quotient_ring (const Matrix *M)
Static Public Member Functions inherited from our_new_delete
static void * operator new (size_t size)
static void * operator new[] (size_t size)
static void operator delete (void *obj)
static void operator delete[] (void *obj)
static void * operator new (size_t size, void *existing_memory)
static void * operator new[] (size_t size, void *existing_memory)
static void operator delete (void *obj, void *existing_memory)
static void operator delete[] (void *obj, void *existing_memory)

Protected Member Functions

bool initialize_schur ()
 SchurRing ()
virtual ~SchurRing ()
Protected Member Functions inherited from PolyRing
void initialize_poly_ring (const Ring *K, const Monoid *M)
virtual ~PolyRing ()
 PolyRing ()
void minimal_monomial (ring_elem f, monomial &monom) const
Ntermdivision_algorithm (Nterm *f, Nterm *g, Nterm *&quot) const
Ntermdivision_algorithm (Nterm *f, Nterm *g) const
Ntermpowerseries_division_algorithm (Nterm *f, Nterm *g, Nterm *&quot) const
std::vector< intsetNegativeExponentMonomial (Nterm *f) const
 Create an exponent vector whose i-th value is the minimum of the exponents of that variable, if that variable is a Laurent variable (i.e. allows negative exponents).
Ntermdivision_algorithm_with_laurent_variables (Nterm *f, Nterm *g, Nterm *&quot) const
vec vec_coefficient_of_var (vec v, int var, int exp) const
ring_elem diff_term (const_monomial m, const_monomial n, monomial resultmon, int use_coeff) const
ring_elem power_direct (const ring_elem f, int n) const
ring_elem get_logical_coeff (const Ring *coeffR, const Nterm *&f) const
Ntermnew_term () const
Ntermcopy_term (const Nterm *t) const
bool imp_attempt_to_cancel_lead_term (ring_elem &f, ring_elem g, ring_elem &coeff, monomial monom) const
ring_elem imp_skew_mult_by_term (const ring_elem f, const ring_elem c, const_monomial m) const
void imp_subtract_multiple_to (ring_elem &f, ring_elem a, const_monomial m, const ring_elem g) const
Protected Member Functions inherited from PolynomialRing
void setIsGraded (bool new_val)
void setQuotientInfo (QRingInfo *qinfo0)
void initialize_PolynomialRing (const Ring *K, const Monoid *M, const PolyRing *numeratorR, const PolynomialRing *ambientR, const Ring *denomR)
virtual ~PolynomialRing ()
 PolynomialRing ()
void sort (Nterm *&f) const
Protected Member Functions inherited from Ring
const ARinggetARing () const
void initialize_ring (long charac, const PolynomialRing *DR=nullptr, const std::vector< int > &heft_vec={})
 Ring ()
vec new_vec () const
 vector operations ////////////////////
void remove_vec_node (vec n) const

Private Member Functions

void to_partition (const int *m, int *exp) const
void from_partition (const int *exp, int *m) const
void bounds (int &lo, int &hi)
void SM ()
Ntermskew_schur (int *lambda, int *p)
ring_elem mult_monomials (const int *m, const int *n)

Private Attributes

tableau _SMtab
tableau _SMfilled
int _SMcurrent
int _SMfinalwt
Nterm_SMresult

Additional Inherited Members

Public Types inherited from Ring
enum  CoefficientType { COEFF_ZZ , COEFF_QQ , COEFF_BASIC }
Static Protected Member Functions inherited from PolyRing
static void make_trivial_ZZ_poly_ring ()
Static Protected Member Functions inherited from PolynomialRing
static PolynomialRingcreate_quotient (const PolynomialRing *R, VECTOR(Nterm *) &elems)
Protected Attributes inherited from PolynomialRing
bool is_skew_
SkewMultiplication skew_
bool is_weyl_
bool is_solvable_
Ring::CoefficientType coeff_type_
bool overZZ_
QRingInfoqinfo_
bool is_ZZ_quotient_
ring_elem ZZ_quotient_value_
size_t poly_size_
int nvars_
int exp_size
const RingK_
const MonoidM_
const PolyRingnumerR_
const RingdenomR_
const PolynomialRingambientR_
GBRinggb_ring_
Protected Attributes inherited from Ring
long mCharacteristic
const PolynomialRingdegree_ring
std::vector< intmHeftVector
const ARingAR
const CoefficientRingRcR
ring_elem _non_unit
int _isfield
ring_elem zeroV
ring_elem oneV
ring_elem minus_oneV
Static Protected Attributes inherited from PolyRing
static PolyRingtrivial_poly_ring = nullptr

Detailed Description

PolyRing subclass implementing the Schur (symmetric-function) ring whose monomials are partitions and whose multiplication is the Littlewood-Richardson rule.

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

Exponent vectors are interpreted as partitions and converted back and forth via to_partition / from_partition. Schur multiplication uses the skew-tableau recursion SM() driven by _SMtab / _SMfilled / _SMcurrent scratch state, accumulating the result into _SMresult. Used by the engine's symmetric function code paths to compute products and skew Schur expansions.

Definition at line 81 of file schur.hpp.


The documentation for this class was generated from the following files: