#include <BooleSet.h>
Public Types | |
typedef self | dd_type |
Generic access to type of *this. | |
typedef CCuddDDFacade < BoolePolyRing, BooleSet > | base |
Generic access to base type. | |
typedef BooleMonomial | term_type |
Type of terms. | |
typedef BooleExponent | exp_type |
Fix type for treatment of exponent vectors. | |
typedef BoolePolyRing | ring_type |
Type for Boolean polynomial rings (without ordering). | |
typedef CGenericIter< LexOrder, navigator, term_type > | const_iterator |
Iterator type for iterating all monomials. | |
typedef CGenericIter< LexOrder, navigator, exp_type > | exp_iterator |
Iterator type for iterating all exponent vectors. | |
typedef CReverseIter< LexOrder, navigator, exp_type > | reverse_exp_iterator |
Iterator type for iterating all exponent vectors. | |
typedef CReverseIter< LexOrder, navigator, term_type > | const_reverse_iterator |
Iterator type for iterating all monomials. | |
Public Member Functions | |
BooleSet (const self &rhs) | |
Copy constructor. | |
BooleSet (const base &rhs) | |
Copy constructor. | |
BooleSet (idx_type idx, const self &first, const self &second) | |
Construct new node. | |
BooleSet (idx_type idx, navigator first, navigator second, const ring_type &ring) | |
Construct new node (using navigator nodes). | |
BooleSet (const ring_type &ring, node_ptr node) | |
Construct new node (using nodes). | |
BooleSet (const ring_type &ring, navigator navi) | |
Construct new node (using navigator nodes). | |
BooleSet (const ring_type &ring) | |
Construct empty set in ring. | |
BooleSet (idx_type idx, const self &rhs) | |
Construct new node (using navigator for then and else-branches). | |
BooleSet (navigator navi, const ring_type &ring) | |
Construct from navigator node. | |
~BooleSet () | |
Destructor. | |
const_iterator | begin () const |
Start of iteration over terms. | |
const_iterator | end () const |
Finish of iteration over terms. | |
const_reverse_iterator | rbegin () const |
Start of backward iteration over terms. | |
const_reverse_iterator | rend () const |
Finish of backward iteration over terms. | |
reverse_exp_iterator | rExpBegin () const |
Start of backward exponent iteration over terms. | |
reverse_exp_iterator | rExpEnd () const |
Finish of backward iteration over terms. | |
exp_iterator | expBegin () const |
Start of iteration over exponent vectors. | |
exp_iterator | expEnd () const |
Finish of iteration over exponent vectors. | |
hash_type | hash () const |
Get unique hash value (valid only per runtime). | |
hash_type | stableHash () const |
Get stable hash value, which is reproducible. | |
term_type | usedVariables () const |
Set of variables of the whole set. | |
exp_type | usedVariablesExp () const |
Exponent vector of variables of the whole set. | |
self | change (idx_type idx) const |
self | add (const term_type &rhs) const |
Add given monomial to sets. | |
bool_type | owns (const term_type &rhs) const |
bool_type | owns (const exp_type &) const |
Check whether rhs is included in *this. | |
term_type | lastLexicographicalTerm () const |
Get last term (wrt. lexicographical order). | |
self | divisorsOf (const term_type &rhs) const |
Compute intersection with divisors of rhs. | |
self | divisorsOf (const exp_type &rhs) const |
Compute intersection with divisors of rhs. | |
self | firstDivisorsOf (const self &rhs) const |
Intersection with divisors of first (lexicographical) term of rhs. | |
self | multiplesOf (const term_type &rhs) const |
Compute intersection with multiples of rhs. | |
self | divide (const term_type &rhs) const |
Division by given term. | |
bool_type | hasTermOfVariables (const term_type &rhs) const |
self | minimalElements () const |
Get minimal elements wrt. inclusion. | |
bool_type | ownsOne () const |
Test whether the empty set is included. | |
bool_type | isSingleton () const |
Test, whether we have one term only. | |
bool_type | isSingletonOrPair () const |
Test, whether we have one or two terms only. | |
bool_type | isPair () const |
Test, whether we have two terms only. | |
self | existAbstract (const term_type &rhs) const |
const self & | diagram () const |
Access internal decision diagram. | |
self | cartesianProduct (const self &rhs) const |
Cartesean product. | |
bool_type | contains (const self &rhs) const |
Test containment. | |
size_type | size () const |
Returns number of terms. | |
size_type | length () const |
Returns number of terms (deprecated). | |
size_type | nVariables () const |
Returns number of variables in manager. | |
double | sizeDouble () const |
Approximation of number of terms. | |
ostream_type & | print (ostream_type &) const |
Print current set to output stream. | |
self | emptyElement () const |
Get corresponding zero element (may be removed in the future). | |
size_type | countIndex (idx_type idx) const |
Count terms containing BooleVariable(idx). | |
double | countIndexDouble (idx_type idx) const |
Count many terms containing BooleVariable(idx). | |
bool_type | containsDivisorsOfDecDeg (const term_type &rhs) const |
Test whether, all divisors of degree -1 of term rhs are contained in this. | |
bool_type | containsDivisorsOfDecDeg (const exp_type &rhs) const |
Test for term corresponding to exponent rhs. |
typedef self polybori::BooleSet::dd_type |
Generic access to type of *this.
Type of terms.
Fix type for treatment of exponent vectors.
Type for Boolean polynomial rings (without ordering).
Reimplemented from polybori::CCuddDDFacade< RingType, DiagramType >.
Iterator type for iterating all monomials.
Iterator type for iterating all exponent vectors.
Iterator type for iterating all exponent vectors.
Iterator type for iterating all monomials.
polybori::BooleSet::BooleSet | ( | const self & | rhs | ) | [inline] |
Copy constructor.
polybori::BooleSet::BooleSet | ( | const base & | rhs | ) | [inline] |
Copy constructor.
Construct new node.
polybori::BooleSet::BooleSet | ( | idx_type | idx, | |
navigator | first, | |||
navigator | second, | |||
const ring_type & | ring | |||
) | [inline] |
Construct new node (using navigator nodes).
Construct new node (using nodes).
Construct new node (using navigator nodes).
polybori::BooleSet::BooleSet | ( | const ring_type & | ring | ) | [inline] |
Construct empty set in ring.
Construct new node (using navigator for then and else-branches).
Construct from navigator node.
polybori::BooleSet::~BooleSet | ( | ) | [inline] |
Destructor.
BooleSet::const_iterator polybori::BooleSet::begin | ( | ) | const |
Start of iteration over terms.
References polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::fix_point_iterate(), polybori::groebner::gen_random_subset(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_multiplied(), polybori::groebner::GroebnerStrategy::minimalize(), print(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::FGLMStrategy::setupStandardMonomialsFromTables(), polybori::groebner::variety_lex_groebner_basis(), and polybori::groebner::variety_lex_leading_terms().
BooleSet::const_iterator polybori::BooleSet::end | ( | ) | const |
Finish of iteration over terms.
References PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::fix_point_iterate(), polybori::groebner::minimal_elements_multiplied(), polybori::groebner::GroebnerStrategy::minimalize(), print(), polybori::groebner::FGLMStrategy::setupStandardMonomialsFromTables(), polybori::groebner::variety_lex_groebner_basis(), and polybori::groebner::variety_lex_leading_terms().
BooleSet::const_reverse_iterator polybori::BooleSet::rbegin | ( | ) | const |
Start of backward iteration over terms.
References polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
BooleSet::const_reverse_iterator polybori::BooleSet::rend | ( | ) | const |
Finish of backward iteration over terms.
References PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
BooleSet::reverse_exp_iterator polybori::BooleSet::rExpBegin | ( | ) | const |
Start of backward exponent iteration over terms.
References polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce().
BooleSet::reverse_exp_iterator polybori::BooleSet::rExpEnd | ( | ) | const |
Finish of backward iteration over terms.
References PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce().
BooleSet::exp_iterator polybori::BooleSet::expBegin | ( | ) | const |
Start of iteration over exponent vectors.
References polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::GroebnerStrategy::checkChainCriterion(), polybori::groebner::LexHelper::irreducible_lead(), polybori::groebner::ReductionStrategy::llReduceAll(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::GroebnerStrategy::normalPairsWithLast(), polybori::groebner::GroebnerStrategy::noroStep(), polybori::groebner::NextSpoly::replacePair(), polybori::groebner::ReductionStrategy::select1(), polybori::groebner::select_largest_degree(), polybori::groebner::select_no_deg_growth(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), polybori::groebner::ReductionStrategy::unmarkNonMinimalLeadingTerms(), and polybori::groebner::FGLMStrategy::writeTailToRow().
BooleSet::exp_iterator polybori::BooleSet::expEnd | ( | ) | const |
Finish of iteration over exponent vectors.
References PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::GroebnerStrategy::checkChainCriterion(), polybori::groebner::LexHelper::irreducible_lead(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::GroebnerStrategy::normalPairsWithLast(), polybori::groebner::GroebnerStrategy::noroStep(), polybori::groebner::NextSpoly::replacePair(), polybori::groebner::select_largest_degree(), polybori::groebner::select_no_deg_growth(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), polybori::groebner::ReductionStrategy::unmarkNonMinimalLeadingTerms(), and polybori::groebner::FGLMStrategy::writeTailToRow().
hash_type polybori::BooleSet::hash | ( | ) | const [inline] |
Get unique hash value (valid only per runtime).
hash_type polybori::BooleSet::stableHash | ( | ) | const [inline] |
BooleSet::term_type polybori::BooleSet::usedVariables | ( | ) | const |
Set of variables of the whole set.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::FGLMStrategy::analyzeGB(), and usedVariablesExp().
BooleSet::exp_type polybori::BooleSet::usedVariablesExp | ( | ) | const |
Exponent vector of variables of the whole set.
References polybori::BooleMonomial::exp(), PBORI_TRACE_FUNC, and usedVariables().
Referenced by polybori::BoolePolynomial::usedVariablesExp().
References PBORI_UNLIKELY.
Referenced by polybori::BoolePolynomial::BoolePolynomial(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::lower_term_accumulate(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::BooleMonomial::operator*=(), polybori::term_accumulate(), and polybori::groebner::translate_indices().
BooleSet::bool_type polybori::BooleSet::owns | ( | const term_type & | rhs | ) | const |
References polybori::CCuddDDFacade< RingType, DiagramType >::isZero(), PBORI_TRACE_FUNC, and polybori::BooleMonomial::set().
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::FGLMStrategy::FGLMStrategy(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::translate_back(), and polybori::groebner::FGLMStrategy::writeRowToVariableDivisors().
BooleSet::bool_type polybori::BooleSet::owns | ( | const exp_type & | rhs | ) | const |
Check whether rhs is included in *this.
References polybori::BooleExponent::begin(), polybori::dd_owns(), polybori::BooleExponent::end(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), and PBORI_TRACE_FUNC.
BooleSet::term_type polybori::BooleSet::lastLexicographicalTerm | ( | ) | const |
Get last term (wrt. lexicographical order).
References polybori::dd_last_lexicographical_term(), polybori::CErrorEnums::illegal_on_zero, polybori::CCuddDDFacade< RingType, DiagramType >::isZero(), PBORI_TRACE_FUNC, and PBORI_UNLIKELY.
Compute intersection with divisors of rhs.
References polybori::BooleMonomial::diagram(), firstDivisorsOf(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), hasTermOfVariables(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_multiplied_monoms(), polybori::groebner::ReductionStrategy::select1(), polybori::groebner::select_largest_degree(), polybori::groebner::select_no_deg_growth(), and polybori::groebner::FGLMStrategy::setupMultiplicationTables().
Compute intersection with divisors of rhs.
References diagram(), firstDivisorsOf(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Intersection with divisors of first (lexicographical) term of rhs.
References polybori::dd_first_divisors_of(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by divisorsOf().
Compute intersection with multiples of rhs.
References polybori::dd_first_multiples_of(), polybori::BooleMonomial::diagram(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Division by given term.
References polybori::dd_divide_recursively(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), polybori::CCuddDDFacade< RingType, DiagramType >::ring(), and polybori::BooleMonomial::set().
Referenced by polybori::BoolePolynomial::operator/=().
BooleSet::bool_type polybori::BooleSet::hasTermOfVariables | ( | const term_type & | rhs | ) | const |
Check for empty intersection with divisors of rhs, i.e. test whether there are terms made of the given variables.
References polybori::BooleMonomial::begin(), polybori::dd_owns_term_of_indices(), divisorsOf(), polybori::BooleMonomial::end(), polybori::CCuddDDFacade< RingType, DiagramType >::isZero(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_ASSERT, and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::irreducible_lead().
BooleSet polybori::BooleSet::minimalElements | ( | ) | const |
Get minimal elements wrt. inclusion.
References polybori::dd_minimal_elements(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::minimal_elements(), and polybori::groebner::variety_lex_leading_terms().
bool_type polybori::BooleSet::ownsOne | ( | ) | const [inline] |
Test whether the empty set is included.
References polybori::owns_one().
Referenced by polybori::groebner::do_is_rewriteable(), polybori::groebner::do_minimal_elements_cudd_style(), and polybori::groebner::minimal_elements_cudd_style_unary().
bool_type polybori::BooleSet::isSingleton | ( | ) | const [inline] |
bool_type polybori::BooleSet::isSingletonOrPair | ( | ) | const [inline] |
bool_type polybori::BooleSet::isPair | ( | ) | const [inline] |
Compute existential abstraction: Given a diagram F
, and a set of variables S
, remove all occurrences of each s
in S
from any subset in F
. This can be implemented by cofactoring F
w.r.t. s
= 1 and s
= 0, then forming their union
References polybori::dd_existential_abstraction(), polybori::BooleMonomial::diagram(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::groebner::minimal_elements_divided(), and polybori::groebner::minimal_elements_multiplied_monoms().
const self& polybori::BooleSet::diagram | ( | ) | const [inline] |
size_type polybori::BooleSet::size | ( | ) | const [inline] |
Returns number of terms.
Referenced by polybori::groebner::FGLMStrategy::analyzeGB(), countIndex(), countIndexDouble(), polybori::groebner::linalg_step(), polybori::groebner::linalg_step_modified(), polybori::groebner::GroebnerStrategy::minimalize(), polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce(), polybori::groebner::GroebnerStrategy::noroStep(), polybori::groebner::CountCriterion::operator()(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::FGLMStrategy::setupStandardMonomialsFromTables(), polybori::groebner::GroebnerStrategy::treatVariablePairs(), and polybori::groebner::variety_lex_leading_terms().
size_type polybori::BooleSet::length | ( | ) | const [inline] |
Returns number of terms (deprecated).
Referenced by polybori::BoolePolynomial::length(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::reduce_complete(), and polybori::groebner::sum_size().
size_type polybori::BooleSet::nVariables | ( | ) | const [inline] |
Returns number of variables in manager.
double polybori::BooleSet::sizeDouble | ( | ) | const [inline] |
Approximation of number of terms.
BooleSet::ostream_type & polybori::BooleSet::print | ( | ostream_type & | os | ) | const |
Print current set to output stream.
References begin(), polybori::dd_print_terms(), end(), polybori::CCuddDDFacade< RingType, DiagramType >::isZero(), PBORI_TRACE_FUNC, and polybori::CCuddDDFacade< RingType, DiagramType >::ring().
Referenced by polybori::operator<<().
self polybori::BooleSet::emptyElement | ( | ) | const [inline] |
Get corresponding zero element (may be removed in the future).
BooleSet::size_type polybori::BooleSet::countIndex | ( | idx_type | idx | ) | const |
double polybori::BooleSet::countIndexDouble | ( | idx_type | idx | ) | const |
BooleSet::bool_type polybori::BooleSet::containsDivisorsOfDecDeg | ( | const term_type & | rhs | ) | const |
Test whether, all divisors of degree -1 of term rhs are contained in this.
References polybori::BooleMonomial::begin(), polybori::dd_contains_divs_of_dec_deg(), polybori::BooleMonomial::end(), and polybori::CCuddDDFacade< RingType, DiagramType >::navigation().
Referenced by polybori::groebner::FGLMStrategy::main().
BooleSet::bool_type polybori::BooleSet::containsDivisorsOfDecDeg | ( | const exp_type & | rhs | ) | const |
Test for term corresponding to exponent rhs.
References polybori::BooleExponent::begin(), polybori::dd_contains_divs_of_dec_deg(), polybori::BooleExponent::end(), and polybori::CCuddDDFacade< RingType, DiagramType >::navigation().