Macaulay2 Engine
Loading...
Searching...
No Matches
GBRing Class Referenceabstract

Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations. More...

#include <gbring.hpp>

Inheritance diagram for GBRing:
our_new_delete GBRingPoly GBRingSkew GBRingSolvable GBRingWeyl GBRingWeylZZ

Public Member Functions

virtual ~GBRing ()
const Monoidget_flattened_monoid () const
const Ringget_flattened_coefficients () const
int n_vars () const
void memstats ()
bool is_skew_commutative () const
int n_skew_commutative_vars () const
int skew_variable (int i) const
const intskew_monomial_var (int i) const
bool is_weyl_algebra () const
bool is_schreyer_encoded () const
exponents_t exponents_make ()
void exponents_delete (exponents_t e)
size_t exponent_byte_size () const
const ring_elem one ()
void gbvector_remove (gbvector *f)
gbvectorgbvector_raw_term (ring_elem coeff, const int *monom, int comp)
gbvectorgbvector_term (const FreeModule *F, ring_elem coeff, int comp)
gbvectorgbvector_term (const FreeModule *F, ring_elem coeff, const int *monom, int comp)
gbvectorgbvector_term_exponents (const FreeModule *F, ring_elem coeff, const int *exp, int comp)
gbvectorgbvector_zero () const
void gbvector_sort (const FreeModule *F, gbvector *&f)
bool gbvector_is_zero (const gbvector *f) const
bool gbvector_is_equal (const gbvector *f, const gbvector *g) const
int gbvector_n_terms (const gbvector *f) const
void gbvector_multidegree (const FreeModule *F, const gbvector *f, int *&result_degree)
int gbvector_compare (const FreeModule *F, const gbvector *f, const gbvector *g) const
gbvectorgbvector_lead_term (int n, const FreeModule *F, const gbvector *f)
gbvectorgbvector_parallel_lead_terms (M2_arrayint w, const FreeModule *F, const gbvector *leadv, const gbvector *v)
void gbvector_get_lead_monomial (const FreeModule *F, const gbvector *f, int *result)
void gbvector_get_lead_exponents (const FreeModule *F, const gbvector *f, int *result)
int gbvector_lead_component (const gbvector *f)
void gbvector_mult_by_coeff_to (gbvector *f, ring_elem u)
gbvectorgbvector_mult_by_coeff (const gbvector *f, ring_elem u)
void gbvector_add_to_zzp (const FreeModule *F, gbvector *&f, gbvector *&g)
void gbvector_add_to (const FreeModule *F, gbvector *&f, gbvector *&g)
void gbvector_negate_to (gbvector *f) const
gbvectorgbvector_copy (const gbvector *f)
void find_reduction_coeffs (const FreeModule *F, const gbvector *f, const gbvector *g, ring_elem &u, ring_elem &v)
bool find_reduction_coeffs_ZZ (const FreeModule *F, const gbvector *f, const gbvector *g, ring_elem &v)
void find_reduction_monomial (const FreeModule *F, const gbvector *f, const gbvector *g, int &comp, int *&monom)
void gbvector_mult_by_term (const FreeModule *F, const FreeModule *Fsyz, ring_elem a, const int *m, const gbvector *f, const gbvector *fsyz, gbvector *&result, gbvector *&esult_syz)
void gbvector_reduce_lead_term (const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz, bool use_denom, ring_elem &denom)
void gbvector_reduce_lead_term (const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz)
void gbvector_reduce_with_marked_lead_term (const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *ginitial, const gbvector *g, const gbvector *gsyz, bool use_denom, ring_elem &denom)
bool gbvector_reduce_lead_term_ZZ (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz)
void gbvector_cancel_lead_terms (const FreeModule *F, const FreeModule *Fsyz, const gbvector *f, const gbvector *fsyz, const gbvector *g, const gbvector *gsyz, gbvector *&result, gbvector *&result_syz)
void gbvector_replace_2by2_ZZ (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, gbvector *&g, gbvector *&gsyz)
void gbvector_combine_lead_terms_ZZ (const FreeModule *F, const FreeModule *Fsyz, const gbvector *f, const gbvector *fsyz, const gbvector *g, const gbvector *gsyz, gbvector *&result, gbvector *&result_syz)
void reduce_lead_term_heap (const FreeModule *F, const FreeModule *Fsyz, const gbvector *fcurrent_lead, const_exponents exp, gbvector *flead, gbvectorHeap &f, gbvectorHeap &fsyz, const gbvector *g, const gbvector *gsyz)
void reduce_marked_lead_term_heap (const FreeModule *F, const FreeModule *Fsyz, const gbvector *fcurrent_lead, const_exponents exp, gbvector *flead, gbvectorHeap &f, gbvectorHeap &fsyz, const gbvector *marked_in_g, const gbvector *g, const gbvector *gsyz)
void gbvector_remove_content (gbvector *f, gbvector *fsyz, bool use_denom, ring_elem &denom)
void gbvector_remove_content (gbvector *f, gbvector *fsyz)
void gbvector_auto_reduce (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz)
void gbvector_auto_reduce_ZZ (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz)
void gbvector_text_out (buffer &o, const FreeModule *F, const gbvector *f, int nterms=-1) const
void gbvector_apply (const FreeModule *F, const FreeModule *Fsyz, gbvector *&f, gbvector *&fsyz, const gbvector *gsyz, const gbvector **elems, const gbvector **elems_syz, const gbvector **quotients)

