polybori::BoolePolynomial Class Reference

This class wraps the underlying decicion diagram type and defines the necessary operations. More...

`#include <BoolePolynomial.h>`

Inheritance diagram for polybori::BoolePolynomial:

## Public Types

typedef BoolePolynomial | self
| Generic access to current type. More...
typedef dd_type::first_iterator | first_iterator
| Iterator type for iterating over indices of the leading term. More...
typedef dd_type::navigator | navigator
| Iterator-like type for navigating through diagram structure. More...
typedef BooleMonomial | monom_type
| Fix type for treatment of monomials. More...
typedef BooleVariable | var_type
| Fix type for treatment of monomials. More...
typedef BooleExponent | exp_type
| Fix type for treatment of exponent vectors. More...
typedef BooleConstant | constant_type
| Type for wrapping integer and bool values. More...
typedef BoolePolyRing | ring_type
| Type for Boolean polynomial rings (without ordering) More...
typedef CTypes::comp_type | comp_type
| Type for result of polynomial comparisons. More...
typedef binary_composition < std::plus< size_type > , project_ith < 1 >, integral_constant < size_type, 1 > > | increment_type
| Incrementation functional type. More...
typedef binary_composition < std::minus< size_type > , project_ith < 1 >, integral_constant < size_type, 1 > > | decrement_type
| Decrementation functional type. More...
typedef COrderedIter < navigator, exp_type > | ordered_exp_iterator
| Iterator type for iterating over all exponents in ordering order. More...
typedef COrderedIter < navigator, monom_type > | ordered_iterator
| Iterator type for iterating over all monomials in ordering order. More...
typedef lex_iterator | const_iterator
| Iterator type for iterating over all monomials. More...
typedef CExpIter< navigator, exp_type > | exp_iterator
| Iterator type for iterating all exponent vectors. More...
typedef CGenericIter< LexOrder, navigator, deg_type > | deg_iterator
| Iterator type for iterating all monomials (dereferencing to degree) More...
typedef std::vector< monom_type > | termlist_type
| Type for lists of terms. More...
typedef dd_type::easy_equality_property | easy_equality_property
| The property whether the equality check is easy is inherited from dd_type. More...
typedef BooleSet | set_type
| Type for sets of Boolean variables. More...
typedef std::map< self, idx_type, symmetric_composition < std::less< navigator > , navigates< self > > > | idx_map_type
| Type for index maps. More...
typedef std::map< self, std::vector< self > , symmetric_composition < std::less< navigator > , navigates< self > > > | poly_vec_map_type
Adopt global type definitions
typedef BooleSet | dd_type
typedef CTypes::ostream_type | ostream_type
Generic iterators for various orderings
typedef CGenericIter< LexOrder, navigator, monom_type > | lex_iterator
typedef CGenericIter < DegLexOrder, navigator, monom_type > | dlex_iterator
typedef CGenericIter < DegRevLexAscOrder, navigator, monom_type > | dp_asc_iterator
typedef CGenericIter < BlockDegLexOrder, navigator, monom_type > | block_dlex_iterator
typedef CGenericIter < BlockDegRevLexAscOrder, navigator, monom_type > | block_dp_asc_iterator
typedef CGenericIter< LexOrder, navigator, exp_type > | lex_exp_iterator
typedef CGenericIter < DegLexOrder, navigator, exp_type > | dlex_exp_iterator
typedef CGenericIter < DegRevLexAscOrder, navigator, exp_type > | dp_asc_exp_iterator
typedef CGenericIter < BlockDegLexOrder, navigator, exp_type > | block_dlex_exp_iterator
typedef CGenericIter < BlockDegRevLexAscOrder, navigator, exp_type > | block_dp_asc_exp_iterator
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

| BoolePolynomial (const ring_type &ring)
| Default constructor. More...
| BoolePolynomial (constant_type isOne, const ring_type &ring)
| Construct polynomial in given `ring` from a constant value 0 or 1. More...
| BoolePolynomial (const dd_type &rhs)
| Construct polynomial from decision diagram. More...
| BoolePolynomial (const exp_type &, const ring_type &)
| Construct polynomial from a subset of the powerset over all variables. More...
| BoolePolynomial (const navigator &rhs, const ring_type &ring)
| Construct polynomial from navigator. More...
| ~BoolePolynomial ()
| Destructor. More...
self & | operator= (constant_type rhs)
bool_type | isZero () const
| Check whether polynomial is constant zero. More...
bool_type | isOne () const
| Check whether polynomial is constant one. More...
bool_type | isConstant () const
| Check whether polynomial is zero or one. More...
bool_type | hasConstantPart () const
| Check whether polynomial has term one. More...
bool_type | firstReducibleBy (const self &) const
| Tests whether polynomial can be reduced by right-hand side. More...
monom_type | lead () const
| Get leading term. More...
monom_type | lexLead () const
| Get leading term w.r.t. lexicographical order. More...
monom_type | boundedLead (deg_type bound) const
| Get leading term (using upper bound of the polynomial degree) More...
exp_type | leadExp () const
| Get leading term. More...
exp_type | boundedLeadExp (deg_type bound) const
set_type | leadDivisors () const
| Get all divisors of the leading term. More...
hash_type | hash () const
| Get unique hash value (may change from run to run) More...
hash_type | stableHash () const
| Get hash value, which is reproducible. More...
hash_type | leadStableHash () const
| Hash value of the leading term. More...
deg_type | deg () const
| Maximal degree of the polynomial. More...
deg_type | leadDeg () const
| Degree of the leading term. More...
deg_type | lexLeadDeg () const
| Degree of the leading term w.r.t. lexicographical ordering. More...
deg_type | totalDeg () const
| Total maximal degree of the polynomial. More...
deg_type | leadTotalDeg () const
| Total degree of the leading term. More...
self | gradedPart (deg_type deg) const
| Get part of given degree. More...
size_type | nNodes () const
| Number of nodes in the decision diagram. More...
size_type | nUsedVariables () const
| Number of variables of the polynomial. More...
monom_type | usedVariables () const
| Set of variables of the polynomial. More...
exp_type | usedVariablesExp () const
| Exponent vector of all of variables of the polynomial. More...
size_type | length () const
| Returns number of terms. More...
ostream_type & | print (ostream_type &) const
| Print current polynomial to output stream. More...
const_iterator | begin () const
| Start of iteration over monomials. More...
const_iterator | end () const
| Finish of iteration over monomials. More...
exp_iterator | expBegin () const
| Start of iteration over exponent vectors. More...
exp_iterator | expEnd () const
| Finish of iteration over exponent vectors. More...
first_iterator | firstBegin () const
| Start of first term. More...
first_iterator | firstEnd () const
| Finish of first term. More...
monom_type | firstTerm () const
| Get of first lexicographic term. More...
deg_iterator | degBegin () const
| Start of degrees. More...
deg_iterator | degEnd () const
| Finish of degrees. More...
ordered_iterator | orderedBegin () const
| Start of ordering respecting iterator. More...
ordered_iterator | orderedEnd () const
| Finish of ordering respecting iterator. More...
ordered_exp_iterator | orderedExpBegin () const
| Start of ordering respecting exponent iterator. More...
ordered_exp_iterator | orderedExpEnd () const
| Finish of ordering respecting exponent iterator. More...
navigator | navigation () const
| Navigate through structure. More...
navigator | endOfNavigation () const
| End of navigation marker. More...
dd_type | copyDiagram ()
| gives a copy of the diagram More...
| operator set_type () const
| Casting operator to Boolean set. More...
size_type | eliminationLength () const
size_type | eliminationLengthWithDegBound (deg_type garantied_deg_bound) const
void | fetchTerms (termlist_type &) const
| Get list of all terms. More...
termlist_type | terms () const
| Return of all terms. 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...
bool_type | isSingleton () const
| Test, whether we have one term only. More...
bool_type | isSingletonOrPair () const
| Test, whether we have one or two terms only. More...
bool_type | isPair () const
| Test, whether we have two terms only. More...
const ring_type & | ring () const
| Access ring, where this belongs to. More...
comp_type | compare (const self &) const
| Compare with right-hand side and return comparision code. More...
bool_type | inSingleBlock () const
| Check whether all variables are in one variable block. More...
Arithmetical operations
const self & | operator- () const
self & | operator+= (const self &)
self & | operator+= (constant_type rhs)
template<class RHSType >
self & | operator-= (const RHSType &rhs)
self & | operator*= (const monom_type &)
self & | operator*= (const exp_type &)
self & | operator*= (const self &)
self & | operator*= (constant_type rhs)
self & | operator/= (const var_type &)
self & | operator/= (const monom_type &)
self & | operator/= (const exp_type &)
self & | operator/= (const self &rhs)
self & | operator/= (constant_type rhs)
self & | operator%= (const var_type &)
self & | operator%= (const monom_type &)
self & | operator%= (const self &rhs)
self & | operator%= (constant_type rhs)
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
Compile-time access to generic iterators
lex_iterator | genericBegin (lex_tag) const
lex_iterator | genericEnd (lex_tag) const
dlex_iterator | genericBegin (dlex_tag) const
dlex_iterator | genericEnd (dlex_tag) const
dp_asc_iterator | genericBegin (dp_asc_tag) const
dp_asc_iterator | genericEnd (dp_asc_tag) const
block_dlex_iterator | genericBegin (block_dlex_tag) const
block_dlex_iterator | genericEnd (block_dlex_tag) const
block_dp_asc_iterator | genericBegin (block_dp_asc_tag) const
block_dp_asc_iterator | genericEnd (block_dp_asc_tag) const
lex_exp_iterator | genericExpBegin (lex_tag) const
lex_exp_iterator | genericExpEnd (lex_tag) const
dlex_exp_iterator | genericExpBegin (dlex_tag) const
dlex_exp_iterator | genericExpEnd (dlex_tag) const
dp_asc_exp_iterator | genericExpBegin (dp_asc_tag) const
dp_asc_exp_iterator | genericExpEnd (dp_asc_tag) const
block_dlex_exp_iterator | genericExpBegin (block_dlex_tag) const
block_dlex_exp_iterator | genericExpEnd (block_dlex_tag) const
block_dp_asc_exp_iterator | genericExpBegin (block_dp_asc_tag) const
block_dp_asc_exp_iterator | genericExpEnd (block_dp_asc_tag) const

## Protected Member Functions

