Macaulay2 Engine
Loading...
Searching...
No Matches

◆ get_induced_order()

Matrix * FreeModule::get_induced_order ( ) const

Definition at line 100 of file freemod.cpp.

101{
102 const PolynomialRing *P = R->cast_to_PolynomialRing();
103 if (!schreyer || P == nullptr) return Matrix::zero(R->make_FreeModule(0), this);
104 const SchreyerOrder *S = schreyer;
105 int i;
106 int maxtie = 0;
107 for (i = 0; i < rank(); i++)
108 if (S->compare_num(i) > maxtie) maxtie = S->compare_num(i);
109 const FreeModule *F = R->make_FreeModule(maxtie + 1);
110 MatrixConstructor mat(F, this, nullptr);
111 for (i = 0; i < rank(); i++)
112 {
113 ring_elem f = P->make_flat_term(P->getCoefficients()->from_long(1),
114 S->base_monom(i));
115 mat.set_entry(S->compare_num(i), i, f);
116 }
117 return mat.to_matrix();
118}
SchreyerOrder * schreyer
Definition freemod.hpp:73
FreeModule(const Ring *R, int n, bool has_schreyer_order)
Definition freemod.cpp:32
const Ring * R
Definition freemod.hpp:75
int rank() const
Definition freemod.hpp:105
static Matrix * zero(const FreeModule *F, const FreeModule *G)
Definition matrix.cpp:369
virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const =0
virtual const Ring * getCoefficients() const
Definition polyring.hpp:277
virtual ring_elem from_long(long n) const =0
int compare_num(int i) const
Definition schorder.hpp:90
const_monomial base_monom(int i) const
Definition schorder.hpp:91

References SchreyerOrder::base_monom(), SchreyerOrder::compare_num(), FreeModule(), Ring::from_long(), PolynomialRing::getCoefficients(), PolynomialRing::make_flat_term(), Matrix, R, rank(), schreyer, MatrixConstructor::set_entry(), and MatrixConstructor::to_matrix().

Referenced by IM2_FreeModule_get_schreyer().