PolyBoRi
|
This class wraps the underlying decicion diagram type and defines the necessary operations. More...
#include <BoolePolynomial.h>
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 |
![]() | |
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... | |
This class wraps the underlying decicion diagram type and defines the necessary operations.
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 |
Type for result of polynomial comparisons.
Iterator type for iterating over all monomials.
Type for wrapping integer and bool values.
typedef binary_composition< std::minus<size_type>, project_ith<1>, integral_constant<size_type, 1> > polybori::BoolePolynomial::decrement_type |
Decrementation functional type.
Iterator type for iterating all monomials (dereferencing to degree)
typedef CGenericIter<DegRevLexAscOrder, navigator, exp_type> polybori::BoolePolynomial::dp_asc_exp_iterator |
typedef CGenericIter<DegRevLexAscOrder, navigator, monom_type> polybori::BoolePolynomial::dp_asc_iterator |
The property whether the equality check is easy is inherited from dd_type.
Iterator type for iterating all exponent vectors.
Fix type for treatment of exponent vectors.
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.
Fix type for treatment of monomials.
Iterator-like type for navigating through diagram structure.
Iterator type for iterating over all exponents in ordering order.
Iterator type for iterating over all monomials in ordering order.
typedef std::map<self, std::vector<self>, symmetric_composition< std::less<navigator>, navigates<self> > > polybori::BoolePolynomial::poly_vec_map_type |
Type for Boolean polynomial rings (without ordering)
Generic access to current type.
Type for sets of Boolean variables.
typedef std::vector<monom_type> polybori::BoolePolynomial::termlist_type |
Type for lists of terms.
Fix type for treatment of monomials.
|
inline |
Default constructor.
Construct polynomial from a constant value 0 or 1 Construct zero polynomial
|
inline |
Construct polynomial in given ring
from a constant value 0 or 1.
|
inline |
Construct polynomial from decision diagram.
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().
Construct polynomial from navigator.
References polybori::CCuddNavigator::isValid(), and PBORI_ASSERT.
|
inline |
Destructor.
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)
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)
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.
|
inline |
gives a copy of the diagram
BoolePolynomial::deg_type polybori::BoolePolynomial::deg | ( | ) | const |
Maximal degree of the polynomial.
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().
|
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().
|
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 |
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().
|
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().
|
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().
|
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().
|
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().
|
inlineprotected |
Access to internal decision diagramm structure.
Referenced by polybori::BooleMonomial::operator*=().
|
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().
|
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().
|
inline |
Test, whether we have two terms only.
References polybori::dd_is_pair().
Referenced by polybori::groebner::MonomialPlusOneTerms::isCompatible().
|
inline |
Test, whether we have one term only.
References polybori::dd_is_singleton().
|
inline |
Test, whether we have one or two terms only.
References polybori::dd_is_singleton_or_pair().
|
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().
|
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().
|
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().
|
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().
|
inline |
Casting operator to Boolean set.
|
inline |
BoolePolynomial & polybori::BoolePolynomial::operator%= | ( | const var_type & | rhs | ) |
References PBORI_TRACE_FUNC.
BoolePolynomial & polybori::BoolePolynomial::operator%= | ( | const monom_type & | rhs | ) |
|
inline |
BoolePolynomial & polybori::BoolePolynomial::operator*= | ( | const monom_type & | rhs | ) |
BoolePolynomial & polybori::BoolePolynomial::operator*= | ( | const exp_type & | rhs | ) |
BoolePolynomial & polybori::BoolePolynomial::operator*= | ( | const self & | rhs | ) |
References polybori::dd_multiply_recursively(), navigation(), PBORI_TRACE_FUNC, and ring().
|
inline |
BoolePolynomial & polybori::BoolePolynomial::operator+= | ( | const self & | rhs | ) |
References PBORI_TRACE_FUNC.
|
inline |
|
inline |
|
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 | ) |
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.
|
inline |
|
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<<().
|
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().
|
inline |
Get corresponding subset of of the powerset over all variables.
Referenced by polybori::groebner::CountCriterion::operator()().
|
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, and ring().
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().
|
friend |
Let BooleMonomial access protected and private members.