polybori::groebner::GroebnerStrategy Class Reference

This class defines GroebnerStrategy. More...

`#include <GroebnerStrategy.h>`

Inheritance diagram for polybori::groebner::GroebnerStrategy:

## Public Member Functions

| GroebnerStrategy (const GroebnerStrategy &orig)
| copy constructor More...
| GroebnerStrategy (const BoolePolyRing &input_ring)
| Construct from a ring. More...
const BoolePolyRing & | ring () const
bool | containsOne () const
std::vector< Polynomial > | minimalizeAndTailReduce ()
std::vector< Polynomial > | minimalize ()
void | addGenerator (const PolyEntry &entry)
void | addGeneratorDelayed (const BoolePolynomial &p)
void | addAsYouWish (const Polynomial &p)
void | addGeneratorTrySplit (const Polynomial &p, bool is_minimal)
bool | variableHasValue (idx_type i)
void | llReduceAll ()
void | treat_m_p_1_case (const PolyEntry &e)
Polynomial | nextSpoly ()
void | addNonTrivialImplicationsDelayed (const PolyEntry &p)
void | propagate (const PolyEntry &e)
void | log (const char *c) const
Polynomial | redTail (const Polynomial &p)
std::vector< Polynomial > | noroStep (const std::vector< Polynomial > &)
std::vector< Polynomial > | faugereStepDense (const std::vector< Polynomial > &)
Polynomial | nf (Polynomial p) const
void | symmGB_F2 ()
int | suggestPluginVariable ()
std::vector< Polynomial > | allGenerators ()
bool | checkSingletonCriterion (int i, int j) const
bool | checkPairCriteria (const Exponent &lm, int i, int j)
bool | checkChainCriterion (const Exponent &lm, int i, int j)
bool | checkExtendedProductCriterion (int i, int j)
bool | checkVariableSingletonCriterion (int idx) const
bool | checkVariableLeadOfFactorCriterion (int idx, int var) const
bool | checkVariableChainCriterion (int idx)
bool | checkVariableCriteria (int idx, int var)
Public Member Functions inherited from polybori::groebner::GroebnerOptions
| GroebnerOptions (bool redTailInLastBlock=false, bool lazy=false)
| Constructor with default settings. More...
Public Member Functions inherited from polybori::groebner::PairManagerFacade< GroebnerStrategy >
| PairManagerFacade (const BoolePolyRing &ring)
| PairManagerFacade (const self &rhs)
void | cleanTopByChainCriterion ()
void | introducePair (const Pair &pair)

## Public Attributes

public available parameters
ReductionStrategy | generators
boost::shared_ptr< CacheManager > | cache
unsigned int | reductionSteps
int | normalForms
int | currentDegree
int | averageLength
int | chainCriterions
int | variableChainCriterions
int | easyProductCriterions
int | extendedProductCriterions
Public Attributes inherited from polybori::groebner::GroebnerOptions
bool | optRedTailInLastBlock
bool | optLazy
std::string | matrixPrefix
bool | optDrawMatrices
bool | optModifiedLinearAlgebra
bool | optDelayNonMinimals
bool | enabledLog
bool | optExchange
bool | optHFE
bool | optStepBounded
bool | optAllowRecursion
bool | optLinearAlgebraInLastBlock
bool | reduceByTailReduced
Public Attributes inherited from polybori::groebner::PairManagerFacade< GroebnerStrategy >
PairManagerWithStrategy< strategy_type > | pairs
| For compatibility reasons make this a public member. More...

## Protected Member Functions

std::vector< Polynomial > | treatVariablePairs (PolyEntryReference)
void | normalPairsWithLast (const MonomialSet &)
void | addVariablePairs (PolyEntryReference)
std::vector< Polynomial > | add4ImplDelayed (PolyEntryReference)
std::vector< Polynomial > | add4ImplDelayed (const Polynomial &p, const Exponent &lm_exp, const Exponent &used_variables) const
std::vector< Polynomial > | addHigherImplDelayedUsing4 (PolyEntryReference)
std::vector< Polynomial > | addHigherImplDelayedUsing4 (const LiteralFactorization &) const

## Detailed Description

This class defines GroebnerStrategy.

## Constructor & Destructor Documentation

polybori::groebner::GroebnerStrategy::GroebnerStrategy | ( | const GroebnerStrategy & | orig | ) |

copy constructor

polybori::groebner::GroebnerStrategy::GroebnerStrategy | ( | const BoolePolyRing & | input_ring | ) |

inline

Construct from a ring.

## Member Function Documentation

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::add4ImplDelayed | ( | PolyEntryReference | entry | ) |

protected

References addGeneratorDelayed(), polybori::for_each(), polybori::groebner::PolyEntryBase::leadExp, polybori::groebner::PolyEntryReference::markVariablePairsCalculated(), polybori::groebner::PolyEntryBase::p, and polybori::groebner::PolyEntryBase::usedVariables.

Referenced by add4ImplDelayed(), addGeneratorTrySplit(), and treatVariablePairs().

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::add4ImplDelayed | ( | const Polynomial & | p,
|  | const Exponent & | lm_exp,
|  | const Exponent & | used_variables
| ) |  | const

protected

References add4ImplDelayed().

void polybori::groebner::GroebnerStrategy::addAsYouWish | ( | const Polynomial & | p | ) |

References addGenerator(), addGeneratorDelayed(), addGeneratorTrySplit(), polybori::BooleExponent::deg(), polybori::BooleSet::divisorsOf(), polybori::BoolePolynomial::eliminationLength(), generators, polybori::CCuddDDFacade< RingType, DiagramType >::isZero(), polybori::BoolePolynomial::leadExp(), polybori::groebner::ReductionTerms::leadingTerms, polybori::groebner::GroebnerOptions::optDelayNonMinimals, polybori::groebner::ReductionOptions::optRedTail, polybori::groebner::GroebnerOptions::optRedTailInLastBlock, polybori::BooleSet::owns(), polybori::groebner::red_tail(), polybori::groebner::red_tail_in_last_block(), polybori::BoolePolynomial::ring(), and polybori::which().

Referenced by symmGB_F2().

void polybori::groebner::GroebnerStrategy::addGenerator | ( | const PolyEntry & | entry | ) |

References generators, polybori::groebner::PolyEntryVector::last(), polybori::groebner::PolyEntryReference::markVariablePairsCalculated(), polybori::groebner::PolyEntryReference::minimal, and treatVariablePairs().

Referenced by addAsYouWish(), and addGeneratorTrySplit().

void polybori::groebner::GroebnerStrategy::addGeneratorDelayed | ( | const BoolePolynomial & | p | ) |

References polybori::groebner::PolyEntryVector::empty(), generators, polybori::BoolePolyRing::id(), polybori::groebner::PairManagerWithStrategy< StrategyType >::introducePair(), polybori::groebner::PairManagerFacade< GroebnerStrategy >::pairs, PBORI_ASSERT, and polybori::BoolePolynomial::ring().

Referenced by add4ImplDelayed(), addAsYouWish(), addGeneratorTrySplit(), addHigherImplDelayedUsing4(), addNonTrivialImplicationsDelayed(), and polybori::groebner::parallel_reduce().

void polybori::groebner::GroebnerStrategy::addGeneratorTrySplit | ( | const Polynomial & | p,
|  | bool | is_minimal
| ) |  |

References add4ImplDelayed(), addGenerator(), addGeneratorDelayed(), addHigherImplDelayedUsing4(), cache, polybori::BooleExponent::deg(), polybori::BooleSet::divisorsOf(), polybori::groebner::PolyEntryVector::empty(), polybori::groebner::full_implication_gb(), generators, polybori::groebner::have_base_ordering_for_tables(), polybori::groebner::have_ordering_for_tables(), polybori::BoolePolyRing::id(), polybori::BoolePolynomial::inSingleBlock(), polybori::BoolePolynomial::leadExp(), polybori::groebner::ReductionTerms::leadingTerms, log(), polybori::groebner::ReductionTerms::minimalLeadingTerms, polybori::groebner::multiply_with_literal_factors(), polybori::groebner::GroebnerOptions::optAllowRecursion, PBORI_ASSERT, polybori::groebner::LiteralFactorization::rest, polybori::BoolePolynomial::ring(), and polybori::BoolePolynomial::usedVariablesExp().

Referenced by addAsYouWish().

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::addHigherImplDelayedUsing4 | ( | PolyEntryReference | entry | ) |

protected

References addGeneratorDelayed(), polybori::for_each(), and polybori::groebner::PolyEntry::markVariablePairsCalculated().

Referenced by addGeneratorTrySplit(), addHigherImplDelayedUsing4(), and treatVariablePairs().

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::addHigherImplDelayedUsing4 | ( | const LiteralFactorization & | literal_factors | ) | const

protected

References addHigherImplDelayedUsing4().

void polybori::groebner::GroebnerStrategy::addNonTrivialImplicationsDelayed | ( | const PolyEntry & | p | ) |

References addGeneratorDelayed(), polybori::groebner::LiteralFactorization::factors, polybori::BoolePolynomial::isOne(), polybori::groebner::PolyEntryBase::literal_factors, log(), polybori::BoolePolyRing::one(), polybori::groebner::PolyEntryBase::p, polybori::groebner::LiteralFactorization::rest, ring(), polybori::BoolePolynomial::ring(), polybori::groebner::LiteralFactorization::trivial(), polybori::groebner::LiteralFactorization::var2var_map, and polybori::BoolePolyRing::variable().

void polybori::groebner::GroebnerStrategy::addVariablePairs | ( | PolyEntryReference | entryref | ) |

protected

References polybori::BooleExponent::begin(), polybori::BooleMonomial::deg(), polybori::BooleExponent::end(), generators, polybori::groebner::PairManagerWithStrategy< StrategyType >::introducePair(), polybori::groebner::PolyEntryBase::lead, polybori::groebner::PolyEntryBase::leadExp, polybori::groebner::PolyEntryBase::literal_factors, polybori::groebner::LiteralFactorization::occursAsLeadOfFactor(), polybori::groebner::PairManagerFacade< GroebnerStrategy >::pairs, polybori::groebner::PolyEntryVector::size(), polybori::groebner::VARIABLE_PAIR, and polybori::groebner::PolyEntryReference::vPairCalculated.

Referenced by treatVariablePairs().

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::allGenerators | ( |  | ) |

References polybori::groebner::PairManager::appendHiddenGenerators(), polybori::groebner::PolyEntryVector::begin(), polybori::groebner::PolyEntryVector::empty(), polybori::groebner::PolyEntryVector::end(), polybori::groebner::PolyEntryVector::front(), generators, polybori::groebner::PairManagerFacade< GroebnerStrategy >::pairs, polybori::groebner::PolyEntryVector::size(), and polybori::transform().

bool polybori::groebner::GroebnerStrategy::checkChainCriterion | ( | const Exponent & | lm,
|  | int | i,
|  | int | j
| ) |  |

References chainCriterions, polybori::BooleExponent::divisors(), polybori::BooleSet::expBegin(), polybori::BooleSet::expEnd(), generators, polybori::groebner::ReductionTerms::leadingTerms, PBORI_ASSERT, and ring().

bool polybori::groebner::GroebnerStrategy::checkExtendedProductCriterion | ( | int | i,
|  | int | j
| ) |  |

References polybori::groebner::extended_product_criterion(), extendedProductCriterions, and generators.

bool polybori::groebner::GroebnerStrategy::checkPairCriteria | ( | const Exponent & | lm,
|  | int | i,
|  | int | j
| ) |  |

inline

bool polybori::groebner::GroebnerStrategy::checkSingletonCriterion | ( | int | i,
|  | int | j
| ) |  | const

inline

