|
Macaulay2 Engine
|
One-overlap-at-a-time Groebner basis driver for the free associative algebra (the "Naive" companion to the F4-style NCF4). More...
#include <NCGroebner.hpp>
Public Member Functions | |
| NCGroebner (const FreeAlgebra &A, const ConstPolyList &input, int hardDegreeLimit, int strategy) | |
| const FreeAlgebra & | freeAlgebra () const |
| void | compute (int softDegreeLimit) |
| void | computeInhomogeneous (int softDegreeLimit) |
| void | computeHomogeneous (int softDegreeLimit) |
| const PolyList & | currentValue () const |
| auto | twoSidedReductionOld (const FreeAlgebra &A, const Poly *reducee, const ConstPolyList &reducers, const WordTable &W) -> Poly * |
| auto | twoSidedReduction (const ConstPolyList &reducees) const -> ConstPolyList |
| auto | twoSidedReduction (const Poly *reducee) const -> Poly * |
| void | addToGroebnerBasis (Poly *toAdd) |
| void | autoreduceByLastElement () |
| void | updateOverlaps (const Poly *toAdd) |
| auto | initReductionOnly () -> void |
| auto | createOverlapPoly (Overlap o) const -> Poly * |
| auto | createOverlapLeadWord (Poly &wordAsPoly, Overlap o) const -> void |
| auto | overlapWordLength (Overlap o) const -> int |
| auto | overlapHeft (Overlap o) const -> int |
| auto | printOverlapData (std::ostream &o, Overlap overlap) const -> void |
| auto | insertNewOverlaps (std::vector< Overlap > &newOverlaps) -> void |
| auto | isOverlapNecessary (Overlap o) const -> bool |
| auto | displayGroebnerBasis (std::ostream &o) const -> void |
Static Public Member Functions | |
| static auto | createOverlapPoly (const FreeAlgebra &A, const PolyList &polyList, int polyIndex1, int polyIndex2, int overlapIndex) -> Poly * |
| Static Public Member Functions inherited from our_new_delete | |
| static void * | operator new (size_t size) |
| static void * | operator new[] (size_t size) |
| static void | operator delete (void *obj) |
| static void | operator delete[] (void *obj) |
| static void * | operator new (size_t size, void *existing_memory) |
| static void * | operator new[] (size_t size, void *existing_memory) |
| static void | operator delete (void *obj, void *existing_memory) |
| static void | operator delete[] (void *obj, void *existing_memory) |
Private Member Functions | |
| ring_elem | getCoeffOfMonom (const Poly &f, const Monom &m) |
Private Attributes | |
| const FreeAlgebra & | mFreeAlgebra |
| WordTable | mWordTable |
| OverlapTable | mOverlapTable |
| const ConstPolyList | mInput |
| std::vector< int > | mGeneratorDegrees |
| PolyList | mGroebner |
| std::vector< int > | mGroebnerDegrees |
| std::unique_ptr< PolynomialHeap > | mHeap |
| bool | mIsGraded |
| int | mTopComputedDegree |
| int | mHardDegreeLimit |
One-overlap-at-a-time Groebner basis driver for the free associative algebra (the "Naive" companion to the F4-style NCF4).
Keeps the running GB in mGroebner (a PolyList) with per-element sugar degrees in mGroebnerDegrees (-1 marks a retired entry). Overlap pairs are tracked in mOverlapTable; divisibility queries use mWordTable (with a commented-out SuffixTree alternative available as a swap-in). Reduction goes through the lazily owned mHeap (a PolynomialHeap, see NCReduction.hpp), letting the driver pick among the heap backends.
Definition at line 68 of file NCGroebner.hpp.