Macaulay2 Engine
Loading...
Searching...
No Matches
FreeMonoid Class Reference

The free non-commutative monoid on a set of named variables, with monomial ordering and degree / weight machinery. More...

#include <FreeMonoid.hpp>

Inheritance diagram for FreeMonoid:
our_new_delete

Public Types

using MonomialInserter = gc_vector<int>

Public Member Functions

 FreeMonoid (const std::vector< std::string > &variableNames, const PolynomialRing *degreeRing, const std::vector< int > &degrees, const std::vector< int > &wtvecs, const std::vector< int > &heftVector)
const std::vector< std::string > & variableNames () const
const std::vector< int > & flattenedDegrees () const
unsigned int numVars () const
unsigned int numWeights () const
const PolynomialRingdegreeRing () const
const MonoiddegreeMonoid () const
void one (MonomialInserter &m) const
bool is_one (const Monom &m) const
void copy (const Monom &m, MonomialInserter &result) const
void mult (const Monom &m1, const Monom &m2, MonomialInserter &result) const
void mult3 (const Monom &m1, const Monom &m2, const Monom &m3, MonomialInserter &result) const
int compare (const Monom &m1, const Monom &m2) const
int compare (const Word &w1, const Word &m2) const
bool isEqual (const Monom &m1, const Monom &m2) const
int index_of_variable (const Monom &m) const
void var (int v, MonomialInserter &result) const
void multi_degree (const Monom &m, monomial already_allocated_degree_vector) const
void elem_text_out (buffer &o, const Monom &m1) const
void getMonomial (Monom monom, std::vector< int > &result) const
void getMonomialReversed (Monom monom, std::vector< int > &result) const
void fromMonomial (const_monomial monom, MonomialInserter &result) const
void wordFromMonom (Word &result, const Monom &m) const
void wordPrefixFromMonom (Word &result, const Monom &m, int endIndex) const
void wordSuffixFromMonom (Word &result, const Monom &m, int beginIndex) const
void monomInsertFromWord (MonomialInserter &result, const Word &w) const
Monom wordProductAsMonom (const Word &left, const Word &right, MemoryBlock &memBlock) const
Monom wordProductAsMonom (const Word &left, const Word &mid, const Word &right, MemoryBlock &memBlock) const
Monom wordProductAsMonom (const Word &left, const Monom &mid, const Word &right, MemoryBlock &memBlock) const
Word wordProductAsWord (const Word &left, const Word &right, MemoryBlock &memBlock) const
Word wordProductAsWord (const Word &left, const Word &mid, const Word &right, MemoryBlock &memBlock) const
int wordHeft (Word &word) const
int wordHeft (Word &word, int start_index) const
void support (const Monom &m, std::vector< int > &result) const

Private Member Functions

int wordLength (const Monom &m) const
void setWeights (Monom &m) const
int weightOfVar (int v, int wt) const
int heftOfVar (int v) const
int wordWeight (Word &word, const std::vector< int > &weight, int start_index) const

Private Attributes

const std::vector< std::string > mVariableNames
const PolynomialRingmDegreeRing
const std::vector< intmDegrees
const std::vector< intmWeightVectors
const std::vector< intmHeftVector
std::vector< intmHeftDegrees
const int mNumWeights
gc_vector< const int * > mDegreeOfVar

Additional Inherited Members

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)

Detailed Description

The free non-commutative monoid on a set of named variables, with monomial ordering and degree / weight machinery.

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

Owns the variable names, the multi-degree of each variable, a stack of mNumWeights weight vectors, and a heft vector. A Monom is laid out as [length, deg, w_0 ... w_{r-1}, v_0 ... v_s] — length, total degree, weight values, then the word itself. The class exposes the primitives the non-commutative arithmetic engines need: mult / mult3, compare / isEqual, conversion between Monoms, Words and the engine's Monomial varpower form, and helpers that allocate left-mid-right products into a MemoryBlock (the hot path for NCF4 row construction).

Definition at line 103 of file FreeMonoid.hpp.


The documentation for this class was generated from the following files: