302#define GB_FLAG_IS_HOMOGENEOUS 1
303#define GB_FLAG_IS_NONDEGENERATE 2
304#define GB_FLAG_BIGCELL 4
361 unsigned int options);
430 const Matrix **result_remainder,
431 const Matrix **result_quotient);
exponents::ConstExponents const_exponents
Engine-side free module R^n over a Ring.
Abstract base for the engine's polynomial-ring hierarchy.
friend class binomialGB_comp
bool gcd_is_one(monomial0 m, monomial0 n) const
void elem_text_out(buffer &o, const binomial &f) const
void set_weights(monomial0 m) const
monomial0 mult(monomial0 m, monomial0 n) const
bool vector_to_binomial(vec f, binomial &result) const
bool normalize(binomial &f) const
void remove_binomial(binomial &f) const
vec monomial_to_vector(monomial0 m) const
int degree(monomial0 m) const
unsigned int mask(const_exponents m) const
monomial0 make_monomial(const_exponents exp) const
bool calc_s_pair(binomial_s_pair &s, binomial &result) const
binomial make_binomial() const
monomial0 new_monomial() const
monomial0 quotient(monomial0 m, monomial0 n) const
void translate_binomial(const binomial_ring *old_ring, binomial &f) const
bool remove_content(binomial &f) const
monomial0 monomial_lcm(monomial0 m, monomial0 n) const
void intvector_to_binomial(vec f, binomial &result) const
monomial0 lead_monomial(binomial f) const
monomial0 copy_monomial(monomial0 m) const
bool divides(monomial0 m, monomial0 n) const
void translate_monomial(const binomial_ring *old_ring, monomial0 &m) const
void remove_monomial(monomial0 &m) const
int weight(monomial0 m) const
monomial0 spair(monomial0 lcm, monomial0 m, monomial0 n) const
monomial0 divide(monomial0 m, monomial0 n) const
binomial copy_binomial(const binomial &f) const
void monomial_out(buffer &o, const_exponents m) const
int compare(monomial0 m, monomial0 n) const
vec binomial_to_vector(binomial f) const
int graded_compare(monomial0 m, monomial0 n) const
binomial_ring(const PolynomialRing *RR)
void spair_to(monomial0 a, monomial0 b, monomial0 c) const
bool one_reduction_step(binomial &f, binomial g) const
void insert_pair(s_pair_degree_list *q, binomial_s_pair &s)
void insert(binomial_gb_elem *p)
bool next(const int *d, binomial_s_pair &result, int &result_deg)
void remove_lcm_list(s_pair_lcm_list *p)
int lowest_degree() const
binomial_s_pair_set(const binomial_ring *R)
void remove_pair_list(s_pair_degree_list *p)
s_pair_degree_list * _pairs
void enlarge(const binomial_ring *R)
iterator & operator++(int)
binomial_gb_elem * operator*()
bool operator==(const iterator &p) const
bool operator!=(const iterator &p) const
virtual const Matrix * get_initial(int nparts)
virtual const Matrix * get_syzygies()
virtual ~binomialGB_comp()
VECTOR(binomial_gb_elem *) Gens
ComputationStatusCode gb_done() const
virtual const Matrix * get_mingens()
virtual const Matrix * matrix_remainder(const Matrix *m)
virtual const Ring * get_ring() const
Matrix * reduce(const Matrix *m, Matrix *&lift)
virtual void text_out(buffer &o) const
virtual int complete_thru_degree() const
binomial_s_pair_set * Pairs
virtual int contains(const Matrix *m)
virtual bool stop_conditions_ok()
void enlarge(const PolynomialRing *R, int *wts)
void process_pair(binomial_s_pair p)
VECTOR(binomial_gb_elem *) mingens
static binomialGB_comp * create(const Matrix *m, M2_bool collect_syz, int n_rows_to_keep, M2_arrayint gb_weights, int strategy, M2_bool use_max_degree, int max_degree)
virtual M2_bool matrix_lift(const Matrix *m, const Matrix **result_remainder, const Matrix **result_quotient)
virtual const Matrix * get_gb()
VECTOR(binomial_gb_elem *) mingens_subring
virtual const Matrix * get_change()
binomialGB_comp(const PolynomialRing *R, int *wts, bool revlex, unsigned int options)
VECTOR(binomial_gb_elem *) G
void add_generators(const Matrix *m)
void debug_display() const
binomialGB(const binomial_ring *R, bool bigcell, bool homogprime)
void remove_monomial_list(monomial_list *mm) const
bool reduce(binomial &f) const
void reduce_monomial(monomial0 m) const
monomial_list * find_divisor(monomial_list *I, monomial0 m) const
bool is_homogeneous_prime
monomial_list * ideal_quotient(monomial0 m) const
void minimalize_and_insert(binomial_gb_elem *f)
void enlarge(const binomial_ring *newR)
void make_new_pairs(binomial_s_pair_set *Pairs, binomial_gb_elem *f) const
GBComputation — abstract base of every Groebner-basis algorithm in the engine.
VALGRIND_MAKE_MEM_DEFINED & result(result)
Matrix — the engine's immutable homomorphism F -> G between free modules.
typename std::vector< T, gc_allocator< T > > gc_vector
a version of the STL vector, which allocates its backing memory with gc.
binomial_gb_elem * smaller
binomial_gb_elem(binomial ff)
s_pair_degree_list * next
s_pair_elem(binomial_gb_elem *ff1, binomial_gb_elem *ff2)
binomial_s_pair(binomial_gb_elem *ff1, binomial_gb_elem *ff2, monomial0 lcm0)
binomial(monomial0 lead0, monomial0 tail0)
gbmin_elem(binomial_gb_elem *f, int mask0)
monomial_list(monomial0 m0, int mask0, gbmin_elem *val)