978{
980 if (R != reducerMatrix->get_ring())
981 {
982 ERROR(
"expected matrices to be over the same ring");
983 return nullptr;
984 }
986 if (A != nullptr and reducerMatrix->n_rows() == 1)
987 {
988 auto outRows = toBeReduced->
n_rows();
989 auto outCols = toBeReduced->
n_cols();
993 G.initReductionOnly();
994 auto result =
G.twoSidedReduction(reducees);
996 }
997 ERROR(
"expected a matrix over a noncommutative algebra");
998 return nullptr;
999}
const FreeAlgebra & freeAlgebra() const
Concrete Ring wrapper around an owned FreeAlgebra (no quotient).
const Ring * get_ring() const
One-overlap-at-a-time Groebner basis driver for the free associative algebra (the "Naive" companion t...
virtual const M2FreeAlgebra * cast_to_M2FreeAlgebra() const
ConstPolyList matrixToPolyList(const M2FreeAlgebraOrQuotient *A, const Matrix *input)
const Matrix * polyListToMatrix(const M2FreeAlgebraOrQuotient *A, const PolyL &elems, int numrows, int numcols)
VALGRIND_MAKE_MEM_DEFINED & result(result)