|
Macaulay2 Engine
|
Free associative algebra k<x_1,...,x_n> over an arbitrary coefficient ring. More...
#include "Polynomial.hpp"#include "NCAlgebras/FreeMonoid.hpp"#include "NCAlgebras/Word.hpp"#include "newdelete.hpp"#include "ring.hpp"#include "ringelem.hpp"#include "style.hpp"#include <iosfwd>#include <utility>#include <vector>Go to the source code of this file.
Classes | |
| class | FreeAlgebra |
| Free associative algebra over a coefficient ring: the non-commutative analogue of PolynomialRing. More... | |
| class | FreeAlgebraElement |
| Owned Poly value paired with its FreeAlgebra*, providing natural operator-overloaded arithmetic. More... | |
| class | FreeAlgebraHeap |
| Geobucket-style accumulator for many Poly summands in the free associative algebra. More... | |
| class | SumCollectorFreeAlgebraHeap |
| SumCollector adapter that funnels engine-side ring_elem adds into a FreeAlgebraHeap. More... | |
Functions | |
| std::ostream & | operator<< (std::ostream &o, const FreeAlgebraElement &f) |
Free associative algebra k<x_1,...,x_n> over an arbitrary coefficient ring.
Declares the non-commutative analogue of PolyRing: a FreeAlgebra pairs a coefficient Ring reference with a shared_ptr<FreeMonoid> carrying the word side (names, degrees, weight and heft vectors, monoid order). Polynomial values are the shared Poly type from Polynomial.hpp, stored as a vector of (coefficient, word) pairs sorted by the monoid order; multiplication is Sum_{i,j} (c_i*d_j) * (m_i ~ n_j) where ~ is concatenation. A SumCollector from ring.hpp combines like terms during accumulation.
FreeAlgebra does not inherit from Ring; the Ring-shaped facade lives in M2FreeAlgebra and M2FreeAlgebraQuotient. The static create(...) factory takes the coefficient ring, variable names, degree ring, and per-variable degree / weight / heft vectors, builds the matching FreeMonoid, and returns the object the NCGroebner / NCF4 engines consume.
Definition in file FreeAlgebra.hpp.