Macaulay2 Engine
Loading...
Searching...
No Matches
NCGroebner.hpp File Reference

NCGroebner — Buchberger-style two-sided Gröbner basis driver over a FreeAlgebra. More...

#include "NCAlgebras/NCReduction.hpp"
#include "NCAlgebras/OverlapTable.hpp"
#include "NCAlgebras/WordTable.hpp"
#include "NCAlgebras/SuffixTree.hpp"
#include "Polynomial.hpp"
#include "newdelete.hpp"
#include <iostream>
#include <memory>
#include <vector>

Go to the source code of this file.

Classes

class  NCGroebner
 One-overlap-at-a-time Groebner basis driver for the free associative algebra (the "Naive" companion to the F4-style NCF4). More...

Functions

void tryOutMathicCode ()

Detailed Description

NCGroebner — Buchberger-style two-sided Gröbner basis driver over a FreeAlgebra.

Note
AI-generated documentation. Verify against the source before relying on it.

Declares the non-commutative analogue of gbA: given a list of input polynomials in a FreeAlgebra, the class drives a Buchberger-style loop where the role of S-pairs is taken by "overlaps" — pairs of basis words whose suffix and prefix match. An OverlapTable schedules the queue, a WordTable (with an experimental SuffixTree alternative) indexes leading words for divisor lookup, and the reduction step uses NCReduction's PolynomialHeap (a min-heap that fuses many tail-polynomial subtractions, analogous to the commutative engine's gbvectorHeap). computeHomogeneous and computeInhomogeneous carry the sugar-degree variants the compute(softDegreeLimit) entry dispatches between.

Non-commutative two-sided GBs need not terminate, so construction takes a hardDegreeLimit and the algorithm stops respecting it; the resulting (partial) basis is still usable for normal-form work up to that degree. The tryOutMathicCode free function is a benchmark hook for an experimental mathic integration and is not part of the production API.

See also
FreeAlgebra.hpp
WordTable.hpp
SuffixTree.hpp
OverlapTable.hpp
NCReduction.hpp
NCF4.hpp

Definition in file NCGroebner.hpp.