PolyBoRi
|
#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. |
Generic access to base type.
Reimplemented from polybori::CCuddDDFacade< BoolePolyRing, BooleSet >.
Iterator type for iterating all monomials.
Iterator type for iterating all monomials.
typedef self polybori::BooleSet::dd_type |
Generic access to type of *this.
Iterator type for iterating all exponent vectors.
Fix type for treatment of exponent vectors.
Iterator type for iterating all exponent vectors.
Type for Boolean polynomial rings (without ordering)
Reimplemented from polybori::CCuddDDFacade< BoolePolyRing, BooleSet >.
Type of terms.
polybori::BooleSet::BooleSet | ( | const self & | rhs | ) | [inline] |
Copy constructor.
polybori::BooleSet::BooleSet | ( | const base & | rhs | ) | [inline] |
Copy constructor.
polybori::BooleSet::BooleSet | ( | idx_type | idx, |
const self & | first, | ||
const self & | second | ||
) | [inline] |
Construct new node.
polybori::BooleSet::BooleSet | ( | idx_type | idx, |
navigator | first, | ||
navigator | second, | ||
const ring_type & | ring | ||
) | [inline] |
Construct new node (using navigator nodes)
polybori::BooleSet::BooleSet | ( | const ring_type & | ring, |
node_ptr | node | ||
) | [inline] |
Construct new node (using nodes)
polybori::BooleSet::BooleSet | ( | const ring_type & | ring, |
navigator | navi | ||
) | [inline] |
Construct new node (using navigator nodes)
polybori::BooleSet::BooleSet | ( | const ring_type & | ring | ) | [inline] |
Construct empty set in ring.
polybori::BooleSet::BooleSet | ( | idx_type | idx, |
const self & | rhs | ||
) | [inline] |
Construct new node (using navigator for then and else-branches)
polybori::BooleSet::BooleSet | ( | navigator | navi, |
const ring_type & | ring | ||
) | [inline] |
Construct from navigator node.
polybori::BooleSet::~BooleSet | ( | ) | [inline] |
Destructor.
BooleSet polybori::BooleSet::add | ( | const term_type & | rhs | ) | const |
Add given monomial to sets.
References PBORI_TRACE_FUNC, and polybori::BooleMonomial::set().
Start of iteration over terms.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::gen_random_subset(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_multiplied(), polybori::groebner::GroebnerStrategy::minimalize(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::variety_lex_groebner_basis(), and polybori::groebner::variety_lex_leading_terms().
self polybori::BooleSet::cartesianProduct | ( | const self & | rhs | ) | const [inline] |
Cartesean product.
Referenced by polybori::groebner::FGLMStrategy::setupMultiplicationTables().
self polybori::BooleSet::change | ( | idx_type | idx | ) | const [inline] |
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::groebner::multiply_with_literal_factors(), polybori::BooleMonomial::operator*=(), polybori::term_accumulate(), and polybori::groebner::translate_indices().
bool_type polybori::BooleSet::contains | ( | const self & | rhs | ) | const [inline] |
Test containment.
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(), and polybori::BooleMonomial::end().
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(), and polybori::BooleExponent::end().
BooleSet::size_type polybori::BooleSet::countIndex | ( | idx_type | idx | ) | const |
Count terms containing BooleVariable(idx)
References polybori::count_index().
double polybori::BooleSet::countIndexDouble | ( | idx_type | idx | ) | const |
Count many terms containing BooleVariable(idx)
References polybori::count_index().
const self& polybori::BooleSet::diagram | ( | ) | const [inline] |
Access internal decision diagram.
Referenced by polybori::BooleMonomial::diagram().
BooleSet polybori::BooleSet::divide | ( | const term_type & | rhs | ) | const |
Division by given term.
References polybori::dd_divide_recursively(), polybori::CCuddDDFacade< RingType, DiagramType >::navigation(), and polybori::BooleMonomial::set().
Referenced by polybori::BoolePolynomial::operator/=().
BooleSet polybori::BooleSet::divisorsOf | ( | const term_type & | rhs | ) | const |
Compute intersection with divisors of rhs.
References polybori::BooleMonomial::diagram(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::GroebnerStrategy::addGeneratorTrySplit(), polybori::groebner::FGLMStrategy::main(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_multiplied_monoms(), polybori::groebner::NextSpoly::replacePair(), polybori::groebner::ReductionStrategy::select1(), polybori::groebner::select_largest_degree(), and polybori::groebner::select_no_deg_growth().
BooleSet polybori::BooleSet::divisorsOf | ( | const exp_type & | rhs | ) | const |
Compute intersection with divisors of rhs.
References PBORI_TRACE_FUNC.
self polybori::BooleSet::emptyElement | ( | ) | const [inline] |
Get corresponding zero element (may be removed in the future)
Finish of iteration over terms.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::minimal_elements_multiplied(), polybori::groebner::GroebnerStrategy::minimalize(), polybori::groebner::variety_lex_groebner_basis(), and polybori::groebner::variety_lex_leading_terms().
BooleSet polybori::BooleSet::existAbstract | ( | const term_type & | rhs | ) | const |
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(), and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::minimal_elements_divided(), and polybori::groebner::minimal_elements_multiplied_monoms().
Start of iteration over exponent vectors.
References PBORI_TRACE_FUNC.
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::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().
Finish of iteration over exponent vectors.
References PBORI_TRACE_FUNC.
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::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().
BooleSet polybori::BooleSet::firstDivisorsOf | ( | const self & | rhs | ) | const |
Intersection with divisors of first (lexicographical) term of rhs.
References polybori::dd_first_divisors_of(), and PBORI_TRACE_FUNC.
hash_type polybori::BooleSet::hash | ( | ) | const [inline] |
Get unique hash value (valid only per runtime)
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(), polybori::BooleMonomial::end(), PBORI_ASSERT, and PBORI_TRACE_FUNC.
Referenced by polybori::groebner::irreducible_lead().
bool_type polybori::BooleSet::isPair | ( | ) | const [inline] |
Test, whether we have two terms only.
References polybori::dd_is_pair().
bool_type polybori::BooleSet::isSingleton | ( | ) | const [inline] |
Test, whether we have one term only.
References polybori::dd_is_singleton().
bool_type polybori::BooleSet::isSingletonOrPair | ( | ) | const [inline] |
Test, whether we have one or two terms only.
References polybori::dd_is_singleton_or_pair().
Get last term (wrt. lexicographical order)
References polybori::dd_last_lexicographical_term(), PBORI_TRACE_FUNC, and PBORI_UNLIKELY.
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().
BooleSet polybori::BooleSet::minimalElements | ( | ) | const |
Get minimal elements wrt. inclusion.
References polybori::dd_minimal_elements().
Referenced by polybori::groebner::minimal_elements(), and polybori::groebner::variety_lex_leading_terms().
BooleSet polybori::BooleSet::multiplesOf | ( | const term_type & | rhs | ) | const |
Compute intersection with multiples of rhs.
References polybori::dd_first_multiples_of(), polybori::BooleMonomial::diagram(), and polybori::CCuddDDFacade< RingType, DiagramType >::navigation().
Referenced by polybori::groebner::reduce_by_binom().
size_type polybori::BooleSet::nVariables | ( | ) | const [inline] |
Returns number of variables in manager.
BooleSet::bool_type polybori::BooleSet::owns | ( | const term_type & | rhs | ) | const |
References PBORI_TRACE_FUNC, and polybori::BooleMonomial::set().
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), and polybori::groebner::FGLMStrategy::FGLMStrategy().
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(), and PBORI_TRACE_FUNC.
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().
BooleSet::ostream_type & polybori::BooleSet::print | ( | ostream_type & | os | ) | const |
Print current set to output stream.
Reimplemented from polybori::CCuddDDFacade< BoolePolyRing, BooleSet >.
References polybori::dd_print_terms(), and PBORI_TRACE_FUNC.
Referenced by polybori::operator<<().
Start of backward iteration over terms.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::FGLMStrategy::setupMultiplicationTables().
Finish of backward iteration over terms.
References PBORI_TRACE_FUNC.
Start of backward exponent iteration over terms.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce().
Finish of backward iteration over terms.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce().
size_type polybori::BooleSet::size | ( | ) | const [inline] |
Returns number of terms.
Referenced by polybori::groebner::FGLMStrategy::analyzeGB(), polybori::groebner::GroebnerStrategy::minimalize(), polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce(), polybori::groebner::CountCriterion::operator()(), polybori::groebner::FGLMStrategy::setupMultiplicationTables(), polybori::groebner::GroebnerStrategy::treatVariablePairs(), and polybori::groebner::variety_lex_leading_terms().
double polybori::BooleSet::sizeDouble | ( | ) | const [inline] |
Approximation of number of terms.
hash_type polybori::BooleSet::stableHash | ( | ) | const [inline] |
Get stable hash value, which is reproducible.
References polybori::stable_hash_range().
Set of variables of the whole set.
References PBORI_TRACE_FUNC.
Referenced by polybori::groebner::FGLMStrategy::analyzeGB().
Exponent vector of variables of the whole set.
References PBORI_TRACE_FUNC.
Referenced by polybori::BoolePolynomial::usedVariablesExp().