Gröbner basis project
Codebase for research into Gröbner basis computation
|
Implementation of Faugère’s F4 algorithm. More...
#include <f4_reduction.hpp>
Public Member Functions | |
Construction | |
F4_Reduction_Data (Critical_Pair_Basic &p, list< Abstract_Polynomial *> &B) | |
void | add_monomials (list< Monomial *>::iterator *ti, list< Abstract_Polynomial *>::iterator &ri, const Abstract_Polynomial *g, const Monomial *u=nullptr) |
adds appropriate monomial multiples of g to M_build More... | |
void | initialize (Abstract_Polynomial *p, const Monomial &t) |
copy temporary to permanent reducers; free list of monomials; insert p's coefficients, aligned with multiples of t | |
Destruction | |
~F4_Reduction_Data () | |
Basic properties | |
bool | is_zero () |
returns true iff all the entries are 0 | |
Poly_Strategy_Data * | get_strategy () |
returns the strategy currently in use | |
Conversion | |
Constant_Polynomial * | finalize () |
converts this to a Constant_Polynomial and returns the result | |
Modification | |
void | clear_strategy () |
clears the strategy; do this if you have saved it elsewhere | |
Computation | |
void | advance_head () |
advances head ; useful after a computation | |
void | reduce () |
reduces polynomial More... | |
I/O | |
void | list_reducers () |
Protected Attributes | |
Prime_Field_Element * | A |
polynomial data | |
list< Abstract_Polynomial * > & | G |
current basis of ideal | |
unsigned | head |
head of the polynomial (location of leading term) | |
unsigned | len |
length of the polynomial | |
Monomial ** | M |
polynomial data | |
list< Monomial * > * | M_build |
monomials of f | |
Monomial_Ordering * | mord |
how the monomials are ordered | |
unsigned | nonzero_entries |
number of nonzero entries of A | |
vector< Abstract_Polynomial * > | R |
finalized list of indices of reducers for the corresponding monomials of f | |
list< Abstract_Polynomial * > * | R_build |
indices of reducers for the corresponding elements of M | |
Polynomial_Ring * | Rx |
polynomial ring | |
Poly_Strategy_Data * | strategy |
strategy in use | |
Implementation of Faugère’s F4 algorithm.
Currently computes a Gröbner basis by selecting one s-polynomial at a time. Eventually needs to select several at a time, then reduce them.
Definition at line 38 of file f4_reduction.hpp.
void F4_Reduction_Data::add_monomials | ( | list< Monomial *>::iterator * | ti, |
list< Abstract_Polynomial *>::iterator & | ri, | ||
const Abstract_Polynomial * | g, | ||
const Monomial * | u = nullptr |
||
) |
adds appropriate monomial multiples of g
to M_build
If g
is a generator, set ti
to nullptr
and u
to the multiple necessary for the s-polynomial. This should be defined already in the critical pair. Do not leave u
as nullptr
in this case!
If g
is not a generator, then ti
should point to the monomial divisible by the leading term of g
. The algorithm advances both ti
and a new iterator through g
ahead one monomial and begins comparing.
The iterator ri
is an iterator through R_build
.
Definition at line 95 of file f4_reduction.cpp.
void F4_Reduction_Data::reduce | ( | ) |
reduces polynomial
Definition at line 196 of file f4_reduction.cpp.