bool polybori::groebner::GroebnerStrategy::checkVariableChainCriterion | ( | int | idx | ) |

inline

bool polybori::groebner::GroebnerStrategy::checkVariableCriteria | ( | int | idx,
|  | int | var
| ) |  |

inline

References PBORI_UNLIKELY.

bool polybori::groebner::GroebnerStrategy::checkVariableLeadOfFactorCriterion | ( | int | idx,
|  | int | var
| ) |  | const

inline

bool polybori::groebner::GroebnerStrategy::checkVariableSingletonCriterion | ( | int | idx | ) | const

inline

bool polybori::groebner::GroebnerStrategy::containsOne | ( |  | ) | const

inline

std::vector<Polynomial> polybori::groebner::GroebnerStrategy::faugereStepDense | ( | const std::vector< Polynomial > & |  | ) |

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

void polybori::groebner::GroebnerStrategy::llReduceAll | ( |  | ) |

References generators, and polybori::groebner::ReductionStrategy::llReduceAll().

void polybori::groebner::GroebnerStrategy::log | ( | const char * | c | ) | const

inline

Referenced by addGeneratorTrySplit(), addNonTrivialImplicationsDelayed(), polybori::groebner::full_implication_gb(), and polybori::groebner::parallel_reduce().

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::minimalize | ( |  | ) |

References polybori::BooleSet::begin(), polybori::BooleSet::end(), generators, polybori::groebner::minimal_elements(), polybori::groebner::ReductionTerms::minimalLeadingTerms, polybori::CCuddDDFacade< RingType, DiagramType >::ring(), polybori::BooleSet::size(), and polybori::transform().

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce | ( |  | ) |

References generators, polybori::groebner::minimal_elements(), polybori::groebner::ReductionTerms::minimalLeadingTerms, polybori::groebner::ReductionOptions::optRedTailDegGrowth, polybori::BooleSet::rExpBegin(), polybori::BooleSet::rExpEnd(), polybori::CCuddDDFacade< RingType, DiagramType >::ring(), polybori::BooleSet::size(), and polybori::transform().

Polynomial polybori::groebner::GroebnerStrategy::nextSpoly | ( |  | ) |

inline

Polynomial polybori::groebner::GroebnerStrategy::nf | ( | Polynomial | p | ) | const

References generators, and polybori::groebner::ReductionStrategy::nf().

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

void polybori::groebner::GroebnerStrategy::normalPairsWithLast | ( | const MonomialSet & | act_l_terms | ) |

protected

References polybori::BooleSet::expBegin(), polybori::BooleSet::expEnd(), generators, polybori::groebner::PolyEntryVector::index(), polybori::groebner::PairManagerWithStrategy< StrategyType >::introducePair(), polybori::groebner::PairManagerFacade< GroebnerStrategy >::pairs, and polybori::groebner::PolyEntryVector::size().

std::vector<Polynomial> polybori::groebner::GroebnerStrategy::noroStep | ( | const std::vector< Polynomial > & |  | ) |

void polybori::groebner::GroebnerStrategy::propagate | ( | const PolyEntry & | e | ) |

Polynomial polybori::groebner::GroebnerStrategy::redTail | ( | const Polynomial & | p | ) |

References generators, and polybori::groebner::red_tail().

const BoolePolyRing& polybori::groebner::GroebnerStrategy::ring | ( |  | ) | const

inline

Referenced by addNonTrivialImplicationsDelayed(), and checkChainCriterion().

int polybori::groebner::GroebnerStrategy::suggestPluginVariable | ( |  | ) |

References polybori::BooleSet::expBegin(), polybori::BooleSet::expEnd(), polybori::for_each(), generators, polybori::groebner::ReductionTerms::minimalLeadingTerms, polybori::BoolePolyRing::nVariables(), polybori::groebner::RankingVector::rerank(), and polybori::CCuddDDFacade< RingType, DiagramType >::ring().

void polybori::groebner::GroebnerStrategy::symmGB_F2 | ( |  | ) |

