PolyBoRi
|
This class is just a wrapper for using variables from cudd's
decicion diagram.
More...
#include <BooleMonomial.h>
Public Types | |
typedef BoolePolynomial | poly_type |
Type of Boolean polynomials. More... | |
typedef poly_type::var_type | var_type |
Type of Boolean variables. More... | |
typedef poly_type::constant_type | constant_type |
Type of Boolean constants. More... | |
typedef poly_type::set_type | set_type |
Type of sets of Boolean variables. More... | |
typedef poly_type::exp_type | exp_type |
Type of exponent vector. More... | |
typedef poly_type::ring_type | ring_type |
Type for Boolean polynomial rings (without ordering) More... | |
typedef poly_type::first_iterator | const_iterator |
Access to iterator over indices. More... | |
typedef CVariableIter < const_iterator, var_type > | variable_iterator |
Access to iterator over variables. More... | |
typedef std::map< self, idx_type, symmetric_composition < std::less < poly_type::navigator > , navigates< poly_type > > > | idx_map_type |
Type for index maps. More... | |
typedef dd_type::easy_equality_property | easy_equality_property |
The property whether the equality check is easy is inherited from dd_type. More... | |
Adopt global type definitions | |
typedef poly_type::dd_type | dd_type |
typedef poly_type::integer_type | integer_type |
typedef poly_type::ostream_type | ostream_type |
![]() | |
typedef bool | bool_type |
Type for standard true/false statements. More... | |
typedef std::size_t | size_type |
Type for lengths, dimensions, etc. More... | |
typedef int | deg_type |
Type for polynomial degrees (ranges from -1 to maxint) More... | |
typedef int | integer_type |
Type for integer numbers. More... | |
typedef int | idx_type |
Type for indices. More... | |
typedef std::size_t | hash_type |
Type for hashing. More... | |
typedef unsigned int | errornum_type |
Type used to store error codes. More... | |
typedef short int | comp_type |
Type for comparisons. More... | |
typedef int | ordercode_type |
Type for ordering codes. More... | |
typedef const char * | errortext_type |
Type used to verbose error information. More... | |
typedef std::ostream | ostream_type |
Type for out-stream. More... | |
typedef const char * | vartext_type |
Type for setting/getting names of variables. More... | |
typedef unsigned long | large_size_type |
large size_type (necessary?) More... | |
typedef std::size_t | refcount_type |
Type for counting references. More... | |
Public Member Functions | |
BooleMonomial (const self &rhs) | |
Copy constructor. More... | |
BooleMonomial (const var_type &rhs) | |
Construct from Boolean variable. More... | |
BooleMonomial (const exp_type &rhs, const ring_type &ring) | |
Construct from exponent vector. More... | |
BooleMonomial (const ring_type &ring) | |
Construct from given ring. More... | |
~BooleMonomial () | |
Destructor. More... | |
operator const BoolePolynomial & () const | |
Casting operator. More... | |
exp_type | exp () const |
Get exponent vector. More... | |
const_iterator | begin () const |
Start iteration over indices. More... | |
const_iterator | end () const |
Finish iteration over indices. More... | |
variable_iterator | variableBegin () const |
Start iteration over variables. More... | |
variable_iterator | variableEnd () const |
Finish iteration over variables. More... | |
deg_type | deg () const |
Degree of the monomial. More... | |
size_type | size () const |
Size of the exponents. More... | |
set_type | divisors () const |
Divisors of the monomial. More... | |
set_type | multiples (const self &) const |
multiples of the monomial wrt. given monomial More... | |
hash_type | stableHash () const |
Hash value of the monomial. More... | |
hash_type | hash () const |
Get unique hash value (valid only per runtime) More... | |
self | change (idx_type) const |
Substitute variable with index idx by its complement. More... | |
bool_type | reducibleBy (const self &rhs) const |
Test for reducibility. More... | |
bool_type | reducibleBy (const var_type &rhs) const |
comp_type | compare (const self &) const |
Compare with rhs monomial and return comparision code. More... | |
deg_type | LCMDeg (const self &) const |
Degree of the least common multiple. More... | |
self & | LCMAssign (const self &) |
Compute the least common multiple and assign. More... | |
self | LCM (const self &) const |
Compute the least common multiple. More... | |
self & | GCDAssign (const self &) |
Compute the greatest common divisor and assign. More... | |
self | GCD (const self &) const |
Compute the greatest common divisor. More... | |
const dd_type & | diagram () const |
Read-only access to internal decision diagramm structure. More... | |
set_type | set () const |
Get corresponding subset of of the powerset over all variables. More... | |
self & | popFirst () |
Removes the first variables from monomial. More... | |
var_type | firstVariable () const |
Get first variable in monomial. More... | |
idx_type | firstIndex () const |
const ring_type & | ring () const |
Access ring, where this belongs to. More... | |
Arithmetical operations | |
self & | operator*= (const self &) |
self & | operator/= (const self &) |
self & | operator*= (const var_type &) |
self & | operator/= (const var_type &) |
Logical operations | |
bool_type | operator== (const self &rhs) const |
bool_type | operator!= (const self &rhs) const |
bool_type | operator== (constant_type rhs) const |
bool_type | operator!= (constant_type rhs) const |
bool_type | isOne () const |
bool_type | isConstant () const |
Protected Member Functions | |
dd_type & | internalDiagram () |
Access to internal decision diagramm structure. More... | |
BooleMonomial (const set_type &rhs) | |
Construct from decision diagram. More... | |
Friends | |
template<class , class > | |
class | CDDOperations |
class | COrderingBase |
template<class > | |
class | CTermGeneratorBase |
template<class , class > | |
class | CTermGeneratorBase__ |
This class is just a wrapper for using variables from cudd's
decicion diagram.
BooleMonomial
is actually a specialization of BoolePolynomial
with a special constructor. Access to iterator over indices.
Type of Boolean constants.
The property whether the equality check is easy is inherited from dd_type.
Type of exponent vector.
typedef std::map<self, idx_type, symmetric_composition< std::less<poly_type::navigator>, navigates<poly_type> > > polybori::BooleMonomial::idx_map_type |
Type for index maps.
Type of Boolean polynomials.
Type for Boolean polynomial rings (without ordering)
Type of sets of Boolean variables.
Type of Boolean variables.
Access to iterator over variables.
|
inline |
Copy constructor.
polybori::BooleMonomial::BooleMonomial | ( | const var_type & | rhs | ) |
Construct from Boolean variable.
References PBORI_TRACE_FUNC.
Construct from exponent vector.
|
inline |
Construct from given ring.
|
inline |
Destructor.
|
inlineprotected |
Construct from decision diagram.
References PBORI_ASSERT.
|
inline |
Start iteration over indices.
Referenced by polybori::BooleExponent::BooleExponent(), polybori::BooleSet::containsDivisorsOfDecDeg(), GCDAssign(), polybori::BooleExponent::get(), polybori::BooleSet::hasTermOfVariables(), polybori::BoolePolynomial::inSingleBlock(), LCMDeg(), polybori::groebner::FGLMStrategy::main(), polybori::BooleExponent::operator=(), polybori::groebner::parallel_reduce(), polybori::groebner::reduce_by_monom(), polybori::BooleExponent::reducibleBy(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::sum_size(), and polybori::groebner::FGLMStrategy::writeRowToVariableDivisors().
BooleMonomial polybori::BooleMonomial::change | ( | idx_type | idx | ) | const |
Substitute variable with index idx by its complement.
References diagram(), and PBORI_TRACE_FUNC.
Referenced by GCDAssign(), and polybori::BoolePolynomial::operator%=().
BooleMonomial::comp_type polybori::BooleMonomial::compare | ( | const self & | rhs | ) | const |
Compare with rhs monomial and return comparision code.
References polybori::COrderingBase::compare(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().
Referenced by polybori::BoolePolynomial::compare(), polybori::operator<(), polybori::operator<=(), polybori::operator>(), and polybori::operator>=().
|
inline |
Degree of the monomial.
Referenced by polybori::groebner::GroebnerStrategy::addVariablePairs(), polybori::groebner::extended_product_criterion(), LCMDeg(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::LargerDegreeComparer::operator()(), polybori::groebner::CountCriterion::operator()(), polybori::groebner::parallel_reduce(), polybori::groebner::reduce_by_monom(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::sum_size(), and polybori::groebner::GroebnerStrategy::treatVariablePairs().
|
inline |
Read-only access to internal decision diagramm structure.
References polybori::BooleSet::diagram().
Referenced by polybori::groebner::add_up_lex_sorted_exponents(), polybori::groebner::FGLMStrategy::analyzeGB(), change(), polybori::BooleSet::divisorsOf(), polybori::BooleSet::existAbstract(), polybori::groebner::fixed_path_divisors(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), multiples(), polybori::BooleSet::multiplesOf(), polybori::BoolePolynomial::operator*=(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), and polybori::groebner::reduce_by_monom().
|
inline |
Divisors of the monomial.
Referenced by polybori::groebner::LexHelper::irreducible_lead(), polybori::groebner::CountCriterion::operator()(), polybori::groebner::ReductionStrategy::select_short(), polybori::groebner::GroebnerStrategy::treatVariablePairs(), and polybori::groebner::variety_lex_leading_terms().
|
inline |
Finish iteration over indices.
Referenced by polybori::BooleExponent::BooleExponent(), polybori::BooleSet::containsDivisorsOfDecDeg(), GCDAssign(), polybori::BooleExponent::get(), polybori::BooleSet::hasTermOfVariables(), polybori::BoolePolynomial::inSingleBlock(), LCMDeg(), polybori::BooleExponent::operator=(), polybori::groebner::reduce_by_monom(), polybori::BooleExponent::reducibleBy(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::sum_size(), and polybori::groebner::FGLMStrategy::writeRowToVariableDivisors().
BooleMonomial::exp_type polybori::BooleMonomial::exp | ( | ) | const |
Get exponent vector.
References polybori::BooleExponent::get(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::FGLMStrategy::main(), polybori::groebner::nf3(), polybori::groebner::nf3_degree_order(), polybori::groebner::nf3_lexbuckets(), polybori::groebner::nf3_no_deg_growth(), polybori::groebner::random_set_using_generator(), polybori::groebner::ReductionStrategy::setupSetsForElement(), polybori::groebner::FGLMStrategy::setupStandardMonomialsFromTables(), polybori::groebner::PolyEntryIndices::update(), and polybori::groebner::FGLMStrategy::writeRowToVariableDivisors().
|
inline |
Get first index in monomial
Referenced by firstVariable(), and polybori::groebner::LLReductor::isCompatible().
BooleMonomial::var_type polybori::BooleMonomial::firstVariable | ( | ) | const |
Get first variable in monomial.
References firstIndex(), polybori::BoolePolynomial::isConstant(), polybori::CErrorEnums::out_of_bounds, PBORI_TRACE_FUNC, PBORI_UNLIKELY, and ring().
BooleMonomial polybori::BooleMonomial::GCD | ( | const self & | rhs | ) | const |
Compute the greatest common divisor.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::extended_product_criterion(), polybori::GCD(), polybori::groebner::CountCriterion::operator()(), polybori::groebner::reduce_by_binom(), and polybori::groebner::reduce_complete().
BooleMonomial & polybori::BooleMonomial::GCDAssign | ( | const self & | rhs | ) |
Compute the greatest common divisor and assign.
References begin(), polybori::BoolePolynomial::begin(), change(), end(), polybori::BoolePolynomial::end(), polybori::BoolePolynomial::isOne(), polybori::BoolePolynomial::isZero(), and PBORI_TRACE_FUNC.
|
inline |
Get unique hash value (valid only per runtime)
Referenced by polybori::groebner::MonomialHasher::operator()().
|
inlineprotected |
Access to internal decision diagramm structure.
Referenced by operator*=(), and operator/=().
|
inline |
|
inline |
BooleMonomial polybori::BooleMonomial::LCM | ( | const self & | rhs | ) | const |
Compute the least common multiple.
References PBORI_TRACE_FUNC.
Referenced by polybori::LCM(), and polybori::groebner::CountCriterion::operator()().
BooleMonomial & polybori::BooleMonomial::LCMAssign | ( | const self & | rhs | ) |
Compute the least common multiple and assign.
References PBORI_TRACE_FUNC.
BooleMonomial::deg_type polybori::BooleMonomial::LCMDeg | ( | const self & | rhs | ) | const |
Degree of the least common multiple.
References begin(), deg(), end(), polybori::BoolePolynomial::isOne(), polybori::BoolePolynomial::isZero(), and PBORI_TRACE_FUNC.
BooleMonomial::set_type polybori::BooleMonomial::multiples | ( | const self & | monom | ) | const |
multiples of the monomial wrt. given monomial
References diagram(), polybori::BoolePolynomial::diagram(), and PBORI_TRACE_FUNC.
Referenced by polybori::BoolePolynomial::operator%=().
|
inline |
Casting operator.
|
inline |
BooleMonomial & polybori::BooleMonomial::operator*= | ( | const self & | rhs | ) |
References polybori::BoolePolynomial::internalDiagram(), and PBORI_TRACE_FUNC.
BooleMonomial & polybori::BooleMonomial::operator*= | ( | const var_type & | rhs | ) |
BooleMonomial & polybori::BooleMonomial::operator/= | ( | const self & | rhs | ) |
BooleMonomial & polybori::BooleMonomial::operator/= | ( | const var_type & | rhs | ) |
|
inline |
|
inline |
Removes the first variables from monomial.
References PBORI_ASSERT.
Test for reducibility.
Referenced by polybori::groebner::fixed_path_divisors(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::minimal_elements_internal(), and operator*=().
BooleMonomial::bool_type polybori::BooleMonomial::reducibleBy | ( | const var_type & | rhs | ) | const |
References polybori::BoolePolynomial::firstReducibleBy(), and PBORI_TRACE_FUNC.
|
inline |
Access ring, where this belongs to.
Referenced by compare(), firstVariable(), polybori::BooleExponent::multiples(), polybori::groebner::random_set_using_generator(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), and polybori::groebner::MinimalLeadingTerms::update().
|
inline |
Get corresponding subset of of the powerset over all variables.
Referenced by polybori::BooleSet::add(), polybori::BooleSet::divide(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::minimal_elements_multiplied_monoms(), polybori::BooleSet::owns(), polybori::groebner::MinimalLeadingTerms::update(), and polybori::groebner::TermsFacade< LeadingTerms00 >::update().
|
inline |
Size of the exponents.
Referenced by polybori::BooleExponent::get(), polybori::groebner::FGLMStrategy::main(), polybori::BoolePolynomial::nUsedVariables(), and polybori::BooleExponent::operator=().
|
inline |
Hash value of the monomial.
References polybori::stable_first_hash_range().
|
inline |
Start iteration over variables.
Referenced by polybori::groebner::FGLMStrategy::setupMultiplicationTables().
|
inline |
Finish iteration over variables.
|
friend |
|
friend |
|
friend |
|
friend |