polybori::BooleMonomial Class Reference

This class is just a wrapper for using variables from `cudd's` decicion diagram. More...

`#include <BooleMonomial.h>`

Inheritance diagram for polybori::BooleMonomial:

## 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
Public Types inherited from polybori::CAuxTypes
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__

## Detailed Description

This class is just a wrapper for using variables from `cudd's` decicion diagram.

Note
  `BooleMonomial` is actually a specialization of `BoolePolynomial` with a special constructor.

## Member Typedef Documentation

typedef poly_type::first_iterator polybori::BooleMonomial::const_iterator

Access to iterator over indices.

typedef poly_type::constant_type polybori::BooleMonomial::constant_type

Type of Boolean constants.

typedef poly_type::dd_type polybori::BooleMonomial::dd_type

typedef dd_type::easy_equality_property polybori::BooleMonomial::easy_equality_property

The property whether the equality check is easy is inherited from dd_type.

typedef poly_type::exp_type polybori::BooleMonomial::exp_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.

typedef poly_type::integer_type polybori::BooleMonomial::integer_type

typedef poly_type::ostream_type polybori::BooleMonomial::ostream_type

typedef BoolePolynomial polybori::BooleMonomial::poly_type

Type of Boolean polynomials.

typedef poly_type::ring_type polybori::BooleMonomial::ring_type

Type for Boolean polynomial rings (without ordering)

typedef poly_type::set_type polybori::BooleMonomial::set_type

Type of sets of Boolean variables.

typedef poly_type::var_type polybori::BooleMonomial::var_type

Type of Boolean variables.

typedef CVariableIter<const_iterator, var_type> polybori::BooleMonomial::variable_iterator

Access to iterator over variables.

## Constructor & Destructor Documentation

polybori::BooleMonomial::BooleMonomial | ( | const self & | rhs) |  |

inline

Copy constructor.

polybori::BooleMonomial::BooleMonomial | ( | const var_type & | rhs) |  |

Construct from Boolean variable.

References PBORI_TRACE_FUNC.

polybori::BooleMonomial::BooleMonomial | ( | const exp_type & | rhs,
|  | const ring_type & | ring
| ) |  |

inline

Construct from exponent vector.

polybori::BooleMonomial::BooleMonomial | ( | const ring_type & | ring) |  |

inline

Construct from given ring.

polybori::BooleMonomial::~BooleMonomial | ( | ) |  |

inline

Destructor.

polybori::BooleMonomial::BooleMonomial | ( | const set_type & | rhs) |  |

inline protected

Construct from decision diagram.

References PBORI_ASSERT.

## Member Function Documentation

const_iterator polybori::BooleMonomial::begin | ( | ) |  | const

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>=().

deg_type polybori::BooleMonomial::deg | ( | ) |  | const

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().

const dd_type& polybori::BooleMonomial::diagram | ( | ) |  | const

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().

set_type polybori::BooleMonomial::divisors | ( | ) |  | const

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().

const_iterator polybori::BooleMonomial::end | ( | ) |  | const

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().

idx_type polybori::BooleMonomial::firstIndex | ( | ) |  | const

inline

Get first index in monomial

Note
  return out-of-range integer for polynomial one

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.

hash_type polybori::BooleMonomial::hash | ( | ) |  | const

inline

Get unique hash value (valid only per runtime)

Referenced by polybori::groebner::MonomialHasher::operator()().

dd_type& polybori::BooleMonomial::internalDiagram | ( | ) |  |

inline protected

Access to internal decision diagramm structure.

Referenced by operator*=(), and operator/=().

bool_type polybori::BooleMonomial::isConstant | ( | ) |  | const

inline

bool_type polybori::BooleMonomial::isOne | ( | ) |  | const

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%=().

polybori::BooleMonomial::operator const BoolePolynomial & | ( | ) |  | const

inline

Casting operator.

bool_type polybori::BooleMonomial::operator!= | ( | const self & | rhs) |  | const

inline

bool_type polybori::BooleMonomial::operator!= | ( | constant_type | rhs) |  | const

inline

BooleMonomial & polybori::BooleMonomial::operator*= | ( | const self & | rhs) |  |

References polybori::BoolePolynomial::internalDiagram(), and PBORI_TRACE_FUNC.

BooleMonomial & polybori::BooleMonomial::operator*= | ( | const var_type & | rhs) |  |

References polybori::BooleSet::change(), polybori::BooleVariable::index(), internalDiagram(), PBORI_TRACE_FUNC, and reducibleBy().

BooleMonomial & polybori::BooleMonomial::operator/= | ( | const self & | rhs) |  |

References polybori::BoolePolynomial::isZero(), polybori::CErrorEnums::monomial_zero, PBORI_TRACE_FUNC, and PBORI_UNLIKELY.

BooleMonomial & polybori::BooleMonomial::operator/= | ( | const var_type & | rhs) |  |

References polybori::BooleVariable::index(), internalDiagram(), polybori::BoolePolynomial::isZero(), polybori::CErrorEnums::monomial_zero, PBORI_TRACE_FUNC, and PBORI_UNLIKELY.

bool_type polybori::BooleMonomial::operator== | ( | const self & | rhs) |  | const

inline

bool_type polybori::BooleMonomial::operator== | ( | constant_type | rhs) |  | const

inline

self& polybori::BooleMonomial::popFirst | ( | ) |  |

inline

Removes the first variables from monomial.

References PBORI_ASSERT.

bool_type polybori::BooleMonomial::reducibleBy | ( | const self & | rhs) |  | const

inline

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.

const ring_type& polybori::BooleMonomial::ring | ( | ) |  | const

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().

set_type polybori::BooleMonomial::set | ( | ) |  | const

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().

size_type polybori::BooleMonomial::size | ( | ) |  | const

inline

Size of the exponents.

Referenced by polybori::BooleExponent::get(), polybori::groebner::FGLMStrategy::main(), polybori::BoolePolynomial::nUsedVariables(), and polybori::BooleExponent::operator=().

hash_type polybori::BooleMonomial::stableHash | ( | ) |  | const

inline

Hash value of the monomial.

References polybori::stable_first_hash_range().

variable_iterator polybori::BooleMonomial::variableBegin | ( | ) |  | const

inline

Start iteration over variables.

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

variable_iterator polybori::BooleMonomial::variableEnd | ( | ) |  | const

inline

Finish iteration over variables.

## Friends And Related Function Documentation

template<class , class >

friend class CDDOperations

friend

friend class COrderingBase

friend

template<class >

friend class CTermGeneratorBase

friend

template<class , class >

friend class CTermGeneratorBase__

friend

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

- BooleMonomial.h
- BooleMonomial.cc