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

BIBasis::Monom — abstract squarefree-monomial base for the three Janet orderings. More...

#include <set>
#include <iostream>
#include "allocator.hpp"

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

Detailed Description

BIBasis::Monom — abstract squarefree-monomial base for the three Janet orderings.

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

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.

See also
allocator.hpp
monomLex.hpp
monomDL.hpp
monomDRL.hpp
polynom.hpp

Definition in file monom.hpp.