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

◆ NCGroebner()

NCGroebner::NCGroebner ( const FreeAlgebra & A,
const ConstPolyList & input,
int hardDegreeLimit,
int strategy )

Definition at line 20 of file NCGroebner.cpp.

25 : mFreeAlgebra(A),
26 mInput(input),
29 mHardDegreeLimit(hardDegreeLimit)
30{
31 if (M2_gbTrace >= 1)
32 {
33 buffer o;
34 o << "[NCGB] reduction heap: "
35 << getHeapName(getHeapType(strategy))
36 << newline;
37 emit_line(o.str());
38 }
39 Word tmpWord;
40 // process input polynomials
41 mIsGraded = true;
42 for (auto i = 0; i < mInput.size(); ++i)
43 {
44 auto d = freeAlgebra().heft_degree(*mInput[i]);
45 mGeneratorDegrees.push_back(d.first);
46 if (not d.second)
47 mIsGraded = false;
48 tmpWord = freeAlgebra().lead_word(*mInput[i]);
49 mOverlapTable.insert(d.first, // previously: freeAlgebra().monoid().wordHeft(tmpWord),
50 true,
51 std::make_tuple(i,-1,-1,true));
52 }
53 if (M2_gbTrace >= 1)
54 {
55 buffer o;
56 o << "[NCGB] input is " << (mIsGraded ? "homogeneous" : "inhomogeneous") << newline;
57 emit_line(o.str());
58 }
59}
std::unique_ptr< PolynomialHeap > makePolynomialHeap(HeapType type, const FreeAlgebra &F)
std::string getHeapName(HeapType type)
HeapType getHeapType(int strategy)
std::pair< int, bool > heft_degree(const Poly &f) const
Word lead_word(const Poly &f) const
std::unique_ptr< PolynomialHeap > mHeap
std::vector< int > mGeneratorDegrees
const FreeAlgebra & mFreeAlgebra
int mHardDegreeLimit
int mTopComputedDegree
OverlapTable mOverlapTable
const FreeAlgebra & freeAlgebra() const
const ConstPolyList mInput
char * str()
Definition buffer.hpp:72
char newline[]
Definition m2-types.cpp:49
int M2_gbTrace
Definition m2-types.cpp:52
void emit_line(const char *s)
Definition text-io.cpp:47

References emit_line(), freeAlgebra(), getHeapName(), getHeapType(), FreeAlgebra::heft_degree(), FreeAlgebra::lead_word(), M2_gbTrace, makePolynomialHeap(), mFreeAlgebra, mGeneratorDegrees, mHardDegreeLimit, mHeap, mInput, mIsGraded, mOverlapTable, mTopComputedDegree, newline, and buffer::str().