1#ifndef _free_algebra_quotient_hpp_
2#define _free_algebra_quotient_hpp_
133 bool p_parens)
const;
185 return this->
mRing->is_equal(**
this,*g);
Free associative algebra k<x_1,...,x_n> over an arbitrary coefficient ring.
FreeMonoid — monoid of length-prefixed non-commutative words with weight-vector prefix.
NCGroebner — Buchberger-style two-sided Gröbner basis driver over a FreeAlgebra.
gc_vector< const Poly * > ConstPolyList
Polynomial< CoefficientRingType > Poly
Modern Monom / Polynomial value types shared by NC algebras and the refactored F4.
Free associative algebra over a coefficient ring: the non-commutative analogue of PolynomialRing.
void from_coefficient(Poly &result, const ring_elem a) const
SumCollector * make_SumCollector() const
const Monoid & degreeMonoid() const
void mult(Poly &result, const Poly &f, const Poly &g) const
void setZero(Poly &f) const
bool from_rational(Poly &result, const mpq_srcptr q) const
FreeAlgebraQuotient(const FreeAlgebra &A, const ConstPolyList &GB, int maxdeg)
void elem_text_out(buffer &o, const Poly &f, bool p_one, bool p_plus, bool p_parens) const
void from_long(Poly &result, long n) const
ring_elem eval(const RingMap *map, const Poly &f, int first_var) const
const FreeMonoid & monoid() const
int compare_elems(const Poly &f, const Poly &g) const
bool is_unit(const Poly &f) const
unsigned int computeHashValue(const Poly &a) const
void power(Poly &result, const Poly &f, int n) const
void from_word(Poly &result, const std::vector< int > &word) const
const FreeAlgebra & mFreeAlgebra
bool is_homogeneous(const Poly &f) const
long n_terms(const Poly &f) const
void from_int(Poly &result, mpz_srcptr n) const
void add(Poly &result, const Poly &f, const Poly &g) const
void var(Poly &result, int v) const
const Ring * coefficientRing() const
const_monomial degree(const Poly &f) const
const FreeAlgebra & freeAlgebra() const
void subtract(Poly &result, const Poly &f, const Poly &g) const
bool is_zero(const Poly &f) const
bool multi_degree(const Poly &f, monomial already_allocated_degree_vector) const
void clear(Poly &f) const
bool is_equal(const Poly &f, const Poly &g) const
void copy(Poly &result, const Poly &f) const
void normalizeInPlace(Poly &f) const
void negate(Poly &result, const Poly &f) const
const Poly & operator*() const
const FreeAlgebraQuotient * mRing
FreeAlgebraQuotientElement(const FreeAlgebraQuotient *F)
FreeAlgebraQuotientElement operator^(int n)
FreeAlgebraQuotientElement operator-(const FreeAlgebraQuotientElement &g)
FreeAlgebraQuotientElement operator*(const FreeAlgebraQuotientElement &g)
FreeAlgebraQuotientElement operator+(const FreeAlgebraQuotientElement &g)
bool operator==(const FreeAlgebraQuotientElement &g) const
~FreeAlgebraQuotientElement()
Quotient of a FreeAlgebra by a Groebner basis up to a fixed degree bound.
const Monoid & degreeMonoid() const
unsigned int numVars() const
The free non-commutative monoid on a set of named variables, with monomial ordering and degree / weig...
monomial make_one() const
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
One-overlap-at-a-time Groebner basis driver for the free associative algebra (the "Naive" companion t...
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
Abstract incremental accumulator that builds a ring_elem from many add(f) calls.
const int * const_monomial
VALGRIND_MAKE_MEM_DEFINED & result(result)
our_new_delete — per-class opt-in routing of new / delete through bdwgc.
ring_elem — the universal value type carried by every Ring* in the engine.