Definition at line 296 of file freemod.cpp.
298{
300 if (pp == 0)
301 return R->make_FreeModule(1);
302 else
304
306 if (pp > rk || pp < 0)
return result;
307
308 size_t p =
static_cast<size_t>(pp);
309
311 for (
size_t i = 0; i <
p; i++) a[i] = i;
312
313 auto D =
R->degree_monoid();
315 do
316 {
317 D->one(deg);
318
319 for (
size_t r = 0; r <
p; r++)
320 D->mult(deg,
degree(
static_cast<int>(a[r])), deg);
321
323 }
325
326 D->remove(deg);
327
330}
virtual FreeModule * new_free() const
const_monomial degree(int i) const
FreeModule(const Ring *R, int n, bool has_schreyer_order)
static bool increment(size_t n, Subset &s)
std::vector< size_t > Subset
VALGRIND_MAKE_MEM_DEFINED & result(result)
References degree(), FreeModule(), Subsets::increment(), monomial, new_free(), p, R, rank(), result(), and schreyer.
Referenced by IM2_FreeModule_exterior(), and Matrix::wedge_product().