206 return qinfo_->get_quotient_MonomialTable();
211 return qinfo_->get_quotient_monomials();
216 return qinfo_->get_quotient_MonomialTableZZ();
223 return qinfo_->quotient_gbvector(i);
298 if (D == 0)
return 0;
300 if (DR == 0)
return 0;
330 const std::vector<int> &wts,
336 const std::vector<int> &wts)
const = 0;
339 const std::vector<int> &wts)
const = 0;
352 long &result_len)
const = 0;
358 long hibound)
const = 0;
431 ring_elem &result_denominator)
const = 0;
varpower::ConstExponents const_varpower
exponents::ConstExponents const_exponents
exponents::Exponents exponents_t
Engine-side free module R^n over a Ring.
base class for Groebner basis computations.
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
GBRing specialisation for skew-commutative (exterior-like) polynomial rings.
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
Engine-side monomial ideal: a decision tree of Nmi_nodes storing the (typically minimal) generators b...
Indexed table of monomials with fast "find a divisor" lookup, keyed by a free integer val per entry.
MonomialTable analogue for monomials carrying a ZZ coefficient.
virtual PolyRingFlat * cast_to_PolyRingFlat()
virtual Nterm * numerator(ring_elem f) const
virtual const PolyRingFlat * cast_to_PolyRingFlat() const
PolynomialRing subclass whose elements are represented as a single flat Nterm* linked list (no fracti...
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
virtual ring_elem get_coeff(const Ring *coeffR, const ring_elem f, const_varpower vp) const =0
virtual M2_arrayint support(const ring_elem a) const =0
virtual bool is_solvable_algebra() const
virtual ring_elem mult_by_term(const ring_elem f, const ring_elem c, const_monomial m) const =0
virtual ring_elem divide_by_expvector(const_exponents exp, const ring_elem a) const =0
int n_terms(const ring_elem f) const
virtual int index_of_var(const ring_elem a) const =0
Ring::CoefficientType coeff_type_
int n_skew_commutative_vars() const
virtual int n_flat_terms(const ring_elem f) const =0
QRingInfo * get_quotient_info() const
const Ring * getCoefficientRing() const
virtual int n_fraction_vars() const
virtual int n_logical_terms(int nvars0, const ring_elem f) const =0
virtual bool is_commutative_ring() const
virtual ring_elem var(int v) const =0
void setQuotientInfo(QRingInfo *qinfo0)
virtual void text_out(buffer &o) const =0
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 =0
virtual GBRing * get_gb_ring() const
void initialize_PolynomialRing(const Ring *K, const Monoid *M, const PolyRing *numeratorR, const PolynomialRing *ambientR, const Ring *denomR)
virtual gbvector * translate_gbvector_from_ringelem(ring_elem coeff) const =0
void setIsGraded(bool new_val)
virtual const PolynomialRing * getAmbientRing() const
virtual ring_elem homogenize(const ring_elem f, int v, int deg, const std::vector< int > &wts) const =0
virtual vec vec_lead_term(int nparts, const FreeModule *F, vec v) const =0
virtual bool is_homogeneous(const ring_elem f) const =0
virtual void lead_logical_exponents(int nvars0, const ring_elem f, exponents_t result_exp) const =0
ring_elem ZZ_quotient_value_
virtual ~PolynomialRing()
const PolynomialRing * ambientR_
bool is_poly_ring() const
static PolynomialRing * create_quotient(const PolynomialRing *R, VECTOR(Nterm *) &elems)
virtual ring_elem divide_by_var(int n, int d, const ring_elem a) const =0
virtual const Monoid * getMonoid() const
virtual bool in_subring(int nslots, const ring_elem a) const =0
void sort(Nterm *&f) const
virtual PolynomialRing * cast_to_PolynomialRing()
virtual ring_elem homogenize(const ring_elem f, int v, const std::vector< int > &wts) const =0
virtual ring_elem lead_flat_coeff(const ring_elem f) const =0
const MonomialIdeal * get_quotient_monomials() const
static PolynomialRing * create_quotient_ring(const Matrix *M)
Matrix * getPresentation() const
virtual void mult_coeff_to(ring_elem a, ring_elem &f) const =0
virtual vec translate_gbvector_to_vec_denom(const FreeModule *F, const gbvector *v, const ring_elem denom) const =0
SumCollector * make_SumCollector() const
bool is_basic_ring() const
const MonomialTableZZ * get_quotient_MonomialTableZZ() const
virtual const PolynomialRing * cast_to_PolynomialRing() const
const MonomialIdeal * make_basis_MonomialIdeal() const
virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const =0
virtual bool is_fraction_poly_ring() const
virtual Nterm * numerator(ring_elem f) const =0
Nterm * quotient_element(int i) const
virtual vec vec_top_coefficient(const vec v, int &var, int &exp) const =0
bool is_quotient_ring() const
bool is_skew_var(int v) const
virtual void degree_weights(const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const =0
int skew_variable(int i) const
virtual const Ring * getCoefficients() const
MonomialTable * get_quotient_MonomialTable() const
virtual bool multi_degree(const ring_elem f, monomial d) const =0
virtual void degree_of_var(int n, const ring_elem a, int &lo, int &hi) const =0
virtual gbvector * translate_gbvector_from_vec(const FreeModule *F, const vec v, ring_elem &result_denominator) const =0
virtual void divide_coeff_to(ring_elem &f, ring_elem a) const =0
virtual bool is_weyl_algebra() const
virtual const PolyRing * getNumeratorRing() const
virtual unsigned int computeHashValue(const ring_elem a) const
virtual ring_elem * get_parts(const std::vector< int > &wts, const ring_elem f, long &result_len) const =0
virtual ring_elem get_terms(int nvars0, const ring_elem f, int lo, int hi) const =0
virtual ring_elem make_logical_term(const Ring *coeffR, const ring_elem a, const_exponents exp) const =0
virtual ring_elem diff(ring_elem a, ring_elem b, int use_coeff) const =0
virtual const vecterm * vec_locate_lead_term(const FreeModule *F, vec v) const =0
virtual ring_elem lead_logical_coeff(const Ring *coeffR, const ring_elem f) const =0
virtual bool is_skew_commutative_ring() const
const gbvector * quotient_gbvector(int i) const
CoefficientType coefficient_type() const
virtual const Ring * getDenominatorRing() const
const SkewMultiplication & getSkewInfo() const
virtual engine_RawArrayPairOrNull list_form(const Ring *coeffR, const ring_elem f) const =0
bool is_skew_commutative() const
virtual const_monomial lead_flat_monomial(const ring_elem f) const =0
virtual void monomial_divisor(const ring_elem a, exponents_t exp) const =0
virtual vec translate_gbvector_to_vec(const FreeModule *F, const gbvector *v) const =0
unsigned long get_precision() const
Abstract base for the engine's polynomial-ring hierarchy.
Bookkeeping helper holding the defining ideal of a polynomial-ring quotient R / I in the two represen...
virtual const PolynomialRing * cast_to_PolynomialRing() const
Sign-rule helper used by every ring that has a skew-commutative subset of variables (exterior factor,...
Abstract incremental accumulator that builds a ring_elem from many add(f) calls.
ComputationStatusCode / StopConditions / StrategyValues / Algorithms / gbTraceValues — engine-to-inte...
const int * const_monomial
engine_RawArrayPair engine_RawArrayPairOrNull
QRingInfo family — bookkeeping plus normal-form machinery attached to a PolyRingQuotient for R / I re...
Ring — the legacy abstract base class for every coefficient and polynomial ring.
ring_elem — the universal value type carried by every Ring* in the engine.
SkewMultiplication — configuration object naming the skew-commuting variables of a ring.
Singly linked-list node carrying one term of a polynomial-ring element.