OPENF4
Library for Gröebner basis computations over finite fields.
|
Represent an ideal. More...
#include <ideal.h>
Public Member Functions | |
Ideal (std::vector< Polynomial< Element >> &polynomialArray, int nbVariable, int capacity=100000, int degree=0) | |
Constructor. More... | |
~Ideal () | |
Destructor. | |
void | printInfo () const |
Print _taggedPolynomialArray. | |
void | printReducedGroebnerBasis (bool printBasis=false) const |
Print the reduced Groebner basis. | |
std::vector< std::string > | getReducedGroebnerBasis () const |
Get the reduced Groebner basis as a vector of string. | |
void | printReducedGroebnerBasis (string const filename, int64_t modulo) const |
Print the reduced Groebner basis in a file. | |
void | printMonomialAvl () |
Print _matMons. | |
void | printTaggedPolynomialAvl () const |
Print _matPols. | |
void | printMatrix (Matrix< Element > &mat, int *tabMon, int *sigma, string const &filename) |
Print mat. | |
int | simplify (Monomial const &u, int numList) |
Simplify the product u*(_taggedPolynomialArray[numList].poly) by another polynomial with the same leading term but with less terms in its tail. More... | |
void | update (int index, bool purge, Stat &stat) |
Update the set of critical pair and the current basis. More... | |
void | appendMatrixF4 (CriticalPair< Element > &p, int &h, int &nbPiv) |
Update _matPols and _matMons with the critical pair p. More... | |
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. More... | |
Polynomial< Element > | buildPolynomial (Element *row, int *tabMon, int width, int start, int *tau) |
Build a polynomial from a row of the F4 matrix. More... | |
void | buildPolynomial (Polynomial< Element > &res, Element *row, int *tabMon, int width, int start, int *tau) |
Build a polynomial from a row of the F4 matrix. More... | |
void | preprocessing (int &width, int &height, int &nbPiv) |
Add polynomials to _matPols in order to reduced queue of current polynomials. More... | |
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. More... | |
int | f4 () |
Compute a groebner basis of this using the F4 algorithm. More... | |
Private Attributes | |
std::vector< Polynomial < Element > > | _polynomialArray |
int | _nbVariable |
int | _numPol |
int | _numTot |
int | _numGen |
std::vector< int > | _total |
std::vector< int > | _basis |
std::vector< TaggedPolynomial < Element > > | _taggedPolynomialArray |
MonomialArray | _monomialArray |
AvlCriticalPair< Element > | _criticalPairSet |
vector< CriticalPair< Element > * > | _cpSet0 |
vector< CriticalPair< Element > * > | _cpSet1 |
vector< CriticalPair< Element > * > | _cpSet2 |
vector< CriticalPair< Element > > | _cpArray |
AvlMonomial | _matMons |
AvlPolynomial | _matPols |
Represent an ideal.
F4::Ideal< Element >::Ideal | ( | std::vector< Polynomial< Element >> & | polynomialArray, |
int | nbVariable, | ||
int | capacity = 100000 , |
||
int | degree = 0 |
||
) |
Constructor.
polynomialArray | Array of polynomials. |
nbVariable | Number of variable of the polynomial ring. |
capacity | Initial size of _monomialArray. |
degree | Initialise the monomial array up to monomial of degree "degree". |
void F4::Ideal< Element >::appendMatrixF4 | ( | CriticalPair< Element > & | p, |
int & | h, | ||
int & | nbPiv | ||
) |
Polynomial<Element> F4::Ideal< Element >::buildPolynomial | ( | Element * | row, |
int * | tabMon, | ||
int | width, | ||
int | start, | ||
int * | tau | ||
) |
Build a polynomial from a row of the F4 matrix.
tabMon | Array of monomials involved in _matPols. |
width | End of the row. |
start | Beginning of the row. |
tau | tau[i]=column of the monomial tabMon[i]. |
void F4::Ideal< Element >::buildPolynomial | ( | Polynomial< Element > & | res, |
Element * | row, | ||
int * | tabMon, | ||
int | width, | ||
int | start, | ||
int * | tau | ||
) |
Build a polynomial from a row of the F4 matrix.
res | Resulting polynomial. |
tabMon | Array of monomials involved in _matPols. |
width | End of the row. |
start | Beginning of the row. |
tau | tau[i]=column of the monomial tabMon[i]. |
int F4::Ideal< Element >::f4 | ( | ) |
Compute a groebner basis of this using the F4 algorithm.
bool F4::Ideal< Element >::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.
matrix | Matrix. |
tabMon | Array of monomials involved in _matPols. |
sigma | sigma[i]=index in tabMon of the column i monomial. |
tau | tau[i]=column of the monomial tabMon[i]. |
height | Height of the matrix before echelonize. |
width | Width of the matrix before echelonize. |
heightReal | Height of the matrix after echelonize. |
nbPiv | Number of pivots in the the F4 matrix. |
void F4::Ideal< Element >::preprocessing | ( | int & | width, |
int & | height, | ||
int & | nbPiv | ||
) |
Simplify the product u*(_taggedPolynomialArray[numList].poly) by another polynomial with the same leading term but with less terms in its tail.
u | Monomial. |
numList | Index of a tagged polynomial in _taggedPolynomialArray. |
double F4::Ideal< Element >::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.
mat | Matrix to fill. |
tabMon | Array of monomials involved in _matPols. |
nbPiv | Number of pivots in the the F4 matrix. |
tau | tau[i]=column of the monomial tabMon[i]. |
sigma | sigma[i]=index in tabMon of the column i monomial. |
startTail | startTail[i]=column of the first possibly non zero coefficient (in line i) after nbPiv if i < nbPiv. Otherwise startTail[i]=0. |
endCol | endCol[i] = end of column i if i < nbPiv. Otherwise endCol[i]=end of column i without taking into account the lines under nbPiv. |
Update the set of critical pair and the current basis.
index | Index of a tagged polynomial in _taggedPolynomialArray. |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |