268 int max_reduction_count0);
276 return gb[
s->x.pair.i]->g.f->comp;
313 spairs::iterator
choose_pair(spairs::iterator first, spairs::iterator next);
420 virtual int kind() {
return 231; }
441 const Matrix **result_remainder,
442 const Matrix **result_quotient);
exponents::Exponents exponents_t
Abstract base for long-running, resumable engine computations (GBComputation, ResolutionComputation,...
Engine-side free module R^n over a Ring.
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
Heuristic-weight evaluator for gbvectors, used during Groebner basis computation to drive the S-pair ...
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.
Abstract base for the engine's polynomial-ring hierarchy.
Base class for reduced Groebner basis computation.
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
enum ComputationStatusCode computation_is_complete()
void spairs_reverse(spair *&ps)
void spair_delete(spair *&p)
void compute_s_pair(spair *p)
void minimalize_pairs_non_ZZ(spairs &new_set)
virtual const PolynomialRing * get_ring() const
MonomialTable * ringtable
void poly_auto_reduce(VECTOR(POLY) &mat)
int get_resolved_gb_index(int i) const
int spair_COMPONENT(spair *s)
virtual const Matrix * get_change()
void spair_text_out(buffer &o, spair *p)
Ring::CoefficientType _coeff_type
const PolynomialRing * originalR
virtual const Matrix * get_mingens()
void spair_set_show_mem_usage()
int find_good_monomial_divisor_ZZ(mpz_srcptr c, exponents_t e, int x, int degf, int &result_gap)
void tail_remainder_ZZ(POLY &f, int degf)
void poly_auto_reduce_ZZ(VECTOR(POLY) &mat)
virtual bool stop_conditions_ok()
void spair_set_lead_spoly(spair *p)
RingElement * compute_hilbert_function()
int divisor_previous_comp
static gbA * create_forced(const Matrix *m, const Matrix *gb, const Matrix *mchange)
virtual M2_bool matrix_lift(const Matrix *m, const Matrix **result_remainder, const Matrix **result_quotient)
void replace_gb_element_ZZ(MonomialTableZZ::mon_term *t)
void spair_set_insert(spair *p)
void remainder_ZZ(POLY &f, int degf, bool use_denom, ring_elem &denom)
gbelem * gbelem_ring_make(gbvector *f)
int gbelem_COMPONENT(gbelem *g)
virtual void text_out(buffer &o) const
gbelem * gbelem_make(gbvector *f, gbvector *fsyz, gbelem_type minlevel, int deg)
spair * spair_make_gcd_ZZ(int i, int j)
virtual const Matrix * matrix_remainder(const Matrix *m)
virtual int complete_thru_degree() const
MonomialTableZZ * lookupZZ
void remainder(POLY &f, int degf, bool use_denom, ring_elem &denom)
spair * new_gen(int i, gbvector *f, ring_elem denom)
void remainder_by_ZZ(const FreeModule *F, const FreeModule *Fsyz, POLY &f, const VECTOR(POLY) &polys, MonomialTableZZ *T)
void initialize(const Matrix *m, int csyz, int nsyz, M2_arrayint gb_weights, int strat, int max_reduction_count0)
static gbA * 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, int max_reduction_count)
void debug_spair_array(spairs &spairlist)
bool spair_is_retired(spair *p) const
int complete_thru_this_degree
void gbelem_text_out(buffer &o, int i, int nterms=3) const
spair * spair_make_gen(POLY f)
void auto_reduce_by(int id)
bool is_gcd_one_pair(spair *p)
virtual const Matrix * get_gb()
virtual const Matrix * get_initial(int nparts)
int find_good_divisor(exponents_t e, int x, int degf, int &result_gap)
const GBWeight * weightInfo_
void spairs_sort(int len, spair *&list)
typedef VECTOR(spair *) spairs
spair * spair_make_ring(int i, int j)
bool pair_not_needed(spair *p, gbelem *m)
virtual int contains(const Matrix *m)
int spair_set_prepare_next_degree(int &nextdegree)
void minimalize_pairs(spairs &new_set)
virtual const Matrix * get_syzygies()
void minimalize_pairs_ZZ(spairs &new_set)
bool process_spair(spair *p)
void remove_unneeded_pairs(int id)
Matrix * make_lead_term_matrix()
spair * spair_make_skew(int i, int v)
void debug_spair(spair *p)
spairs::iterator choose_pair(spairs::iterator first, spairs::iterator next)
virtual const Matrix * get_parallel_lead_terms(M2_arrayint w)
spair * spair_make(int i, int j)
void remainder_non_ZZ(POLY &f, int degf, bool use_denom, ring_elem &denom)
void insert_gb(POLY f, gbelem_type minlevel)
void remove_spair_list(spair *&set)
void update_pairs(int id)
void debug_spairs(spair *spairlist)
virtual Computation * set_hilbert_function(const RingElement *h)
const MonomialTableZZ * ringtableZZ
exponents_t exponents_make()
void spair_set_defer(spair *&p)
gbelem * gbelem_copy(gbelem *g)
int find_good_term_divisor_ZZ(mpz_srcptr c, exponents_t e, int x, int degf, int &result_gap)
void collect_syzygy(gbvector *fsyz)
const RingElement * hf_orig
int spair_set_determine_next_degree(int &nextdegree)
The default Groebner basis computation class.
GBComputation — abstract base of every Groebner-basis algorithm in the engine.
void gb(IntermediateBasis &F, int n)
GBRing and gbvector — the GB-tuned polynomial-ring view used by classical Buchberger code.
MonomialTable — leading-monomial divisor index used by the GB reducer.
MonomialTableZZ — coefficient-aware leading-monomial index for ZZ-coefficient Groebner bases.
static gmp_randstate_t state
ReducedGB — abstract base for the canonicalising reduction pass that follows GB computation.
MonomialTable::mon_term plus an _coeff slot pointing at the entry's leading ZZ coefficient (or nullpt...
spair * spair_last_deferred
spair spair_deferred_list
spair * gen_last_deferred
union gbA::spair::@344103323053032064111352014125043204306347255347 x
struct gbA::spair::@344103323053032064111352014125043204306347255347::pair pair