Static Public Member Functions

static GBRingcreate_PolynomialRing (const Ring *K, const Monoid *M)
static GBRingcreate_SkewPolynomialRing (const Ring *K0, const Monoid *M0, SkewMultiplication skew0)
static GBRingcreate_WeylAlgebra (const Ring *K0, const Monoid *M0, const WeylAlgebra *W0)
static GBRingcreate_SolvableAlgebra (const Ring *K0, const Monoid *M0, const SolvableAlgebra *R)
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

gbvectornew_raw_term ()
void gbvector_remove_term (gbvector *f)
gbvectorgbvector_copy_term (const gbvector *t)
void divide_exponents (const int *exp1, const int *exp2, int *result) const
void exponent_syzygy (const int *exp1, const int *exp2, int *exp3, int *exp4)
virtual gbvectormult_by_term1 (const FreeModule *F, const gbvector *f, ring_elem u, const int *monom, int comp)=0
gbvectormult_by_term (const FreeModule *F, const gbvector *f, ring_elem u, const int *monom, int comp)
int skew_mult_sign (int *exp1, int *exp2) const
void divide_coeff_exact_to_ZZ (gbvector *f, gmp_ZZ u) const
void lower_content_ZZ (gbvector *f, mpz_ptr content) const
void gbvector_remove_content_ZZ (gbvector *f, gbvector *fsyz, bool use_denom, ring_elem &denom) const
const gbvectorfind_coeff (const FreeModule *F, const gbvector *f, const gbvector *g) const
 GBRing (const Ring *K0, const Monoid *M0)

Protected Attributes

bool _schreyer_encoded
const MonoidM
const RingK
bool _coeffs_ZZ
CoefficientRingZZpzzp
size_t gbvector_size
stashmem
int _nvars
bool _up_order
bool _is_skew
SkewMultiplication _skew
int *const * _skew_monoms
bool is_weyl
const WeylAlgebraweyl
bool is_solvable
const SolvableAlgebrasolvable
ring_elem _one
size_t exp_size
size_t monom_size

Friends

class GBKernelComputation
class WeylAlgebra
class SkewPolynomialRing

Detailed Description

Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.

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

Holds the coefficient ring, the (flattened) monoid, and the Schreyer-order machinery, and exposes the gbvector arithmetic primitives (gbvector_add_to, gbvector_mult_by_term, ...) that the GB inner loop calls millions of times. Subclasses (GBRingPoly, GBRingSkew, GBRingWeyl, GBRingWeylZZ, GBRingSolvable) override mult_by_term1 to encode ring-specific commutation rules. Built once per computation from a PolynomialRing and torn down at the end.

Definition at line 119 of file gbring.hpp.


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