26 #ifndef OPENF4_IDEAL_H
27 #define OPENF4_IDEAL_H
66 template <
typename Element>
143 void update(
int index,
bool purge,
Stat & stat);
241 #include "../src/ideal.inl"
244 #endif // OPENF4_IDEAL_H
Represent an avl of pair (number of a monomial, is leading monomial).
std::vector< int > _basis
Polynomial< Element > buildPolynomial(Element *row, int *tabMon, int width, int start, int *tau)
Build a polynomial from a row of the F4 matrix.
void update(int index, bool purge, Stat &stat)
Update the set of critical pair and the current basis.
MonomialArray _monomialArray
std::vector< TaggedPolynomial< Element > > _taggedPolynomialArray
void printMatrix(Matrix< Element > &mat, int *tabMon, int *sigma, string const &filename)
Print mat.
Represent an avl of critical pair.
int f4()
Compute a groebner basis of this using the F4 algorithm.
void printMonomialAvl()
Print _matMons.
Represent a critical pair.
Declaration of class AvlPolynomial.
Wrapper for config.h in order to avoid multiple definitions.
Declaration of class AvlMonomial.
Declaration of class AvlCriticalPair.
std::vector< Polynomial< Element > > _polynomialArray
void appendMatrixF4(CriticalPair< Element > &p, int &h, int &nbPiv)
Update _matPols and _matMons with the critical pair p.
Represent a array of monomials.
std::vector< std::string > getReducedGroebnerBasis() const
Get the reduced Groebner basis as a vector of string.
std::vector< int > _total
Structure used for statistics.
vector< CriticalPair< Element > * > _cpSet0
Represent an avl of triple (number of a polynomial, number of its leading monomial, number of terms).
Declaration of class Matrix.
bool postprocessing(Matrix< Element > &matrix, int *tabMon, int *sigma, int *tau, int height, int width, int heightReal, int nbPiv, Stat &stat)
Rebuild _matPols from mat, update the basis and the set of critical pairs.
vector< CriticalPair< Element > > _cpArray
int simplify(Monomial const &u, int numList)
Simplify the product u*(_taggedPolynomialArray[numList].poly) by another polynomial with the same lea...
double transform(Matrix< Element > &mat, int *tabMon, int nbPiv, int *tau, int *sigma, int *startTail, int *endCol)
Transform _matPols and _matMons into an almost tringular matrix.
void preprocessing(int &width, int &height, int &nbPiv)
Add polynomials to _matPols in order to reduced queue of current polynomials.
vector< CriticalPair< Element > * > _cpSet2
void printTaggedPolynomialAvl() const
Print _matPols.
void printInfo() const
Print _taggedPolynomialArray.
Ideal(std::vector< Polynomial< Element >> &polynomialArray, int nbVariable, int capacity=100000, int degree=0)
Constructor.
AvlCriticalPair< Element > _criticalPairSet
void printReducedGroebnerBasis(bool printBasis=false) const
Print the reduced Groebner basis.
vector< CriticalPair< Element > * > _cpSet1