34 :
R(R0),
F(F0),
gb(gb0)
41 return R->gbvector_compare(
F,
x, y) ==
LT;
63 positions.reserve(polys0.size());
65 for (
int i = 0; i < polys0.size(); i++) positions.push_back(i);
82 for (
VECTOR(
int)::iterator i = positions.begin(); i != positions.end(); i++)
87 R->gbvector_get_lead_exponents(
F, f, e);
88 if ((!
Rideal || !
Rideal->search_expvector(e, not_used)) &&
89 T->find_divisors(1, e, f->
comp) == 0)
96 h.
f =
R->gbvector_copy(f);
97 h.
fsyz =
R->gbvector_copy(polys0[*i].fsyz);
99 if (auto_reduced)
remainder(h,
false, junk);
101 R->gbvector_remove_content(h.
f, h.
fsyz);
107 R->exponents_delete(e);
115 frem->
next =
nullptr;
119 while (!
R->gbvector_is_zero(h.
f))
121 R->gbvector_get_lead_exponents(
F, h.
f, EXP);
124 if (
Rideal !=
nullptr &&
Rideal->search_expvector(EXP, b))
127 R->gbvector_reduce_lead_term(
132 int w =
T->find_divisor(EXP,
x);
136 R->gbvector_reduce_lead_term(
F,
151 frem->
next =
nullptr;
159 ring_elem one_elem =
R->get_flattened_coefficients()->one();
160 denom1 =
R->get_flattened_coefficients()->one();
161 originalR->get_quotient_info()->gbvector_normal_form(
163 if (
EQ !=
R->get_flattened_coefficients()->compare_elems(denom1, one_elem))
166 R->gbvector_mult_by_coeff_to(h.
f, denom1);
170 R->get_flattened_coefficients()->mult_to(denom, denom1);
182 frem->
next =
nullptr;
185 while (!
R->gbvector_is_zero(h))
187 R->gbvector_get_lead_exponents(
F, h, EXP);
190 if (
Rideal !=
nullptr &&
Rideal->search_expvector(EXP, b))
193 R->gbvector_reduce_lead_term(
198 int w =
T->find_divisor(EXP,
x);
204 frem->
next =
nullptr;
209 R->gbvector_reduce_lead_term(
exponents::Exponents exponents_t
Engine-side free module R^n over a Ring.
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
static MonomialTable * make(int nvars)
Abstract base for the engine's polynomial-ring hierarchy.
ReducedGB_Field(GBRing *R0, const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0)
virtual ~ReducedGB_Field()
virtual void remainder(POLY &f, bool use_denom, ring_elem &denom)
virtual void minimalize(const VECTOR(POLY) &polys0, bool auto_reduced)
const MonomialIdeal * Rideal
virtual void set_gb(VECTOR(POLY) &polys0)
const PolynomialRing * originalR
ReducedGB(GBRing *R0, const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0)
void gb(IntermediateBasis &F, int n)
MonomialIdeal — exponent-vector-only representation of an ideal generated by monomials.
#define ALLOCATE_EXPONENTS(byte_len)
ReducedGB_Field_sorter(GBRing *R0, const FreeModule *F0, const VECTOR(POLY) &gb0)
bool operator()(int xx, int yy)
Index comparator used to permute ReducedGB_Field's gb array into canonical reduced-GB order over a fi...