PolyBoRi
|
This class is just a wrapper for using variables from cudd's
decicion diagram.
More...
#include <BooleMonomial.h>
Public Types | |
typedef BooleMonomial | self |
Generic access to current type. | |
typedef BoolePolynomial | poly_type |
Type of Boolean polynomials. | |
typedef poly_type::var_type | var_type |
Type of Boolean variables. | |
typedef poly_type::constant_type | constant_type |
Type of Boolean constants. | |
typedef poly_type::set_type | set_type |
Type of sets of Boolean variables. | |
typedef poly_type::exp_type | exp_type |
Type of exponent vector. | |
typedef poly_type::ring_type | ring_type |
Type for Boolean polynomial rings (without ordering) | |
typedef poly_type::first_iterator | const_iterator |
Access to iterator over indices. | |
typedef CVariableIter < const_iterator, var_type > | variable_iterator |
Access to iterator over variables. | |
typedef std::map< self, idx_type, symmetric_composition < std::less < poly_type::navigator > , navigates< poly_type > > > | idx_map_type |
Type for index maps. | |
typedef dd_type::easy_equality_property | easy_equality_property |
The property whether the equality check is easy is inherited from dd_type. | |
Adopt global type definitions | |
typedef CTypes::dd_type | dd_type |
typedef CTypes::size_type | size_type |
typedef CTypes::idx_type | idx_type |
typedef CTypes::hash_type | hash_type |
typedef CTypes::bool_type | bool_type |
typedef CTypes::comp_type | comp_type |
typedef CTypes::integer_type | integer_type |
typedef CTypes::ostream_type | ostream_type |
Public Member Functions | |
BooleMonomial () | |
Default Constructor (Constructs monomial one of the active ring) | |
BooleMonomial (const self &rhs) | |
Copy constructor. | |
BooleMonomial (const var_type &rhs) | |
Construct from Boolean variable. | |
BooleMonomial (const exp_type &rhs, const ring_type &ring) | |
Construct from exponent vector. | |
BooleMonomial (const ring_type &ring) | |
Construct from given ring. | |
~BooleMonomial () | |
Destructor. | |
operator const BoolePolynomial & () const | |
Casting operator. | |
exp_type | exp () const |
Get exponent vector. | |
const_iterator | begin () const |
Start iteration over indices. | |
const_iterator | end () const |
Finish iteration over indices. | |
variable_iterator | variableBegin () const |
Start iteration over variables. | |
variable_iterator | variableEnd () const |
Finish iteration over variables. | |
size_type | deg () const |
Degree of the monomial. | |
size_type | size () const |
Size of the exponents. | |
set_type | divisors () const |
Divisors of the monomial. | |
set_type | multiples (const self &) const |
multiples of the monomial wrt. given monomial | |
hash_type | stableHash () const |
Hash value of the monomial. | |
hash_type | hash () const |
Get unique hash value (valid only per runtime) | |
self & | changeAssign (idx_type) |
Substitute variable with index idx by its complement and assign. | |
self | change (idx_type) const |
Substitute variable with index idx by its complement. | |
bool_type | reducibleBy (const self &rhs) const |
Test for reducibility. | |
bool_type | reducibleBy (const var_type &rhs) const |
comp_type | compare (const self &) const |
Compare with rhs monomial and return comparision code. | |
size_type | LCMDeg (const self &) const |
Degree of the least common multiple. | |
self & | LCMAssign (const self &) |
Compute theleast common multiple and assign. | |
self | LCM (const self &) const |
Compute the greatest common divisor. | |
self & | GCDAssign (const self &) |
Compute the greatest common divisor and assign. | |
self | GCD (const self &) const |
Compute the greatest common divisor. | |
const dd_type & | diagram () const |
Read-only access to internal decision diagramm structure. | |
set_type | set () const |
Get corresponding subset of of the powerset over all variables. | |
self & | popFirst () |
Removes the first variables from monomial. | |
var_type | firstVariable () const |
Get first variable in monomial. | |
idx_type | firstIndex () const |
Get first index in monomial. | |
ring_type | ring () const |
Access ring, where this belongs to. | |
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. | |
BooleMonomial (const set_type &rhs) | |
Construct from decision diagram. |
Friends | |
class | CDDOperations |
class | COrderBase |
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. typedef CTypes::bool_type polybori::BooleMonomial::bool_type |
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)
Generic access to current type.
Type of sets of Boolean variables.
Type of Boolean variables.
Access to iterator over variables.
|
inline |
Default Constructor (Constructs monomial one of the active ring)
|
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.
Construct from decision diagram
|
inline |
Start iteration over indices.
Referenced by polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::addPolynomialToReductor(), GCDAssign(), polybori::BooleExponent::get(), polybori::BooleSet::hasTermOfVariables(), LCMDeg(), polybori::BooleExponent::operator=(), polybori::groebner::parallel_reduce(), polybori::groebner::polynomial_in_one_block(), polybori::groebner::reduce_by_monom(), polybori::BooleExponent::reducibleBy(), and polybori::groebner::sum_size().
BooleMonomial polybori::BooleMonomial::change | ( | idx_type | idx | ) | const |
Substitute variable with index idx by its complement.
References PBORI_TRACE_FUNC.
BooleMonomial & polybori::BooleMonomial::changeAssign | ( | idx_type | idx | ) |
Substitute variable with index idx by its complement and assign.
References polybori::CDDInterface< CuddLikeZDD >::changeAssign(), polybori::BoolePolynomial::internalDiagram(), and PBORI_TRACE_FUNC.
Referenced by GCDAssign(), and operator*=().
BooleMonomial::comp_type polybori::BooleMonomial::compare | ( | const self & | rhs | ) | const |
Compare with rhs monomial and return comparision code.
References polybori::BooleEnv::ordering(), and PBORI_TRACE_FUNC.
Referenced by polybori::operator<(), polybori::operator<=(), polybori::operator>(), and polybori::operator>=().
|
inline |
Degree of the monomial.
Referenced by LCMDeg(), polybori::groebner::parallel_reduce(), polybori::groebner::reduce_by_monom(), and polybori::groebner::sum_size().
|
inline |
Read-only access to internal decision diagramm structure.
Referenced by polybori::BooleSet::addAssign(), polybori::groebner::GroebnerStrategy::addGenerator(), polybori::BooleSet::divide(), polybori::BooleSet::divideAssign(), polybori::BooleSet::divisorsOf(), polybori::BooleSet::existAbstract(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), multiples(), polybori::BooleSet::multiplesOf(), polybori::BoolePolynomial::operator%=(), polybori::BoolePolynomial::operator*=(), polybori::BoolePolynomial::operator/=(), polybori::BooleSet::owns(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), polybori::groebner::reduce_by_monom(), and polybori::groebner::GroebnerStrategy::treat_m_p_1_case().
|
inline |
Divisors of the monomial.
Referenced by polybori::groebner::LexHelper::irreducible_lead(), and polybori::groebner::variety_lex_leading_terms().
|
inline |
Finish iteration over indices.
Referenced by polybori::groebner::GroebnerStrategy::addGenerator(), GCDAssign(), polybori::BooleExponent::get(), polybori::BooleSet::hasTermOfVariables(), LCMDeg(), polybori::BooleExponent::operator=(), polybori::groebner::polynomial_in_one_block(), polybori::groebner::reduce_by_monom(), polybori::BooleExponent::reducibleBy(), and polybori::groebner::sum_size().
BooleMonomial::exp_type polybori::BooleMonomial::exp | ( | ) | const |
Get exponent vector.
References polybori::BooleExponent::get(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::nf3(), polybori::groebner::nf3_degree_order(), polybori::groebner::nf3_lexbuckets(), polybori::groebner::nf3_no_deg_growth(), polybori::groebner::PolyEntry::PolyEntry(), polybori::groebner::PolynomialSugar::PolynomialSugar(), and polybori::groebner::random_set_using_generator().
|
inline |
Get first index in monomial.
Referenced by firstVariable().
BooleMonomial::var_type polybori::BooleMonomial::firstVariable | ( | ) | const |
Get first variable in monomial.
References firstIndex(), PBORI_TRACE_FUNC, and ring().
BooleMonomial polybori::BooleMonomial::GCD | ( | const self & | rhs | ) | const |
Compute the greatest common divisor.
References PBORI_TRACE_FUNC.
Referenced by polybori::GCD(), 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(), changeAssign(), 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.
|
inline |
|
inline |
BooleMonomial polybori::BooleMonomial::LCM | ( | const self & | rhs | ) | const |
BooleMonomial & polybori::BooleMonomial::LCMAssign | ( | const self & | rhs | ) |
Compute theleast common multiple and assign.
References PBORI_TRACE_FUNC.
BooleMonomial::size_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.
|
inline |
Casting operator.
|
inline |
BooleMonomial & polybori::BooleMonomial::operator*= | ( | const self & | rhs | ) |
BooleMonomial & polybori::BooleMonomial::operator*= | ( | const var_type & | rhs | ) |
References changeAssign(), polybori::BooleVariable::index(), PBORI_TRACE_FUNC, and reducibleBy().
BooleMonomial & polybori::BooleMonomial::operator/= | ( | const self & | rhs | ) |
BooleMonomial & polybori::BooleMonomial::operator/= | ( | const var_type & | rhs | ) |
|
inline |
|
inline |
Removes the first variables from monomial.
Test for reducibility.
Referenced by polybori::groebner::minimal_elements_internal(), operator*=(), and polybori::groebner::GroebnerStrategy::treatNormalPairs().
BooleMonomial::bool_type polybori::BooleMonomial::reducibleBy | ( | const var_type & | rhs | ) | const |
References PBORI_TRACE_FUNC, and polybori::BoolePolynomial::reducibleBy().
|
inline |
Access ring, where this belongs to.
Referenced by firstVariable(), and polybori::groebner::GroebnerStrategy::treatNormalPairs().
|
inline |
Get corresponding subset of of the powerset over all variables.
|
inline |
Size of the exponents.
Referenced by polybori::BooleExponent::get(), and polybori::BooleExponent::operator=().
|
inline |
Hash value of the monomial.
References polybori::stable_first_hash_range().
|
inline |
Start iteration over variables.
|
inline |
Finish iteration over variables.
|
friend |
|
friend |
|
friend |