Macaulay2 Engine
Loading...
Searching...
No Matches
GBF4Computation.hpp
Go to the documentation of this file.
1#pragma once
2
49
50#include "Basis.hpp"
51#include "MacaulayMatrix.hpp"
52#include "MonomialHashTable.hpp"
54#include "PolynomialList.hpp"
55#include "SPairs.hpp"
57
58class FreeModule;
59
60namespace newf4 {
61
62enum class Strategy;
63
65{
66 private:
67 // Core Data:
68 MonomialHashTable mBasisMonomials; // table for monomials in the basis
69 PolynomialList mInput; // as a MonomialHashTable.
70 Basis mGBSoFar; // same hash table here.
71
72 const FreeModule* mFreeModule; // for debugging information *only*
73
74 MonomialLookupTable mMonomialLookup; // put this in Basis or not?
75 MonomialHashTable mSPairMonomials; // table for the LCMs of spairs
79
80 std::vector<int> mVariableWeights;
81
82 // Support Data:
83 // GB of base ring (for GBs over a quotient)
84 // Hilbert function hint information
85 // how to get spairs with exterior/skew variables
86public:
87 GBF4Computation(const VectorArithmetic& vectorArithmetic,
88 const FreeModule* freeModule,
89 const std::vector<int>& variableWeights,
90 Strategy strategy);
91
92 void initializeWithMatrix(const Matrix* M);
93 void initializeWithBasicPolyList(const BasicPolyList& basicPolyList);
94
95 void dumpBasisMonomials() const;
96
97 const PolynomialList& getInput() const { return mInput; }
98
99 // these are all for debugging only -- copies made, etc.
100 void showInput() const;
101 void showGBStatusArray() const;
102 void showMinimalBasis() const;
103 void showFullBasis() const;
104
105};
106
107 // Steps:
108 // 1. "Read in" the example (uses MatrixStream stuff)
109 // Set the ring information (variables names, #vars, charac, ??)
110 // Reads into a PolynomialList, which is in the Basis.
111 // 2.
112// a separate computation class will contain the necessary stuff for
113// computations over QQ, rational reconstruction, etc
114
115} // end newf4 namespace
116
117// Local Variables:
118// indent-tabs-mode: nil
119// End:
std::vector< BasicPoly > BasicPolyList
newf4::Basis — evolving Gröbner basis container with GBPolyStatus per element.
newf4::MacaulayMatrix — batched matrix of S-polynomials and tail-reducers (refactor stub).
newf4::MonomialHashFunction and the new-F4 monomial-to-index hash table.
newf4::MonomialLookupTable — divisibility-aware leading-term index for the new F4.
Hash-table-keyed polynomial storage for the new F4.
newf4::SPair / SPairSet — typed S-pair queue grouped by degree and S-pair flavour.
Coefficient-ring-erased arithmetic dispatcher used by F4, GB, and resolution code.
Engine-side free module R^n over a Ring.
Definition freemod.hpp:66
Runtime dispatcher that hides the concrete coefficient ring behind a std::variant of ConcreteVectorAr...
MonomialLookupTable mMonomialLookup
MonomialHashTable mBasisMonomials
void initializeWithMatrix(const Matrix *M)
const PolynomialList & getInput() const
void showMinimalBasis() const
void showFullBasis() const
std::vector< int > mVariableWeights
void initializeWithBasicPolyList(const BasicPolyList &basicPolyList)
GBF4Computation(const VectorArithmetic &vectorArithmetic, const FreeModule *freeModule, const std::vector< int > &variableWeights, Strategy strategy)
MacaulayMatrix mMacaulayMatrix
const FreeModule * mFreeModule
const VectorArithmetic & mVectorArithmetic
MonomialHashTable mSPairMonomials
#define Matrix
Definition factory.cpp:14