dd_type & | internalDiagram ()
| Access to internal decision diagramm structure. More...
self | leadFirst () const
| Generate a polynomial, whose first term is the leading term. More...
set_type | firstDivisors () const
| Get all divisors of the first term. More...

## Friends

class | BooleMonomial
| Let BooleMonomial access protected and private members. More...

## Detailed Description

This class wraps the underlying decicion diagram type and defines the necessary operations.

## Member Typedef Documentation

typedef CGenericIter<BlockDegLexOrder, navigator, exp_type> polybori::BoolePolynomial::block_dlex_exp_iterator

typedef CGenericIter<BlockDegLexOrder, navigator, monom_type> polybori::BoolePolynomial::block_dlex_iterator

typedef CGenericIter<BlockDegRevLexAscOrder, navigator, exp_type> polybori::BoolePolynomial::block_dp_asc_exp_iterator

typedef CGenericIter<BlockDegRevLexAscOrder, navigator, monom_type> polybori::BoolePolynomial::block_dp_asc_iterator

typedef CTypes::comp_type polybori::BoolePolynomial::comp_type

Type for result of polynomial comparisons.

typedef lex_iterator polybori::BoolePolynomial::const_iterator

Iterator type for iterating over all monomials.

typedef BooleConstant polybori::BoolePolynomial::constant_type

Type for wrapping integer and bool values.

typedef BooleSet polybori::BoolePolynomial::dd_type

typedef binary_composition< std::minus<size_type>, project_ith<1>, integral_constant<size_type, 1> > polybori::BoolePolynomial::decrement_type

Decrementation functional type.

typedef CGenericIter<LexOrder, navigator, deg_type> polybori::BoolePolynomial::deg_iterator

Iterator type for iterating all monomials (dereferencing to degree)

typedef CGenericIter<DegLexOrder, navigator, exp_type> polybori::BoolePolynomial::dlex_exp_iterator

typedef CGenericIter<DegLexOrder, navigator, monom_type> polybori::BoolePolynomial::dlex_iterator

typedef CGenericIter<DegRevLexAscOrder, navigator, exp_type> polybori::BoolePolynomial::dp_asc_exp_iterator

typedef CGenericIter<DegRevLexAscOrder, navigator, monom_type> polybori::BoolePolynomial::dp_asc_iterator

typedef dd_type::easy_equality_property polybori::BoolePolynomial::easy_equality_property

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

typedef CExpIter<navigator, exp_type> polybori::BoolePolynomial::exp_iterator

Iterator type for iterating all exponent vectors.

typedef BooleExponent polybori::BoolePolynomial::exp_type

Fix type for treatment of exponent vectors.

typedef dd_type::first_iterator polybori::BoolePolynomial::first_iterator

Iterator type for iterating over indices of the leading term.

typedef std::map<self, idx_type, symmetric_composition< std::less<navigator>, navigates<self> > > polybori::BoolePolynomial::idx_map_type

Type for index maps.

typedef binary_composition< std::plus<size_type>, project_ith<1>, integral_constant<size_type, 1> > polybori::BoolePolynomial::increment_type

Incrementation functional type.

typedef CGenericIter<LexOrder, navigator, exp_type> polybori::BoolePolynomial::lex_exp_iterator

typedef CGenericIter<LexOrder, navigator, monom_type> polybori::BoolePolynomial::lex_iterator

typedef BooleMonomial polybori::BoolePolynomial::monom_type

Fix type for treatment of monomials.

Todo:
  A more sophisticated treatment for monomials is needed.

typedef dd_type::navigator polybori::BoolePolynomial::navigator

Iterator-like type for navigating through diagram structure.

typedef COrderedIter<navigator, exp_type> polybori::BoolePolynomial::ordered_exp_iterator

Iterator type for iterating over all exponents in ordering order.

typedef COrderedIter<navigator, monom_type> polybori::BoolePolynomial::ordered_iterator

Iterator type for iterating over all monomials in ordering order.

typedef CTypes::ostream_type polybori::BoolePolynomial::ostream_type

typedef std::map<self, std::vector<self>, symmetric_composition< std::less<navigator>, navigates<self> > > polybori::BoolePolynomial::poly_vec_map_type

typedef BoolePolyRing polybori::BoolePolynomial::ring_type

Type for Boolean polynomial rings (without ordering)

typedef BoolePolynomial polybori::BoolePolynomial::self

Generic access to current type.

typedef BooleSet polybori::BoolePolynomial::set_type

Type for sets of Boolean variables.

typedef std::vector<monom_type> polybori::BoolePolynomial::termlist_type

Type for lists of terms.

typedef BooleVariable polybori::BoolePolynomial::var_type

Fix type for treatment of monomials.

## Constructor & Destructor Documentation

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

inline

Default constructor.

Construct polynomial from a constant value 0 or 1 Construct zero polynomial

polybori::BoolePolynomial::BoolePolynomial | ( | constant_type | isOne,
|  | const ring_type & | ring
| ) |  |

inline

Construct polynomial in given `ring` from a constant value 0 or 1.

polybori::BoolePolynomial::BoolePolynomial | ( | const dd_type & | rhs) |  |

inline

Construct polynomial from decision diagram.

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

Construct polynomial from a subset of the powerset over all variables.

Construct polynomial from exponent vector

References polybori::BooleSet::change(), PBORI_TRACE_FUNC, polybori::BooleExponent::rbegin(), and polybori::BooleExponent::rend().

