OPENF4
Library for Gröebner basis computations over finite fields.
 All Classes Namespaces Files Functions Variables Friends Pages
Classes | Functions
F4 Namespace Reference

Classes

class  Term
 Represent a term. More...
 
class  TaggedPolynomial
 Represent a tagged polynomial. More...
 
struct  NodeList
 Represent a node of the single chained list. More...
 
class  SingleList
 Represent a single chained list. More...
 
class  Polynomial
 Represent a polynomial. More...
 
class  MonomialArray
 Represent a array of monomials. More...
 
class  Monomial
 Represent a monomial. More...
 
class  Matrix
 Represent a matrix. More...
 
struct  Stat
 Structure used for statistics. More...
 
class  Ideal
 Represent an ideal. More...
 
class  ElementPrime
 Represent an element of a prime field, this class is a POD (Plain Old Data) because of the alignement required in class Matrix. More...
 
class  ElementGF2Extension
 Represent an element of an extension of GF2, this class is a POD (Plain Old Data) because of the alignement required in class Matrix. More...
 
class  ElementGF2
 Represent an element of the field GF(2), this class is a POD (Plain Old Data) because of the alignement required in class Matrix. More...
 
class  DynamicArray
 Represent a dynamic array whose the width is fixed, the memory is allocated by blocs. More...
 
class  CriticalPair
 Represent a critical pair. More...
 
struct  NodeAvlPolynomial
 Represent a node of the AVL of polynomial. More...
 
class  AvlPolynomial
 Represent an avl of triple (number of a polynomial, number of its leading monomial, number of terms). More...
 
struct  NodeAvlMonomial
 Represent a node of the AVL of monomials. More...
 
class  AvlMonomial
 Represent an avl of pair (number of a monomial, is leading monomial). More...
 
struct  NodeAvlCriticalPair
 Represent a node of the AVL of critical pairs. More...
 
class  AvlCriticalPair
 Represent an avl of critical pair. More...
 

Functions

template<typename Element >
std::ostream & operator<< (std::ostream &stream, Term< Element > const &term)
 Overload the operator <<. More...
 
template<typename Element >
Term< Element > operator* (Monomial const &mon, Term< Element > const &term)
 Overload the operator *. More...
 
template<typename Element >
Term< Element > operator* (Term< Element > const &term, Monomial const &mon)
 Overload the operator *. More...
 
template<typename Element >
Term< Element > operator* (Term< Element > const &term1, Term< Element > const &term2)
 Overload the operator *. More...
 
template<typename Element >
bool operator> (Term< Element > const &term1, Term< Element > const &term2)
 Overload the operator >. More...
 
template<typename Element >
bool operator< (Term< Element > const &term1, Term< Element > const &term2)
 Overload the operator <. More...
 
template<typename Element >
std::ostream & operator<< (std::ostream &stream, TaggedPolynomial< Element > const &taggedPolynomial)
 Overload the operator <<. More...
 
template<typename Element >
bool operator== (TaggedPolynomial< Element > const &taggedPolynomial1, TaggedPolynomial< Element > const &taggedPolynomial2)
 Overload the operator ==. More...
 
template<typename Element >
bool operator> (TaggedPolynomial< Element > const &taggedPolynomial1, TaggedPolynomial< Element > const &taggedPolynomial2)
 Overload the operator >. More...
 
template<typename Element >
bool operator>= (TaggedPolynomial< Element > const &taggedPolynomial1, TaggedPolynomial< Element > const &taggedPolynomial2)
 Overload the operator >=. More...
 
template<typename Element >
bool operator< (TaggedPolynomial< Element > const &taggedPolynomial1, TaggedPolynomial< Element > const &taggedPolynomial2)
 Overload the operator <. More...
 
template<typename Element >
bool operator<= (TaggedPolynomial< Element > const &taggedPolynomial1, TaggedPolynomial< Element > const &taggedPolynomial2)
 Overload the operator <=. More...
 
template<typename Element >
TaggedPolynomial< Element > operator* (Monomial const &monomial, TaggedPolynomial< Element > const &taggedPolynomial)
 Overload the operator *= to multiply this with a monomial. More...
 
template<typename Element >
TaggedPolynomial< Element > operator* (TaggedPolynomial< Element > const &taggedPolynomial, Monomial const &monomial)
 Overload the operator *= to multiply this with a monomial. More...
 
template<typename Element >
TaggedPolynomial< Element > operator* (Element element, TaggedPolynomial< Element > const &taggedPolynomial)
 Overload the operator *= to multiply this with an Element. More...
 
template<typename Element >
TaggedPolynomial< Element > operator* (TaggedPolynomial< Element > const &taggedPolynomial, Element element)
 Overload the operator *= to multiply this with an Element. More...
 
template<typename Element >
TaggedPolynomial< Element > operator* (Term< Element > const &term, TaggedPolynomial< Element > const &taggedPolynomial)
 Overload the operator *= to multiply this with a term. More...
 
template<typename Element >
TaggedPolynomial< Element > operator* (TaggedPolynomial< Element > const &taggedPolynomial, Term< Element > const &term)
 Overload the operator *= to multiply this with a term. More...
 
template<typename Element >
std::ostream & operator<< (std::ostream &stream, SingleList< Element > const &list)
 Overload the operator <<. More...
 
template<typename Element >
std::ostream & operator<< (std::ostream &stream, Polynomial< Element > const &polynomial)
 Overload the operator <<. More...
 
template<typename Element >
Polynomial< Element > operator* (Monomial const &monomial, Polynomial< Element > const &polynomial)
 Overload the operator *= to multiply this with a monomial. More...
 
template<typename Element >
Polynomial< Element > operator* (Polynomial< Element > const &polynomial, Monomial const &monomial)
 Overload the operator *= to multiply this with a monomial. More...
 
template<typename Element >
Polynomial< Element > operator* (Element element, Polynomial< Element > const &polynomial)
 Overload the operator *= to multiply this with an Element. More...
 
template<typename Element >
Polynomial< Element > operator* (Polynomial< Element > const &polynomial, Element element)
 Overload the operator *= to multiply this with an Element. More...
 
template<typename Element >
Polynomial< Element > operator* (Term< Element > const &term, Polynomial< Element > const &polynomial)
 Overload the operator *= to multiply this with a term. More...
 
template<typename Element >
Polynomial< Element > operator* (Polynomial< Element > const &polynomial, Term< Element > const &term)
 Overload the operator *= to multiply this with a term. More...
 
std::ostream & operator<< (std::ostream &stream, Monomial const &mon)
 Overload the operator <<. More...
 
bool operator== (Monomial const &mon1, Monomial const &mon2)
 Overload the operator ==. More...
 
bool operator> (Monomial const &mon1, Monomial const &mon2)
 Overload the operator >. More...
 
bool operator>= (Monomial const &mon1, Monomial const &mon2)
 Overload the operator >=. More...
 
bool operator< (Monomial const &mon1, Monomial const &mon2)
 Overload the operator <. More...
 
bool operator<= (Monomial const &mon1, Monomial const &mon2)
 Overload the operator <=. More...
 
template<typename Element >
std::ostream & operator<< (std::ostream &stream, Matrix< Element > const &matrix)
 Overload the operator <<. More...
 
template<typename baseType >
std::ostream & operator<< (std::ostream &stream, ElementPrime< baseType > const &element)
 Overload the operator <<. More...
 
template<typename baseType >
ElementPrime< baseType > operator* (ElementPrime< baseType > const &element1, ElementPrime< baseType > const &element2)
 Overload the operator *. More...
 
template<typename baseType >
ElementPrime< baseType > operator- (ElementPrime< baseType > const &element)
 Overload the operator -. More...
 
template<typename baseType >
std::ostream & operator<< (std::ostream &stream, ElementGF2Extension< baseType > const &element)
 Overload the operator <<. More...
 
template<typename baseType >
ElementGF2Extension< baseType > operator* (ElementGF2Extension< baseType > const &element1, ElementGF2Extension< baseType > const &element2)
 Overload the operator *. More...
 
template<typename baseType >
ElementGF2Extension< baseType > operator- (ElementGF2Extension< baseType > const &element)
 Overload the operator -. More...
 
std::ostream & operator<< (std::ostream &stream, ElementGF2 const &element)
 Overload the operator <<. More...
 
ElementGF2 operator* (ElementGF2 const &element1, ElementGF2 const &element2)
 Overload the operator *. More...
 
ElementGF2 operator- (ElementGF2 const &element)
 Overload the operator -. More...
 
template<typename dataType >
std::ostream & operator<< (std::ostream &stream, DynamicArray< dataType > const &dynamicArray)
 Overload the operator <<. More...
 
template<typename Element >
std::ostream & operator<< (std::ostream &stream, CriticalPair< Element > const &criticalPair)
 Overload the operator <<. More...
 
