![]() |
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 |
1.8.6