PolyBoRi
Public Member Functions | Protected Member Functions | List of all members
polybori::groebner::ReductionStrategy Class Reference

This class defines ReductionStrategy. More...

#include <ReductionStrategy.h>

Inheritance diagram for polybori::groebner::ReductionStrategy:
polybori::groebner::PolyEntryVector polybori::groebner::ReductionOptions polybori::groebner::ReductionTerms

Public Member Functions

 ReductionStrategy (const BoolePolyRing &ring)
 
void addGenerator (const PolyEntry &entry)
 Adding next element. More...
 
void append (const PolyEntry &entry)
 
Polynomial nf (const Polynomial &p) const
 
bool canRewrite (const Polynomial &p) const
 
int select1 (const Polynomial &p) const
 
int select1 (const Monomial &m) const
 
int select_short (const Polynomial &p) const
 
int select_short (const Monomial &m) const
 
Polynomial headNormalForm (const Polynomial &p) const
 
Polynomial reducedNormalForm (const Polynomial &p) const
 
void llReduceAll ()
 
 operator const PolyEntryVector & () const
 
- Public Member Functions inherited from polybori::groebner::PolyEntryVector
reference first ()
 Alternative to front which allows partial (but consistent) access. More...
 
const_reference first () const
 Constant variant, equivalent to front, for completeness reasons. More...
 
reference last ()
 Alternative to back() which allows partial (but consistent) access. More...
 
const_reference last () const
 Constant variant, equivalent to back, for completeness reasons. More...
 
 PolyEntryVector ()
 Default constructor. More...
 
template<class KeyType >
const_reference operator() (const KeyType &key) const
 Read-only access to element by index, leading term or monomial. More...
 
template<class KeyType >
reference operator() (const KeyType &rhs)
 (Partially) write access to element by index, leading term or monomial More...
 
template<class KeyType , class Type >
void exchange (const KeyType &key, const Type &rhs)
 Exchange element given by key. More...
 
template<class KeyType >
size_type index (const KeyType &key) const
 Retrieve index associated to key. More...
 
template<class KeyType >
size_type checked_index (const KeyType &key) const
 Retrieve index associated to key if key exists, -1 otherwise. More...
 
template<class KeyType >
const Polynomialpolynomial (const KeyType &key) const
 Retrieve polynomial associated to key. More...
 
bool empty () const
 
size_type size () const
 
const_iterator begin () const
 
const_iterator end () const
 
const_reference front () const
 
const_reference back () const
 
template<class KeyType >
const_reference operator[] (const KeyType &rhs) const
 Read-only access to element by index, leading term or monomial. More...
 
- Public Member Functions inherited from polybori::groebner::ReductionOptions
 ReductionOptions ()
 
- Public Member Functions inherited from polybori::groebner::ReductionTerms
 ReductionTerms (const BoolePolyRing &ring)
 Initialize term data for given ring. More...
 
RelatedTerms related (const PolyEntry &entry) const
 

Protected Member Functions

void llReduce (const PolyEntry &entry, const Exponent &ll_e)
 
int select_short_by_terms (const MonomialSet &) const
 
void unmarkNonMinimalLeadingTerms (MonomialSet removed)
 
void setupSetsForElement (const PolyEntry &entry)
 
template<class Iterator , class CompareType >
size_type minimum (Iterator start, Iterator finish, const CompareType &comp) const
 

Additional Inherited Members

- Public Types inherited from polybori::groebner::PolyEntryVector
typedef data_type::value_type value_type
 Vector-style interface. More...
 
typedef data_type::size_type size_type
 
typedef data_type::const_iterator const_iterator
 
typedef data_type::const_reference const_reference
 
typedef PolyEntryReference reference
 
- Public Attributes inherited from polybori::groebner::ReductionOptions
bool optBrutalReductions
 
bool optLL
 
bool optRedTailDegGrowth
 
bool optRedTail
 
idx_type reducibleUntil
 
- Public Attributes inherited from polybori::groebner::ReductionTerms
LeadingTerms leadingTerms
 
MinimalLeadingTerms minimalLeadingTerms
 
LeadingTerms11 leadingTerms11
 
LeadingTerms00 leadingTerms00
 
LLReductor llReductor
 
MonomialTerms monomials
 
MonomialPlusOneTerms monomials_plus_one
 

Detailed Description

This class defines ReductionStrategy.

Constructor & Destructor Documentation

polybori::groebner::ReductionStrategy::ReductionStrategy ( const BoolePolyRing ring)
inline

Member Function Documentation

void polybori::groebner::ReductionStrategy::addGenerator ( const PolyEntry entry)
inline

Adding next element.

Referenced by polybori::groebner::FGLMStrategy::FGLMStrategy().

void polybori::groebner::ReductionStrategy::append ( const PolyEntry entry)
inlinevirtual

Adding next generator

Note
overwriting virtual to avoid inconsistency when casting

Reimplemented from polybori::groebner::PolyEntryVector.

bool polybori::groebner::ReductionStrategy::canRewrite ( const Polynomial p) const
inline
Polynomial polybori::groebner::ReductionStrategy::headNormalForm ( const Polynomial p) const
void polybori::groebner::ReductionStrategy::llReduce ( const PolyEntry entry,
const Exponent ll_e 
)
protected
void polybori::groebner::ReductionStrategy::llReduceAll ( )
template<class Iterator , class CompareType >
size_type polybori::groebner::ReductionStrategy::minimum ( Iterator  start,
Iterator  finish,
const CompareType &  comp 
) const
inlineprotected

References PBORI_UNLIKELY.

Polynomial polybori::groebner::ReductionStrategy::nf ( const Polynomial p) const
inline
polybori::groebner::ReductionStrategy::operator const PolyEntryVector & ( ) const
inline
Polynomial polybori::groebner::ReductionStrategy::reducedNormalForm ( const Polynomial p) const
int polybori::groebner::ReductionStrategy::select1 ( const Polynomial p) const
int polybori::groebner::ReductionStrategy::select1 ( const Monomial m) const
int polybori::groebner::ReductionStrategy::select_short ( const Polynomial p) const
inline
int polybori::groebner::ReductionStrategy::select_short ( const Monomial m) const
inline
int polybori::groebner::ReductionStrategy::select_short_by_terms ( const MonomialSet terms) const
protected
void polybori::groebner::ReductionStrategy::setupSetsForElement ( const PolyEntry entry)
protected
Note
do not inline (optimization screws for some reason)
Todo:
Check whether this is still the case! see: HeuristicQuickTestCase.test_mult6x6mit_lp HeuristicCryptoTestCase.test_ctc_Nr3_B7_n20joined_dp_asc

References polybori::BooleMonomial::exp(), polybori::groebner::PolyEntryBase::lead, polybori::groebner::PolyEntryBase::leadExp, polybori::groebner::PolyEntryBase::p, and PBORI_ASSERT.

void polybori::groebner::ReductionStrategy::unmarkNonMinimalLeadingTerms ( MonomialSet  removed)
inlineprotected

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