template<typename Element >
bool operator== (CriticalPair< Element > const &criticalPair1, CriticalPair< Element > const &criticalPair2)
 Overload the operator ==. More...
 
template<typename Element >
bool operator> (CriticalPair< Element > const &criticalPair1, CriticalPair< Element > const &criticalPair2)
 Overload the operator >. More...
 
template<typename Element >
bool operator>= (CriticalPair< Element > const &criticalPair1, CriticalPair< Element > const &criticalPair2)
 Overload the operator >=. More...
 
template<typename Element >
bool operator< (CriticalPair< Element > const &criticalPair1, CriticalPair< Element > const &criticalPair2)
 Overload the operator <. More...
 
template<typename Element >
bool operator<= (CriticalPair< Element > const &criticalPair1, CriticalPair< Element > const &criticalPair2)
 Overload the operator <=. More...
 
void printNode (NodeAvlPolynomial *p, int indent=0)
 Print the AVL of root p. More...
 
template<typename dataType >
std::ostream & operator<< (std::ostream &stream, AvlPolynomial const &AvlPolynomial)
 Overload the operator <<. More...
 
void printNode (NodeAvlMonomial *p, int indent=0)
 Print the AVL of root p. More...
 
template<typename dataType >
std::ostream & operator<< (std::ostream &stream, AvlMonomial const &avlMonomial)
 Overload the operator <<. More...
 
template<typename Element >
void printNode (NodeAvlCriticalPair< Element > *p, int indent=0)
 Print the AVL of root p. More...
 
template<typename Element >
std::ostream & operator<< (std::ostream &stream, AvlCriticalPair< Element > const &avlCriticalPair)
 Overload the operator <<. More...
 

Detailed Description

Group all the required tools used by the F4 algorithm.

Function Documentation

ElementGF2 F4::operator* ( ElementGF2 const &  element1,
ElementGF2 const &  element2 
)

Overload the operator *.

Returns
element1 * element2.
template<typename baseType >
ElementPrime<baseType> F4::operator* ( ElementPrime< baseType > const &  element1,
ElementPrime< baseType > const &  element2 
)

Overload the operator *.

Returns
element1 * element2.
template<typename Element >
Term<Element> F4::operator* ( Monomial const &  mon,
Term< Element > const &  term 
)

Overload the operator *.

Returns
mon * term.
template<typename Element >
Term<Element> F4::operator* ( Term< Element > const &  term,
Monomial const &  mon 
)

Overload the operator *.

Returns
term * mon.
template<typename Element >
Term<Element> F4::operator* ( Term< Element > const &  term1,
Term< Element > const &  term2 
)

Overload the operator *.

Returns
term1 * term2.
template<typename Element >
Polynomial<Element> F4::operator* ( Monomial const &  monomial,
Polynomial< Element > const &  polynomial 
)

Overload the operator *= to multiply this with a monomial.

Parameters
monMonomial.
polynomialPolynomial.
Returns
Reference on this.
template<typename Element >
Polynomial<Element> F4::operator* ( Polynomial< Element > const &  polynomial,
Monomial const &  monomial 
)

Overload the operator *= to multiply this with a monomial.

Parameters
monMonomial.
polynomialPolynomial.
Returns
Reference on this.
template<typename Element >
Polynomial<Element> F4::operator* ( Element  element,
Polynomial< Element > const &  polynomial 
)

Overload the operator *= to multiply this with an Element.

Parameters
elementElement.
polynomialPolynomial.
Returns
Reference on this.
template<typename Element >
Polynomial<Element> F4::operator* ( Polynomial< Element > const &  polynomial,
Element  element 
)

Overload the operator *= to multiply this with an Element.

Parameters
elementElement.
polynomialPolynomial.
Returns
Reference on this.
template<typename Element >
Polynomial<Element> F4::operator* ( Term< Element > const &  term,
Polynomial< Element > const &  polynomial 
)

Overload the operator *= to multiply this with a term.

Parameters
termTerm.
polynomialPolynomial.
Returns
Reference on this.
template<typename Element >
Polynomial<Element> F4::operator* ( Polynomial< Element > const &  polynomial,
Term< Element > const &  term 
)

Overload the operator *= to multiply this with a term.

Parameters
termTerm.
polynomialPolynomial.
Returns
Reference on this.
template<typename baseType >
ElementGF2Extension<baseType> F4::operator* ( ElementGF2Extension< baseType > const &  element1,
ElementGF2Extension< baseType > const &  element2 
)

Overload the operator *.

Returns
element1 * element2.
template<typename Element >
TaggedPolynomial<Element> F4::operator* ( Monomial const &  monomial,
TaggedPolynomial< Element > const &  taggedPolynomial 
)

Overload the operator *= to multiply this with a monomial.

Parameters
monMonomial.
TaggedPolynomialtaggedPolynomial.
Returns
Reference on this.
template<typename Element >
TaggedPolynomial<Element> F4::operator* ( TaggedPolynomial< Element > const &  taggedPolynomial,
Monomial const &  monomial 
)

Overload the operator *= to multiply this with a monomial.

Parameters
monMonomial.
TaggedPolynomialtaggedPolynomial.
Returns
Reference on this.
template<typename Element >
TaggedPolynomial<Element> F4::operator* ( Element  element,
TaggedPolynomial< Element > const &  taggedPolynomial 
)

Overload the operator *= to multiply this with an Element.

Parameters
elementElement.
TaggedPolynomialtaggedPolynomial.
Returns
Reference on this.
template<typename Element >
TaggedPolynomial<Element> F4::operator* ( TaggedPolynomial< Element > const &  taggedPolynomial,
Element  element 
)

Overload the operator *= to multiply this with an Element.

Parameters
elementElement.
TaggedPolynomialtaggedPolynomial.
Returns
Reference on this.
template<typename Element >
TaggedPolynomial<Element> F4::operator* ( Term< Element > const &  term,
TaggedPolynomial< Element > const &  taggedPolynomial 
)

Overload the operator *= to multiply this with a term.

Parameters
termTerm.
TaggedPolynomialtaggedPolynomial.
Returns
Reference on this.
template<typename Element >
TaggedPolynomial<Element> F4::operator* ( TaggedPolynomial< Element > const &  taggedPolynomial,
Term< Element > const &  term 
)

Overload the operator *= to multiply this with a term.

Parameters
termTerm.
TaggedPolynomialtaggedPolynomial.
Returns
Reference on this.
ElementGF2 F4::operator- ( ElementGF2 const &  element)

Overload the operator -.

Returns
-element.
template<typename baseType >
ElementPrime<baseType> F4::operator- ( ElementPrime< baseType > const &  element)

Overload the operator -.

Returns
-element.
template<typename baseType >
ElementGF2Extension<baseType> F4::operator- ( ElementGF2Extension< baseType > const &  element)

Overload the operator -.

Returns
-element.
template<typename Element >
bool F4::operator< ( CriticalPair< Element > const &  criticalPair1,
CriticalPair< Element > const &  criticalPair2 
)

Overload the operator <.

Returns
true if criticalPair1 < criticalPair2.
false otherwise.
template<typename Element >
bool F4::operator< ( Term< Element > const &  term1,
Term< Element > const &  term2 
)

Overload the operator <.

Parameters
term1Term.
term2Term.
Returns
true if term1<term2.
false otherwise.
template<typename Element >
bool F4::operator< ( TaggedPolynomial< Element > const &  taggedPolynomial1,
TaggedPolynomial< Element > const &  taggedPolynomial2 
)

Overload the operator <.

Returns
true if taggedPolynomial1 < taggedPolynomial2.
false otherwise.
bool F4::operator< ( Monomial const &  mon1,
Monomial const &  mon2 
)

Overload the operator <.

