|
Macaulay2 Engine
|
BIBasis::Monom — abstract squarefree-monomial base for the three Janet orderings. More...
Go to the source code of this file.
Classes | |
| class | BIBasis::Monom |
| Abstract base for the BIBasis boolean-coefficient monomial types — a sorted, singly linked list of variable indices. More... | |
| struct | BIBasis::Monom::VarsListNode |
| Singly linked-list node of a Monom's variable list, with a per-class slab allocator. More... | |
Namespaces | |
| namespace | BIBasis |
BIBasis::Monom — abstract squarefree-monomial base for the three Janet orderings.
Declares the polymorphic root of the BIBasis monomial hierarchy: a singly-linked list of VarsListNode records (each carrying a short int Integer variable index plus Next) with a cached TotalDegree, and the static DimIndepend that fixes the variable count for the whole subsystem. Each VarsListNode allocates from a static FastAllocator slab so the millions of nodes the prolongation loop creates stay cache-resident. Because the ground field is F_2[x]/(x_i^2 - x_i) every exponent is 0 or 1, so the list records exactly the set of variables that appear; no exponent slots are needed.
The pure virtuals MultiplyBy, SetOne, operator[], FirstMultiVar, and GetVariablesSet are filled in by the three concrete subclasses — MonomLex, MonomDL, MonomDRL — each implementing one monomial ordering. The bibasis algorithm templates on the concrete type rather than dispatching through Monom*, so the abstract surface here is mostly a shared layout and a documentation anchor for the ordering variants.
Definition in file monom.hpp.