polybori::BoolePolynomial::BoolePolynomial | ( | const navigator & | rhs,
|  | const ring_type & | ring
| ) |  |

inline

Construct polynomial from navigator.

References polybori::CCuddNavigator::isValid(), and PBORI_ASSERT.

polybori::BoolePolynomial::~BoolePolynomial | ( | ) |  |

inline

Destructor.

## Member Function Documentation

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

Start of iteration over monomials.

References navigation(), PBORI_TRACE_FUNC, and ring().

Referenced by polybori::groebner::LexHelper::begin(), fetchTerms(), polybori::BooleMonomial::GCDAssign(), and polybori::groebner::reduce_complete().

BoolePolynomial::monom_type polybori::BoolePolynomial::boundedLead | ( | deg_type | bound) |  | const

Get leading term (using upper bound of the polynomial degree)

Note
  Implementation note: for degree orderings (dlex, dp_asc) returns the lead of the sub-polynomial of degree 'bound', falls back to `lead` for all other orderings (lp, block_*)

References polybori::COrderingBase::lead(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

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

BoolePolynomial::exp_type polybori::BoolePolynomial::boundedLeadExp | ( | deg_type | bound) |  | const

Get leading term (using upper bound of the polynomial degree)

Note
  See implementation notes of `boundedLead`

References polybori::COrderingBase::leadExp(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::comp_type polybori::BoolePolynomial::compare | ( | const self & | rhs) |  | const

Compare with right-hand side and return comparision code.

References polybori::BooleMonomial::compare(), isZero(), lead(), and PBORI_TRACE_FUNC.

dd_type polybori::BoolePolynomial::copyDiagram | ( | ) |  |

inline

gives a copy of the diagram

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

Maximal degree of the polynomial.

Todo:
  : This is currently just brute force + caching, more efficient search may be needed.

References polybori::dd_cached_degree(), degBegin(), degEnd(), isConstant(), navigation(), PBORI_TRACE_FUNC, and ring().

Referenced by eliminationLength(), eliminationLengthWithDegBound(), polybori::DegRevLexAscOrder::lead(), polybori::DegLexOrder::lead(), polybori::DegRevLexAscOrder::leadExp(), polybori::DegLexOrder::leadExp(), polybori::groebner::nf3_degree_order(), and totalDeg().

BoolePolynomial::deg_iterator polybori::BoolePolynomial::degBegin | ( | ) |  | const

Start of degrees.

References navigation(), PBORI_TRACE_FUNC, and ring().

Referenced by deg(), and eliminationLength().

BoolePolynomial::deg_iterator polybori::BoolePolynomial::degEnd | ( | ) |  | const

Finish of degrees.

References PBORI_TRACE_FUNC, and ring().

Referenced by deg(), and eliminationLength().

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

inline

Read-only access to internal decision diagramm structure.

Referenced by polybori::groebner::add_up_lex_sorted_exponents(), polybori::groebner::add_up_lex_sorted_monomials(), polybori::groebner::cheap_reductions(), polybori::groebner::do_plug_1(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::BooleMonomial::multiples(), polybori::groebner::multiply_with_literal_factors(), polybori::groebner::plug_1_top(), polybori::groebner::random_set_using_generator(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), polybori::groebner::reduce_complete(), polybori::groebner::FGLMStrategy::testMultiplicationTables(), polybori::groebner::translate_indices(), usedVariables(), and polybori::groebner::zeros().

BoolePolynomial::size_type polybori::BoolePolynomial::eliminationLength | ( | ) |  | const

References deg(), degBegin(), degEnd(), isZero(), leadDeg(), length(), and ring().

Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), and eliminationLengthWithDegBound().

BoolePolynomial::size_type polybori::BoolePolynomial::eliminationLengthWithDegBound | ( | deg_type | garantied_deg_bound) |  | const

References deg(), eliminationLength(), leadDeg(), length(), PBORI_ASSERT, and ring().

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

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

Finish of iteration over monomials.

References PBORI_TRACE_FUNC, and ring().

Referenced by polybori::groebner::LexHelper::end(), fetchTerms(), polybori::BooleMonomial::GCDAssign(), and polybori::groebner::reduce_complete().

navigator polybori::BoolePolynomial::endOfNavigation | ( | ) |  | const

inline

End of navigation marker.

BoolePolynomial::exp_iterator polybori::BoolePolynomial::expBegin | ( | ) |  | const

Start of iteration over exponent vectors.

References navigation(), and PBORI_TRACE_FUNC.

Referenced by polybori::groebner::FGLMStrategy::main(), and polybori::groebner::p2code().

BoolePolynomial::exp_iterator polybori::BoolePolynomial::expEnd | ( | ) |  | const

Finish of iteration over exponent vectors.

References PBORI_TRACE_FUNC.

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

void polybori::BoolePolynomial::fetchTerms | ( | termlist_type & | theOutputList) |  | const

Get list of all terms.

References begin(), end(), length(), PBORI_TRACE_FUNC, and ring().

Referenced by terms().

BoolePolynomial::first_iterator polybori::BoolePolynomial::firstBegin | ( | ) |  | const

Start of first term.

References polybori::CCuddDDFacade< RingType, DiagramType >::firstBegin(), and PBORI_TRACE_FUNC.

Referenced by polybori::LexOrder::leadExp(), and lexLeadDeg().

BoolePolynomial::set_type polybori::BoolePolynomial::firstDivisors | ( | ) |  | const

protected

Get all divisors of the first term.

References polybori::CCuddDDFacade< RingType, DiagramType >::firstDivisors(), and PBORI_TRACE_FUNC.

BoolePolynomial::first_iterator polybori::BoolePolynomial::firstEnd | ( | ) |  | const

Finish of first term.

References polybori::CCuddDDFacade< RingType, DiagramType >::firstEnd(), and PBORI_TRACE_FUNC.

Referenced by polybori::LexOrder::leadExp(), and lexLeadDeg().

BoolePolynomial::bool_type polybori::BoolePolynomial::firstReducibleBy | ( | const self & | rhs) |  | const

inline

Tests whether polynomial can be reduced by right-hand side.

Referenced by polybori::BooleMonomial::reducibleBy().

BoolePolynomial::monom_type polybori::BoolePolynomial::firstTerm | ( | ) |  | const

Get of first lexicographic term.

References polybori::LexOrder::lead(), and PBORI_TRACE_FUNC.

BoolePolynomial::lex_iterator polybori::BoolePolynomial::genericBegin | ( | lex_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dlex_iterator polybori::BoolePolynomial::genericBegin | ( | dlex_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dp_asc_iterator polybori::BoolePolynomial::genericBegin | ( | dp_asc_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dlex_iterator polybori::BoolePolynomial::genericBegin | ( | block_dlex_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dp_asc_iterator polybori::BoolePolynomial::genericBegin | ( | block_dp_asc_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::lex_iterator polybori::BoolePolynomial::genericEnd | ( | lex_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dlex_iterator polybori::BoolePolynomial::genericEnd | ( | dlex_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dp_asc_iterator polybori::BoolePolynomial::genericEnd | ( | dp_asc_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dlex_iterator polybori::BoolePolynomial::genericEnd | ( | block_dlex_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dp_asc_iterator polybori::BoolePolynomial::genericEnd | ( | block_dp_asc_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::lex_exp_iterator polybori::BoolePolynomial::genericExpBegin | ( | lex_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dlex_exp_iterator polybori::BoolePolynomial::genericExpBegin | ( | dlex_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dp_asc_exp_iterator polybori::BoolePolynomial::genericExpBegin | ( | dp_asc_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dlex_exp_iterator polybori::BoolePolynomial::genericExpBegin | ( | block_dlex_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dp_asc_exp_iterator polybori::BoolePolynomial::genericExpBegin | ( | block_dp_asc_tag | ) |  | const

References navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial::lex_exp_iterator polybori::BoolePolynomial::genericExpEnd | ( | lex_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dlex_exp_iterator polybori::BoolePolynomial::genericExpEnd | ( | dlex_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::dp_asc_exp_iterator polybori::BoolePolynomial::genericExpEnd | ( | dp_asc_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dlex_exp_iterator polybori::BoolePolynomial::genericExpEnd | ( | block_dlex_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial::block_dp_asc_exp_iterator polybori::BoolePolynomial::genericExpEnd | ( | block_dp_asc_tag | ) |  | const

References PBORI_TRACE_FUNC, and ring().

BoolePolynomial polybori::BoolePolynomial::gradedPart | ( | deg_type | deg) |  | const

Get part of given degree.

References polybori::dd_graded_part(), navigation(), PBORI_TRACE_FUNC, and ring().

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

bool_type polybori::BoolePolynomial::hasConstantPart | ( | ) |  | const

inline

Check whether polynomial has term one.

Referenced by polybori::groebner::MonomialPlusOneTerms::isCompatible(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::minimal_elements_internal3(), and polybori::groebner::zeros().

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

inline

Get unique hash value (may change from run to run)

BoolePolynomial::bool_type polybori::BoolePolynomial::inSingleBlock | ( | ) |  | const

Check whether all variables are in one variable block.

References polybori::BooleMonomial::begin(), polybori::BooleMonomial::end(), isConstant(), polybori::COrderingBase::lieInSameBlock(), polybori::BoolePolyRing::ordering(), ring(), and usedVariables().

Referenced by polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), and polybori::groebner::GroebnerStrategy::treatVariablePairs().

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

inline protected

Access to internal decision diagramm structure.

Referenced by polybori::BooleMonomial::operator*=().

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

inline

Check whether polynomial is zero or one.

Referenced by deg(), polybori::BooleMonomial::firstVariable(), inSingleBlock(), polybori::LexOrder::leadExp(), polybori::groebner::LexBucket::LexBucket(), polybori::groebner::translate_indices(), and polybori::groebner::LexBucket::value().

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

inline

Check whether polynomial is constant one.

Referenced by polybori::groebner::GroebnerStrategy::addNonTrivialImplicationsDelayed(), polybori::groebner::do_is_rewriteable(), polybori::BooleMonomial::GCDAssign(), polybori::BooleMonomial::LCMDeg(), polybori::groebner::LexBucket::LexBucket(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), print(), polybori::groebner::ReductionTerms::related(), polybori::groebner::LiteralFactorization::trivial(), polybori::groebner::LexBucket::value(), and polybori::groebner::zeros().

bool_type polybori::BoolePolynomial::isPair | ( | ) |  | const

inline

Test, whether we have two terms only.

References polybori::dd_is_pair().

Referenced by polybori::groebner::MonomialPlusOneTerms::isCompatible().

bool_type polybori::BoolePolynomial::isSingleton | ( | ) |  | const

inline

Test, whether we have one term only.

References polybori::dd_is_singleton().

bool_type polybori::BoolePolynomial::isSingletonOrPair | ( | ) |  | const

inline

Test, whether we have one or two terms only.

References polybori::dd_is_singleton_or_pair().

bool_type polybori::BoolePolynomial::isZero | ( | ) |  | const

inline

Check whether polynomial is constant zero.

Referenced by polybori::groebner::SlimgbReduction< variant >::addPolynomial(), polybori::groebner::cancel_monomial_in_tail(), polybori::groebner::cheap_reductions(), compare(), polybori::groebner::NextSpoly::compute(), polybori::groebner::do_is_rewriteable(), eliminationLength(), polybori::BooleMonomial::GCDAssign(), polybori::groebner::ReductionStrategy::headNormalForm(), polybori::groebner::LexBucket::increaseTailStart(), polybori::BooleMonomial::LCMDeg(), leadDeg(), polybori::groebner::LexBucket::LexBucket(), lexLeadDeg(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::nf3(), polybori::groebner::nf3_degree_order(), polybori::groebner::nf3_no_deg_growth(), polybori::BooleMonomial::operator/=(), print(), polybori::groebner::red_tail(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), polybori::groebner::red_tail_short(), polybori::groebner::SlimgbReduction< variant >::reduce(), and polybori::groebner::zeros().

BoolePolynomial::monom_type polybori::BoolePolynomial::lead | ( | ) |  | const

Get leading term.

References polybori::COrderingBase::lead(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by polybori::groebner::cancel_monomial_in_tail(), compare(), polybori::groebner::NextSpoly::compute(), polybori::groebner::ReductionStrategy::headNormalForm(), leadDeg(), polybori::groebner::nf3(), polybori::groebner::nf3_degree_order(), polybori::groebner::nf3_no_deg_growth(), polybori::groebner::nf3_short(), polybori::groebner::LMLessCompare::operator()(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), polybori::groebner::red_tail_short(), polybori::groebner::SlimgbReduction< variant >::reduce(), polybori::groebner::reduce_by_binom(), polybori::groebner::reduce_by_binom_in_tail(), polybori::groebner::reduce_complete(), polybori::groebner::ReductionStrategy::select1(), polybori::spoly(), and polybori::groebner::sum_size().

BoolePolynomial::deg_type polybori::BoolePolynomial::leadDeg | ( | ) |  | const

Degree of the leading term.

References isZero(), lead(), leadFirst(), PBORI_TRACE_FUNC, and PBORI_UNLIKELY.

Referenced by polybori::groebner::common_literal_factors_deg(), eliminationLength(), eliminationLengthWithDegBound(), leadTotalDeg(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::nf3_degree_order(), polybori::groebner::LiteralFactorization::occursAsLeadOfFactor(), and polybori::groebner::GroebnerStrategy::treatVariablePairs().

set_type polybori::BoolePolynomial::leadDivisors | ( | ) |  | const

inline

Get all divisors of the leading term.

References polybori::CCuddDDFacade< RingType, DiagramType >::firstDivisors().

Referenced by polybori::groebner::ReductionStrategy::select_short().

BoolePolynomial::exp_type polybori::BoolePolynomial::leadExp | ( | ) |  | const

Get leading term.

References polybori::COrderingBase::leadExp(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by polybori::groebner::PolynomialSugar::add(), polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), polybori::groebner::LiteralFactorization::LiteralFactorization(), and polybori::groebner::LiteralFactorization::occursAsLeadOfFactor().

BoolePolynomial polybori::BoolePolynomial::leadFirst | ( | ) |  | const

protected

Generate a polynomial, whose first term is the leading term.

References polybori::COrderingBase::leadFirst(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by leadDeg(), and leadStableHash().

BoolePolynomial::hash_type polybori::BoolePolynomial::leadStableHash | ( | ) |  | const

Hash value of the leading term.

References leadFirst(), PBORI_TRACE_FUNC, and polybori::stable_first_hash_range().

BoolePolynomial::deg_type polybori::BoolePolynomial::leadTotalDeg | ( | ) |  | const

Total degree of the leading term.

References leadDeg(), and PBORI_TRACE_FUNC.

BoolePolynomial::size_type polybori::BoolePolynomial::length | ( | ) |  | const

Returns number of terms.

References polybori::BooleSet::length(), and PBORI_TRACE_FUNC.

Referenced by polybori::groebner::PolynomialSugar::add(), eliminationLength(), eliminationLengthWithDegBound(), fetchTerms(), polybori::groebner::reduce_by_binom(), and polybori::groebner::reduce_by_binom_in_tail().

BoolePolynomial::monom_type polybori::BoolePolynomial::lexLead | ( | ) |  | const

Get leading term w.r.t. lexicographical order.

References polybori::LexOrder::lead(), and PBORI_TRACE_FUNC.

Referenced by polybori::groebner::ReductionStrategy::select1().

BoolePolynomial::deg_type polybori::BoolePolynomial::lexLeadDeg | ( | ) |  | const

Degree of the leading term w.r.t. lexicographical ordering.

References firstBegin(), firstEnd(), isZero(), PBORI_TRACE_FUNC, and PBORI_UNLIKELY.

Referenced by polybori::LexOrder::leadExp().

navigator polybori::BoolePolynomial::navigation | ( | ) |  | const

inline

Navigate through structure.

Referenced by begin(), deg(), degBegin(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_plug_1(), expBegin(), genericBegin(), genericExpBegin(), gradedPart(), polybori::groebner::LLReductor::isCompatible(), polybori::LexOrder::lead(), polybori::DegRevLexAscOrder::lead(), polybori::DegLexOrder::lead(), polybori::CBlockOrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::lead(), polybori::DegRevLexAscOrder::leadExp(), polybori::DegLexOrder::leadExp(), polybori::COrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::leadExpIteratorBegin(), polybori::COrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::leadIteratorBegin(), polybori::groebner::multiply(), polybori::groebner::LLReduction< have_redsb, single_call_for_noredsb, fast_multiplication >::multiply(), operator*=(), operator/=(), polybori::groebner::red_tail_in_last_block(), polybori::groebner::translate_indices(), and polybori::groebner::without_prior_part().

BoolePolynomial::size_type polybori::BoolePolynomial::nNodes | ( | ) |  | const

Number of nodes in the decision diagram.

References polybori::CCuddDDFacade< RingType, DiagramType >::nNodes(), and PBORI_TRACE_FUNC.

BoolePolynomial::size_type polybori::BoolePolynomial::nUsedVariables | ( | ) |  | const

Number of variables of the polynomial.

References PBORI_TRACE_FUNC, polybori::BooleMonomial::size(), and usedVariables().

Referenced by polybori::groebner::GroebnerStrategy::treatVariablePairs().

polybori::BoolePolynomial::operator set_type | ( | ) |  | const

inline

Casting operator to Boolean set.

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

inline

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

inline

BoolePolynomial & polybori::BoolePolynomial::operator%= | ( | const var_type & | rhs) |  |

References PBORI_TRACE_FUNC.

BoolePolynomial & polybori::BoolePolynomial::operator%= | ( | const monom_type & | rhs) |  |

References polybori::BooleMonomial::change(), polybori::BooleMonomial::multiples(), PBORI_TRACE_FUNC, and ring().

self& polybori::BoolePolynomial::operator%= | ( | const self & | rhs) |  |

inline

self& polybori::BoolePolynomial::operator%= | ( | constant_type | rhs) |  |

inline

BoolePolynomial & polybori::BoolePolynomial::operator*= | ( | const monom_type & | rhs) |  |

References polybori::dd_multiply_recursively_monom(), polybori::BooleMonomial::diagram(), navigation(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and ring().

BoolePolynomial & polybori::BoolePolynomial::operator*= | ( | const exp_type & | rhs) |  |

References polybori::BooleExponent::begin(), polybori::dd_multiply_recursively_exp(), polybori::BooleExponent::end(), navigation(), PBORI_TRACE_FUNC, and ring().

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

References polybori::dd_multiply_recursively(), navigation(), PBORI_TRACE_FUNC, and ring().

self& polybori::BoolePolynomial::operator*= | ( | constant_type | rhs) |  |

inline

BoolePolynomial & polybori::BoolePolynomial::operator+= | ( | const self & | rhs) |  |

References PBORI_TRACE_FUNC.

self& polybori::BoolePolynomial::operator+= | ( | constant_type | rhs) |  |

inline

const self& polybori::BoolePolynomial::operator- | ( | ) |  | const

inline

template<class RHSType >

self& polybori::BoolePolynomial::operator-= | ( | const RHSType & | rhs) |  |

inline

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

References PBORI_TRACE_FUNC.

Referenced by operator/=().

BoolePolynomial & polybori::BoolePolynomial::operator/= | ( | const monom_type & | rhs) |  |

References polybori::BooleSet::divide(), and PBORI_TRACE_FUNC.

BoolePolynomial & polybori::BoolePolynomial::operator/= | ( | const exp_type & | rhs) |  |

References polybori::BooleExponent::begin(), polybori::dd_divide_recursively_exp(), polybori::BooleExponent::end(), navigation(), PBORI_TRACE_FUNC, and ring().

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

References operator/=(), PBORI_TRACE_FUNC, and PBORI_UNLIKELY.

BoolePolynomial & polybori::BoolePolynomial::operator/= | ( | constant_type | rhs) |  |

References PBORI_TRACE_FUNC, and PBORI_UNLIKELY.

self& polybori::BoolePolynomial::operator= | ( | constant_type | rhs) |  |

inline

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

inline

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

inline

BoolePolynomial::ordered_iterator polybori::BoolePolynomial::orderedBegin | ( | ) |  | const

Start of ordering respecting iterator.

References polybori::COrderingBase::leadIteratorBegin(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by polybori::groebner::BlockOrderHelper::begin(), polybori::groebner::DegOrderHelper::begin(), polybori::groebner::red_tail_general(), polybori::groebner::reduce_by_binom(), and polybori::groebner::FGLMStrategy::setupMultiplicationTables().

BoolePolynomial::ordered_iterator polybori::BoolePolynomial::orderedEnd | ( | ) |  | const

Finish of ordering respecting iterator.

References polybori::COrderingBase::leadIteratorEnd(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by polybori::groebner::BlockOrderHelper::end(), polybori::groebner::DegOrderHelper::end(), polybori::groebner::red_tail_general(), and polybori::groebner::FGLMStrategy::setupMultiplicationTables().

BoolePolynomial::ordered_exp_iterator polybori::BoolePolynomial::orderedExpBegin | ( | ) |  | const

Start of ordering respecting exponent iterator.

References polybori::COrderingBase::leadExpIteratorBegin(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by print().

BoolePolynomial::ordered_exp_iterator polybori::BoolePolynomial::orderedExpEnd | ( | ) |  | const

Finish of ordering respecting exponent iterator.

References polybori::COrderingBase::leadExpIteratorEnd(), polybori::BoolePolyRing::ordering(), PBORI_TRACE_FUNC, and ring().

Referenced by print().

BoolePolynomial::ostream_type & polybori::BoolePolynomial::print | ( | ostream_type & | os) |  | const

Print current polynomial to output stream.

References polybori::dd_print_terms(), isOne(), isZero(), orderedExpBegin(), orderedExpEnd(), PBORI_TRACE_FUNC, and ring().

Referenced by polybori::operator<<().

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

inline

Access ring, where this belongs to.

Referenced by polybori::groebner::add_up_exponents(), polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGeneratorDelayed(), polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), polybori::groebner::GroebnerStrategy::addNonTrivialImplicationsDelayed(), begin(), boundedLead(), boundedLeadExp(), polybori::groebner::cheap_reductions(), deg(), degBegin(), degEnd(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_plug_1(), eliminationLength(), eliminationLengthWithDegBound(), end(), fetchTerms(), polybori::groebner::full_implication_gb(), genericBegin(), genericEnd(), genericExpBegin(), genericExpEnd(), gradedPart(), polybori::groebner::ReductionStrategy::headNormalForm(), polybori::groebner::CacheManager::insert(), inSingleBlock(), polybori::LexOrder::lead(), polybori::DegRevLexAscOrder::lead(), polybori::DegLexOrder::lead(), polybori::CBlockOrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::lead(), lead(), polybori::DegRevLexAscOrder::leadExp(), polybori::DegLexOrder::leadExp(), leadExp(), polybori::COrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::leadExpIteratorBegin(), polybori::COrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::leadExpIteratorEnd(), leadFirst(), polybori::COrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::leadIteratorBegin(), polybori::COrderingFacade< BlockDegRevLexAscOrder, block_dp_asc_tag >::leadIteratorEnd(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::ll_red_nf_generic(), polybori::groebner::CacheManager::lookup(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::groebner::mult_fast_sim(), polybori::groebner::multiply(), polybori::groebner::LLReduction< have_redsb, single_call_for_noredsb, fast_multiplication >::multiply(), polybori::groebner::nf3_lexbuckets(), operator%=(), polybori::groebner::TimesConstantImplication::operator()(), polybori::groebner::TimesVariableSubstitution::operator()(), polybori::groebner::CountCriterion::operator()(), operator*=(), operator/=(), orderedBegin(), orderedEnd(), orderedExpBegin(), orderedExpEnd(), print(), polybori::groebner::red_tail(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), polybori::groebner::red_tail_in_last_block(), polybori::groebner::red_tail_short(), polybori::groebner::reduce_by_monom(), polybori::groebner::ReductionTerms::related(), polybori::groebner::ReductionStrategy::select1(), polybori::groebner::FGLMStrategy::testMultiplicationTables(), polybori::groebner::translate_indices(), polybori::groebner::GroebnerStrategy::treatVariablePairs(), polybori::groebner::LexBucket::updateTailStart(), usedVariables(), polybori::groebner::without_prior_part(), and polybori::groebner::zeros().

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

inline

Get corresponding subset of of the powerset over all variables.

Referenced by polybori::groebner::CountCriterion::operator()(), and usedVariables().

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

inline

Get hash value, which is reproducible.

BoolePolynomial::termlist_type polybori::BoolePolynomial::terms | ( | ) |  | const

Return of all terms.

References fetchTerms(), and PBORI_TRACE_FUNC.

BoolePolynomial::deg_type polybori::BoolePolynomial::totalDeg | ( | ) |  | const

Total maximal degree of the polynomial.

References deg(), and PBORI_TRACE_FUNC.

BoolePolynomial::monom_type polybori::BoolePolynomial::usedVariables | ( | ) |  | const

Set of variables of the polynomial.

References diagram(), PBORI_TRACE_FUNC, ring(), and set().

Referenced by inSingleBlock(), nUsedVariables(), and polybori::groebner::GroebnerStrategy::treatVariablePairs().

BoolePolynomial::exp_type polybori::BoolePolynomial::usedVariablesExp | ( | ) |  | const

Exponent vector of all of variables of the polynomial.

References PBORI_TRACE_FUNC, and polybori::BooleSet::usedVariablesExp().

Referenced by polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), polybori::groebner::CacheManager::insert(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::CacheManager::lookup(), and polybori::groebner::PolyEntryBase::PolyEntryBase().

## Friends And Related Function Documentation

friend class BooleMonomial

friend

Let BooleMonomial access protected and private members.

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

- BoolePolynomial.h
- BoolePolynomial.cc