Definition at line 388 of file ring.cpp.
389{
390 try
391 {
393 {
394 ERROR(
"expected matrix to be over the same ring");
395 }
397 {
398 ERROR(
"expected a one row matrix of quotient elements");
399 return nullptr;
400 }
402 if (P != nullptr)
403 {
407 }
409 if (A != nullptr)
410 {
413 }
414 ERROR(
"expected a polynomial ring or free algebra");
415 return nullptr;
417 {
419 return nullptr;
420 }
421}
Concrete Ring wrapper around an owned FreeAlgebra (no quotient).
static M2FreeAlgebraQuotient * create(const M2FreeAlgebra &F, const Matrix *GB, int maxdeg)
const Ring * get_ring() const
static PolynomialRing * create_quotient(const PolynomialRing *R, VECTOR(Nterm *) &elems)
Abstract base for the engine's polynomial-ring hierarchy.
virtual const PolynomialRing * cast_to_PolynomialRing() const
virtual const M2FreeAlgebra * cast_to_M2FreeAlgebra() const
void intern_polyring(const PolynomialRing *G)
VALGRIND_MAKE_MEM_DEFINED & result(result)
References Ring::cast_to_M2FreeAlgebra(), Ring::cast_to_PolynomialRing(), M2FreeAlgebraQuotient::create(), PolynomialRing::create_quotient(), ERROR, Matrix::get_ring(), intern_polyring(), Matrix, Matrix::n_rows(), and result().