Parameters
mon1Monomial.
mon2Monomial.
Returns
true if mon1<mon2.
false otherwise.
std::ostream& F4::operator<< ( std::ostream &  stream,
ElementGF2 const &  element 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename dataType >
std::ostream& F4::operator<< ( std::ostream &  stream,
DynamicArray< dataType > const &  dynamicArray 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename dataType >
std::ostream& F4::operator<< ( std::ostream &  stream,
AvlMonomial const &  avlMonomial 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename dataType >
std::ostream& F4::operator<< ( std::ostream &  stream,
AvlPolynomial const &  AvlPolynomial 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename baseType >
std::ostream& F4::operator<< ( std::ostream &  stream,
ElementPrime< baseType > const &  element 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
CriticalPair< Element > const &  criticalPair 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
Term< Element > const &  term 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
AvlCriticalPair< Element > const &  avlCriticalPair 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
Polynomial< Element > const &  polynomial 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
TaggedPolynomial< Element > const &  taggedPolynomial 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
SingleList< Element > const &  list 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename baseType >
std::ostream& F4::operator<< ( std::ostream &  stream,
ElementGF2Extension< baseType > const &  element 
)

Overload the operator <<.

Returns
ostream: Stream.
std::ostream& F4::operator<< ( std::ostream &  stream,
Monomial const &  mon 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
std::ostream& F4::operator<< ( std::ostream &  stream,
Matrix< Element > const &  matrix 
)

Overload the operator <<.

Returns
ostream: Stream.
template<typename Element >
bool F4::operator<= ( CriticalPair< Element > const &  criticalPair1,
CriticalPair< Element > const &  criticalPair2 
)

Overload the operator <=.

Returns
true if criticalPair1 <= criticalPair2.
false otherwise.
template<typename Element >
bool F4::operator<= ( TaggedPolynomial< Element > const &  taggedPolynomial1,
TaggedPolynomial< Element > const &  taggedPolynomial2 
)

Overload the operator <=.

Returns
true if taggedPolynomial1 <= taggedPolynomial2.
false otherwise.
bool F4::operator<= ( Monomial const &  mon1,
Monomial const &  mon2 
)

Overload the operator <=.

Parameters
mon1Monomial.
mon2Monomial.
Returns
true if mon1<=mon2.
false otherwise.
template<typename Element >
bool F4::operator== ( CriticalPair< Element > const &  criticalPair1,
CriticalPair< Element > const &  criticalPair2 
)

Overload the operator ==.

Returns
true if criticalPair1 == criticalPair2.
false otherwise.
template<typename Element >
bool F4::operator== ( TaggedPolynomial< Element > const &  taggedPolynomial1,
TaggedPolynomial< Element > const &  taggedPolynomial2 
)

Overload the operator ==.

Returns
true if taggedPolynomial1 == taggedPolynomial2.
false otherwise.
bool F4::operator== ( Monomial const &  mon1,
Monomial const &  mon2 
)

Overload the operator ==.

Parameters
mon1Monomial.
mon2Monomial.
Returns
true if mon1==mon2.
false otherwise.
template<typename Element >
bool F4::operator> ( CriticalPair< Element > const &  criticalPair1,
CriticalPair< Element > const &  criticalPair2 
)

Overload the operator >.

Returns
true if criticalPair1 > criticalPair2.
false otherwise.
template<typename Element >
bool F4::operator> ( Term< Element > const &  term1,
Term< Element > const &  term2 
)

Overload the operator >.

Parameters
term1Term.
term2Term.
Returns
true if term1>term2.
false otherwise.
template<typename Element >
bool F4::operator> ( TaggedPolynomial< Element > const &  taggedPolynomial1,
TaggedPolynomial< Element > const &  taggedPolynomial2 
)

Overload the operator >.

Returns
true if taggedPolynomial1 > taggedPolynomial2.
false otherwise.
bool F4::operator> ( Monomial const &  mon1,
Monomial const &  mon2 
)

Overload the operator >.

Parameters
mon1Monomial.
mon2Monomial.
Returns
true if mon1>mon2.
false otherwise.
template<typename Element >
bool F4::operator>= ( CriticalPair< Element > const &  criticalPair1,
CriticalPair< Element > const &  criticalPair2 
)

Overload the operator >=.

Returns
true if criticalPair1 >= criticalPair2.
false otherwise.
template<typename Element >
bool F4::operator>= ( TaggedPolynomial< Element > const &  taggedPolynomial1,
TaggedPolynomial< Element > const &  taggedPolynomial2 
)

Overload the operator >=.

Returns
true if taggedPolynomial1 >= taggedPolynomial2.
false otherwise.
bool F4::operator>= ( Monomial const &  mon1,
Monomial const &  mon2 
)

Overload the operator >=.

Parameters
mon1Monomial.
mon2Monomial.
Returns
true if mon1>=mon2.
false otherwise.
void F4::printNode ( NodeAvlPolynomial *  p,
int  indent = 0 
)

Print the AVL of root p.

Parameters
pPointer on a node of the AVL.
void F4::printNode ( NodeAvlMonomial *  p,
int  indent = 0 
)

Print the AVL of root p.

Parameters
pPointer on a node of the AVL.
template<typename Element >
void F4::printNode ( NodeAvlCriticalPair< Element > *  p,
int  indent = 0 
)

Print the AVL of root p.

Parameters
pPointer on a node of the AVL.