References addAsYouWish(), polybori::for_each(), polybori::groebner::PairManagerFacade< GroebnerStrategy >::pairs, polybori::groebner::parallel_reduce(), polybori::groebner::PairManager::queue, and polybori::groebner::steps().

void polybori::groebner::GroebnerStrategy::treat_m_p_1_case | ( | const PolyEntry & | e | ) |

inline

std::vector< Polynomial > polybori::groebner::GroebnerStrategy::treatVariablePairs | ( | PolyEntryReference | entry | ) |

protected

References add4ImplDelayed(), addHigherImplDelayedUsing4(), addVariablePairs(), polybori::BooleExponent::deg(), polybori::BooleMonomial::deg(), polybori::BooleMonomial::divisors(), polybori::groebner::LiteralFactorization::factors, polybori::groebner::have_base_ordering_for_tables(), polybori::groebner::have_ordering_for_tables(), polybori::BoolePolynomial::inSingleBlock(), polybori::BoolePolynomial::leadDeg(), polybori::groebner::PolyEntryBase::literal_factors, polybori::BoolePolynomial::nUsedVariables(), polybori::groebner::PolyEntryBase::p, PBORI_ASSERT, polybori::groebner::LiteralFactorization::rest, polybori::BoolePolynomial::ring(), polybori::BooleSet::size(), polybori::groebner::PolyEntryBase::usedVariables, polybori::BoolePolynomial::usedVariables(), polybori::groebner::LiteralFactorization::var2var_map, and polybori::groebner::zeros().

Referenced by addGenerator().

bool polybori::groebner::GroebnerStrategy::variableHasValue | ( | idx_type | i | ) |

References polybori::groebner::PolyEntryVector::begin(), polybori::groebner::PolyEntryVector::end(), and generators.

## Member Data Documentation

int polybori::groebner::GroebnerStrategy::averageLength

boost::shared_ptr<CacheManager> polybori::groebner::GroebnerStrategy::cache

Referenced by addGeneratorTrySplit(), and polybori::groebner::full_implication_gb().

int polybori::groebner::GroebnerStrategy::chainCriterions

Referenced by checkChainCriterion().

int polybori::groebner::GroebnerStrategy::currentDegree

int polybori::groebner::GroebnerStrategy::easyProductCriterions

int polybori::groebner::GroebnerStrategy::extendedProductCriterions

Referenced by checkExtendedProductCriterion(), and polybori::groebner::HasTRepOrExtendedProductCriterion::operator()().

ReductionStrategy polybori::groebner::GroebnerStrategy::generators

Referenced by addAsYouWish(), addGenerator(), addGeneratorDelayed(), addGeneratorTrySplit(), addVariablePairs(), allGenerators(), checkChainCriterion(), checkExtendedProductCriterion(), llReduceAll(), minimalize(), minimalizeAndTailReduce(), nf(), polybori::groebner::nf3_lexbuckets(), normalPairsWithLast(), polybori::groebner::LessUsedTailVariablesThenLessWeightedLengthInStrat::operator()(), polybori::groebner::LessCombinedManySizesInStrat::operator()(), polybori::groebner::LessEcartThenLessWeightedLengthInStrat::operator()(), polybori::groebner::ShorterEliminationLength::operator()(), polybori::groebner::ChainCriterion::operator()(), polybori::groebner::ChainVariableCriterion::operator()(), polybori::groebner::ShorterEliminationLengthModified::operator()(), polybori::groebner::HasTRepOrExtendedProductCriterion::operator()(), polybori::groebner::CountCriterion::operator()(), polybori::groebner::parallel_reduce(), polybori::groebner::red_tail_in_last_block(), redTail(), suggestPluginVariable(), and variableHasValue().

int polybori::groebner::GroebnerStrategy::normalForms

unsigned int polybori::groebner::GroebnerStrategy::reductionSteps

int polybori::groebner::GroebnerStrategy::variableChainCriterions

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

- GroebnerStrategy.h
- GroebnerStrategy.cc