Non-commutative F4 Groebner-basis driver: builds a per-degree Macaulay matrix from overlaps and reduces it in bulk.
More...
|
| void | process (const std::deque< Overlap > &overlapsToProcess) |
| void | buildF4Matrix (const std::deque< Overlap > &overlapsToProcess) |
| void | parallelBuildF4Matrix (const std::deque< Overlap > &overlapsToProcess) |
| void | labelAndSortF4Matrix () |
| void | reduceF4Matrix () |
| void | parallelReduceF4Matrix () |
| Word | createOverlapLeadWord (const Overlap &o) |
| auto | isOverlapNecessary (const Overlap &o) -> bool |
| auto | checkOldOverlaps (Word &newLeadWord) -> void |
| void | matrixReset () |
| void | addToGroebnerBasis (Poly *toAdd) |
| void | updateOverlaps (const Poly *toAdd) |
| auto | overlapHeft (Overlap o) const -> int |
| auto | insertNewOverlaps (std::vector< Overlap > &newOverlaps) -> void |
| void | reducedRowToPoly (Poly *result, const RowsVector &rows, const ColumnsVector &cols, int i) const |
| PolyList | newGBelements () const |
| void | processPreRow (PreRow r, RowsVector &rowsVector, MemoryBlock &memoryBlock, PreRowFeeder *feeder) |
| void | processPreRow (PreRow r, RowsVector &rowsVector) |
| void | processWordInPreRow (Word &w, PreRowFeeder *feeder) |
| void | preRowsFromOverlap (const Overlap &o) |
| std::pair< bool, PreRow > | findDivisor (Word w) |
| void | autoreduceByLastElement () |
| ring_elem | getCoeffOfMonom (const Poly &f, const Monom &m) const |
| template<typename LockType> |
| void | generalReduceF4Row (int index, int first, int firstcol, NCF4Stats &ncF4Stats, ElementArray &dense, bool updateColumnIndex, LockType &lock) |
| void | reduceF4Row (int index, int first, int firstcol, NCF4Stats &ncF4Stats, ElementArray &dense) |
| void | parallelReduceF4Row (int index, int first, int firstcol, NCF4Stats &ncF4Stats, ElementArray &dense, mtbb::queuing_mutex &lock) |
| std::pair< bool, int > | findPreviousReducerPrefix (const Word &w) |
| std::pair< bool, int > | findPreviousReducerSuffix (const Word &w) |
| void | clearRows (RowsVector &rowsVector) |
| void | processPreviousF4Matrix () |
Non-commutative F4 Groebner-basis driver: builds a per-degree Macaulay matrix from overlaps and reduces it in bulk.
- Note
- AI-generated documentation. Verify against the source before relying on it.
Replaces the one-overlap-at-a-time NCGroebner loop with the F4 pattern. Each degree, the driver pulls every overlap of that degree from mOverlapTable, builds rows from the overlaps plus their tail-reducers (drawn from mGroebner, the original mInput, or mRows — the three PreRowType flavours), labels the columns by the distinct monomials seen, sorts them under the non-commutative monomial order, then echelon-reduces via mVectorArithmetic. Echelon rows whose leading column is new become new GB elements and feed the next degree's overlaps.
Monomial / word storage is owned by an internal MemoryBlock pair (mMonomialSpace / mPreviousMonomialSpace); divisibility uses mWordTable. TBB scaffolding (PreRowFeeder, mScheduler) is wired up but the parallel build path is currently dormant.
Definition at line 103 of file NCF4.hpp.