Definition at line 271 of file freemod.cpp.
273{
274 if (
R !=
G->get_ring())
275 {
276 ERROR(
"expected free modules over the same ring");
277 return nullptr;
278 }
279 auto D =
R->degree_monoid();
282
283 for (
int i = 0; i <
rank(); i++)
284 for (
int j = 0; j <
G->rank(); j++)
285 {
286 D->mult(
degree(i),
G->degree(j), deg);
288 }
289
290 D->remove(deg);
291 if (
schreyer !=
nullptr &&
G->schreyer !=
nullptr)
294}
virtual FreeModule * new_free() const
const_monomial degree(int i) const
FreeModule(const Ring *R, int n, bool has_schreyer_order)
VALGRIND_MAKE_MEM_DEFINED & result(result)
References degree(), ERROR, FreeModule(), G, monomial, new_free(), R, rank(), result(), and schreyer.
Referenced by Matrix::diff(), Matrix::flip(), IM2_FreeModule_tensor(), Matrix::module_tensor(), and Matrix::wedge_product().