#include <BooleSet.h>
Public Types | |
typedef BooleSet | self |
Generic access to type of *this. | |
typedef CTypes::dd_type | base |
Generic access to base type. | |
typedef base | dd_type |
Generic access to underlying diagram type. | |
typedef base::navigator | navigator |
Iterator type for navigation throught Cudd's ZDDs structure. | |
typedef base::size_type | size_type |
Define size type. | |
typedef base::idx_type | idx_type |
Define index type. | |
typedef BooleMonomial | term_type |
Type of terms. | |
typedef BooleExponent | exp_type |
Fix type for treatment of exponent vectors. | |
typedef BooleRing | 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. | |
Public Member Functions | |
BooleSet () | |
Default constructor. | |
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 (idx_type idx, const self &rhs) | |
Construct new node (using navigator for then and else-branches). | |
BooleSet (navigator navi, const ring_type &ring) | |
Construct one or zero set from constant. | |
~BooleSet () | |
Destructor. | |
const_iterator | begin () const |
Start of iteration over terms. | |
const_iterator | end () const |
Finish of iteration over terms. | |
exp_iterator | expBegin () const |
Start of iteration over exponent vectors. | |
exp_iterator | expEnd () const |
Finish of iteration over exponent vectors. | |
self & | operator= (const self &) |
Assignment operator. | |
term_type | usedVariables () const |
Set of variables of the whole set. | |
exp_type | usedVariablesExp () const |
Exponent vector of variables of the whole set. | |
self & | addAssign (const term_type &) |
Add given monomial to sets and assign. | |
self | add (const term_type &) const |
Add given monomial to sets. | |
bool_type | owns (const term_type &) const |
Check whether rhs is included in *this. | |
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. | |
self & | divideAssign (const term_type &rhs) |
Division with assignment by given term. | |
bool_type | hasTermOfVariables (const term_type &rhs) const |
Check for empty intersection with divisors of rhs. | |
self | minimalElements () const |
Get minimal elements wrt. inclusion. | |
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 |
Compute existential abstraction. | |
const dd_type & | diagram () const |
Access internal decision diagram. | |
self | ite (const self &then_dd, const self &else_dd) |
If-Then-Else operation. | |
self & | iteAssign (const self &then_dd, const self &else_dd) |
If-Then-Else operation with assignment. | |
self | cartesianProduct (const self &rhs) const |
Cartesean product. | |
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). | |
ring_type | ring () const |
Access ring, where this belongs to. | |
Members from base | |
self | subset0 (idx_type idx) const |
self | subset1 (idx_type idx) const |
self | change (idx_type idx) const |
self | unite (const self &rhs) const |
self | diff (const self &rhs) const |
self | diffConst (const self &rhs) const |
self | intersect (const self &rhs) const |
self | product (const self &rhs) const |
self | dotProduct (const self &rhs) const |
self | Xor (const self &rhs) const |
self | ddDivide (const self &rhs) const |
self | weakDivide (const self &rhs) const |
self | divideFirst (const self &rhs) const |
self & | subset0Assign (idx_type idx) |
self & | subset1Assign (idx_type idx) |
self & | changeAssign (idx_type idx) |
self & | uniteAssign (const self &rhs) |
self & | diffAssign (const self &rhs) |
self & | diffConstAssign (const self &rhs) |
self & | intersectAssign (const self &rhs) |
self & | productAssign (const self &rhs) |
self & | dotProductAssign (const self &rhs) |
self & | ddDivideAssign (const self &rhs) |
self & | weakDivideAssign (const self &rhs) |
self & | divideFirstAssign (const self &rhs) |
Iterator type for iterating all monomials.
typedef base polybori::BooleSet::dd_type |
Generic access to underlying diagram type.
Iterator type for iterating all exponent vectors.
Fix type for treatment of exponent vectors.
Iterator type for navigation throught Cudd's ZDDs structure.
Reimplemented from polybori::CDDInterface< CuddLikeZDD >.
Type for Boolean polynomial rings (without ordering).
typedef BooleSet polybori::BooleSet::self |
Type of terms.
polybori::BooleSet::BooleSet | ( | ) |
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 navigator for then and else-branches).
Construct one or zero set from constant.
polybori::BooleSet::~BooleSet | ( | ) | [inline] |
Destructor.
Add given monomial to sets and assign.
References polybori::BooleMonomial::diagram(), PBORI_TRACE_FUNC, and uniteAssign().
BooleSet::const_iterator polybori::BooleSet::begin | ( | ) | const |
Start of iteration over terms.
References polybori::CDDInterface< CuddLikeZDD >::managerCore(), polybori::CDDInterface< CuddLikeZDD >::navigation(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::gen_random_subset(), polybori::groebner::minimal_elements_internal(), polybori::groebner::GroebnerStrategy::minimalize(), print(), polybori::groebner::GroebnerStrategy::treatNormalPairs(), polybori::groebner::variety_lex_groebner_basis(), and polybori::groebner::variety_lex_leading_terms().
BooleSet::size_type polybori::BooleSet::countIndex | ( | idx_type | idx | ) | const |
Count terms containing BooleVariable(idx).
References polybori::count_index(), and polybori::CDDInterface< CuddLikeZDD >::size().
double polybori::BooleSet::countIndexDouble | ( | idx_type | idx | ) | const |
Count many terms containing BooleVariable(idx).
References polybori::count_index(), and polybori::CDDInterface< CuddLikeZDD >::size().
const dd_type& polybori::BooleSet::diagram | ( | ) | const [inline] |
Referenced by polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::do_plug_1(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::nf_lex_points(), polybori::groebner::random_interpolation(), polybori::groebner::variety_lex_leading_terms(), and polybori::groebner::zeros().
Division by given term.
References polybori::BooleMonomial::diagram(), and polybori::CDDInterface< dd_base >::divideFirst().
Division with assignment by given term.
References polybori::BooleMonomial::diagram(), and polybori::CDDInterface< dd_base >::divideFirstAssign().
Compute intersection with divisors of rhs.
References diagram(), firstDivisorsOf(), PBORI_TRACE_FUNC, and ring().
Compute intersection with divisors of rhs.
References polybori::BooleMonomial::diagram(), firstDivisorsOf(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::add4ImplDelayed(), polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), polybori::groebner::GroebnerStrategy::addHigherImplDelayedUsing4(), hasTermOfVariables(), polybori::groebner::PairManager::replacePair(), polybori::groebner::select1(), and polybori::groebner::select_no_deg_growth().
self polybori::BooleSet::emptyElement | ( | ) | const [inline] |
Get corresponding zero element (may be removed in the future).
Reimplemented from polybori::CDDInterface< CuddLikeZDD >.
BooleSet::const_iterator polybori::BooleSet::end | ( | ) | const |
Finish of iteration over terms.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::minimalize(), print(), polybori::groebner::GroebnerStrategy::treatNormalPairs(), polybori::groebner::variety_lex_groebner_basis(), and polybori::groebner::variety_lex_leading_terms().
Compute existential abstraction.
References polybori::dd_existential_abstraction(), polybori::BooleMonomial::diagram(), polybori::CDDInterface< dd_base >::manager(), polybori::CDDInterface< dd_base >::navigation(), polybori::CDDInterface< CuddLikeZDD >::navigation(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addGenerator().
BooleSet::exp_iterator polybori::BooleSet::expBegin | ( | ) | const |
Start of iteration over exponent vectors.
References polybori::CDDInterface< dd_base >::managerCore(), polybori::CDDInterface< dd_base >::navigation(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::addPolynomialToReductor(), polybori::groebner::PairManager::cleanTopByChainCriterion(), polybori::groebner::LexHelper::irreducible_lead(), polybori::groebner::GroebnerStrategy::llReduceAll(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce(), polybori::groebner::PairManager::replacePair(), polybori::groebner::select1(), polybori::groebner::select_no_deg_growth(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), and polybori::groebner::GroebnerStrategy::treatNormalPairs().
BooleSet::exp_iterator polybori::BooleSet::expEnd | ( | ) | const |
Finish of iteration over exponent vectors.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::PairManager::cleanTopByChainCriterion(), polybori::groebner::LexHelper::irreducible_lead(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce(), polybori::groebner::PairManager::replacePair(), polybori::groebner::select1(), polybori::groebner::select_no_deg_growth(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), and polybori::groebner::GroebnerStrategy::treatNormalPairs().
Intersection with divisors of first (lexicographical) term of rhs.
References polybori::dd_first_divisors_of(), polybori::CDDInterface< CuddLikeZDD >::manager(), polybori::CDDInterface< CuddLikeZDD >::navigation(), and PBORI_TRACE_FUNC.
Referenced by divisorsOf().
BooleSet::bool_type polybori::BooleSet::hasTermOfVariables | ( | const term_type & | rhs | ) | const |
Check for empty intersection with divisors of rhs.
References polybori::BooleMonomial::begin(), polybori::dd_owns_term_of_indices(), divisorsOf(), polybori::CDDInterface< CuddLikeZDD >::emptiness(), polybori::BooleMonomial::end(), polybori::CDDInterface< CuddLikeZDD >::navigation(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::PairManager::cleanTopByChainCriterion(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::LexHelper::irreducible_lead(), owns(), polybori::groebner::sum_size(), and polybori::groebner::GroebnerStrategy::treatNormalPairs().
bool_type polybori::BooleSet::isPair | ( | ) | const [inline] |
bool_type polybori::BooleSet::isSingleton | ( | ) | const [inline] |
bool_type polybori::BooleSet::isSingletonOrPair | ( | ) | const [inline] |
If-Then-Else operation.
If-Then-Else operation with assignment.
BooleSet::term_type polybori::BooleSet::lastLexicographicalTerm | ( | ) | const |
Get last term (wrt. lexicographical order).
References polybori::dd_last_lexicographical_term(), and PBORI_TRACE_FUNC.
BooleSet polybori::BooleSet::minimalElements | ( | ) | const |
Get minimal elements wrt. inclusion.
Reimplemented from polybori::CDDInterface< CuddLikeZDD >.
References polybori::dd_minimal_elements(), polybori::CCuddNavigator::decRef(), polybori::CDDInterface< CuddLikeZDD >::manager(), polybori::CDDInterface< CuddLikeZDD >::navigation(), polybori::CCuddNavigator::recursiveDecRef(), ring(), and polybori::CDDInterface< CuddLikeZDD >::usedIndices().
Referenced by polybori::groebner::minimal_elements(), and polybori::groebner::variety_lex_leading_terms().
Compute intersection with multiples of rhs.
References polybori::dd_first_multiples_of(), polybori::BooleMonomial::diagram(), polybori::CDDInterface< dd_base >::manager(), and polybori::CDDInterface< CuddLikeZDD >::navigation().
Referenced by polybori::groebner::GroebnerStrategy::addGenerator().
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::CDDInterface< CuddLikeZDD >::navigation(), and PBORI_TRACE_FUNC.
BooleSet::bool_type polybori::BooleSet::owns | ( | const term_type & | rhs | ) | const |
Check whether rhs is included in *this.
References polybori::BooleMonomial::diagram(), polybori::CDDInterface< CuddLikeZDD >::emptiness(), intersect(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish().
BooleSet::ostream_type & polybori::BooleSet::print | ( | ostream_type & | os | ) | const |
Print current set to output stream.
Reimplemented from polybori::CDDInterface< CuddLikeZDD >.
References begin(), polybori::dd_print_terms(), polybori::CDDInterface< dd_base >::emptiness(), end(), polybori::CDDInterface< CuddLikeZDD >::managerCore(), and PBORI_TRACE_FUNC.
Referenced by polybori::operator<<().
ring_type polybori::BooleSet::ring | ( | ) | const [inline] |
Access ring, where this belongs to.
Referenced by divisorsOf(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_internal2(), and minimalElements().
Referenced by polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::minimal_elements_internal3(), and polybori::groebner::zeros().
Referenced by polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::reduce_by_monom(), polybori::groebner::reduce_complete(), polybori::groebner::sum_size(), and polybori::groebner::zeros().
Referenced by polybori::groebner::GroebnerStrategy::addGenerator(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::GroebnerStrategy::llReduceAll(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::GroebnerStrategy::propagate_step(), polybori::groebner::GroebnerStrategy::treat_m_p_1_case(), and polybori::groebner::variety_lex_leading_terms().
Referenced by addAssign(), and polybori::groebner::GroebnerStrategy::addGenerator().
BooleSet::term_type polybori::BooleSet::usedVariables | ( | ) | const |
BooleSet::exp_type polybori::BooleSet::usedVariablesExp | ( | ) | const |
Exponent vector of variables of the whole set.
References PBORI_TRACE_FUNC, and polybori::CDDInterface< CuddLikeZDD >::usedIndices().
Referenced by polybori::groebner::zeros().