Gröbner basis project
Codebase for research into Gröbner basis computation
F4_Reduction_Data Class Reference

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_Dataget_strategy ()
 returns the strategy currently in use
 
Conversion
Constant_Polynomialfinalize ()
 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_ElementA
 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_Orderingmord
 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_RingRx
 polynomial ring
 
Poly_Strategy_Datastrategy
 strategy in use
 

Detailed Description

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.

Member Function Documentation

◆ add_monomials()

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.

◆ reduce()

void F4_Reduction_Data::reduce ( )

reduces polynomial

Warning
There must be at least one monomial in the polynomial; we do not verify this initially

Definition at line 196 of file f4_reduction.cpp.


The documentation for this class was generated from the following files: