14 const Ring *R =
gb->get_ring();
26 for (
int i = 0; i <
gb->n_cols(); i++)
31 if (
gb->elem(i) ==
nullptr)
36 K->
syzygy(denom1, denom2, u, v);
54 const Ring *R =
gb->get_ring();
68 for (
int i = 0; i <
gb->n_cols(); i++)
74 if (
gb->elem(i) ==
nullptr)
79 K->
syzygy(denom1, denom2, u, v);
85 leads.push_back(lead);
99 assert(m != 0 &&
gb != 0 && change != 0 &&
syz != 0);
100 const Ring *R =
gb->get_ring();
103 ERROR(
"expected the same ring");
110 ERROR(
"declaring a GB requires a polynomial ring");
127 assert(leadterms != 0 && m != 0 &&
gb != 0 && change != 0 &&
syz != 0);
128 const Ring *R =
gb->get_ring();
132 ERROR(
"expected the same ring");
139 ERROR(
"declaring a GB requires a polynomial ring");
142 if (leadterms->
n_rows() !=
gb->n_rows() ||
143 leadterms->
n_cols() !=
gb->n_cols())
146 "expected same number of lead terms as marked Groebner basis "
enum ComputationStatusCode set_status(enum ComputationStatusCode)
Engine-side free module R^n over a Ring.
const Matrix * trimmed_gens
static GBComputation * create(const Matrix *m, const Matrix *gb, const Matrix *change, const Matrix *syz)
GBDeclared(const Matrix *m0, const Matrix *gb, const Matrix *change, const Matrix *syz0)
void gbvector_mult_by_coeff_to(gbvector *f, ring_elem u)
const Ring * get_flattened_coefficients() const
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
virtual void add_marked_elems(const VECTOR(gbvector *) &leadterms, const VECTOR(POLY) &polys0, bool auto_reduced)
friend ReducedGB * ReducedGB::create(const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0, const GBWeight *wt0)
Computation of a reduced GB w.r.t. a marked ordering.
const Ring * get_ring() const
ring_elem elem(int i, int j) const
const FreeModule * rows() const
virtual GBRing * get_gb_ring() const
virtual gbvector * translate_gbvector_from_vec(const FreeModule *F, const vec v, ring_elem &result_denominator) const =0
Abstract base for the engine's polynomial-ring hierarchy.
static ReducedGB * create(const PolynomialRing *originalR0, const FreeModule *F0, const FreeModule *Fsyz0, const GBWeight *wt0=nullptr)
void negate_to(ring_elem &f) const
virtual const PolynomialRing * cast_to_PolynomialRing() const
virtual void syzygy(const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const =0
GBDeclared — a user-asserted Groebner basis the engine accepts without computing.
void gb(IntermediateBasis &F, int n)
Matrix — the engine's immutable homomorphism F -> G between free modules.
PolynomialRing — abstract polynomial-ring base, the engine's most-reused class.
ReducedGB — abstract base for the canonicalising reduction pass that follows GB computation.