PolyBoRi
|
This template class defines a facade for decision diagrams. More...
#include <CCuddDDFacade.h>
Public Types | |
typedef CTypes::ostream_type | ostream_type |
Type for output streams. | |
typedef RingType | ring_type |
Type for diagrams. | |
typedef DiagramType | diagram_type |
Type for diagrams. | |
typedef DdNode | node_type |
Type for C-style struct. | |
typedef node_type * | node_ptr |
Pointer type for nodes. | |
typedef CApplyNodeFacade < diagram_type, node_ptr > | base |
Type this is inherited from the following. | |
typedef CCuddFirstIter | first_iterator |
Iterator type for retrieving first term from Cudd's ZDDs. | |
typedef CCuddLastIter | last_iterator |
Iterator type for retrieving last term from Cudd's ZDDs. | |
typedef CCuddNavigator | navigator |
Iterator type for navigation throught Cudd's ZDDs structure. | |
typedef valid_tag | easy_equality_property |
This type has an easy equality check. | |
typedef ring_type::mgr_type | mgr_type |
Raw context. | |
typedef int | cudd_idx_type |
Cudd's index type. | |
typedef CCheckedIdx | checked_idx_type |
Cudd's index type. | |
![]() | |
typedef DiagramType | diagram_type |
typedef DdNode * | node_ptr |
![]() | |
typedef bool | bool_type |
Type for standard true/false statements. | |
typedef std::size_t | size_type |
Type for lengths, dimensions, etc. | |
typedef int | deg_type |
Type for polynomial degrees (ranges from -1 to maxint) | |
typedef int | integer_type |
Type for integer numbers. | |
typedef int | idx_type |
Type for indices. | |
typedef std::size_t | hash_type |
Type for hashing. | |
typedef unsigned int | errornum_type |
Type used to store error codes. | |
typedef short int | comp_type |
Type for comparisons. | |
typedef int | ordercode_type |
Type for ordering codes. | |
typedef const char * | errortext_type |
Type used to verbose error information. | |
typedef std::ostream | ostream_type |
Type for out-stream. | |
typedef const char * | vartext_type |
Type for setting/getting names of variables. | |
typedef unsigned long | large_size_type |
large size_type (necessary?) | |
typedef std::size_t | refcount_type |
Type for counting references. | |
Public Member Functions | |
CCuddDDFacade (const ring_type &ring, node_ptr node) | |
Construct diagram from ring and node. | |
CCuddDDFacade (const ring_type &ring, const navigator &navi) | |
Construct from Manager and navigator. | |
CCuddDDFacade (const ring_type &ring, idx_type idx, navigator thenNavi, navigator elseNavi) | |
Construct new node from manager, index, and navigators. | |
CCuddDDFacade (const ring_type &ring, idx_type idx, navigator navi) | |
CCuddDDFacade (idx_type idx, const self &thenDD, const self &elseDD) | |
Construct new node. | |
CCuddDDFacade (const self &from) | |
Copy constructor. | |
~CCuddDDFacade () | |
Destructor. | |
diagram_type & | operator= (const diagram_type &rhs) |
Assignment operator. | |
*bool | implies (const self &rhs) const |
Performs the inclusion test for ZDDs. | |
size_type | count () const |
Determine the number of terms. | |
double | countDouble () const |
Appriximate the number of terms. | |
size_type | rootIndex () const |
Get index of curent node. | |
size_type | nNodes () const |
Number of nodes in the current decision diagram. | |
size_type | refCount () const |
Number of references pointing here. | |
bool | isZero () const |
Test whether diagram represents the empty set. | |
bool | isOne () const |
Test whether diagram represents the empty set. | |
const ring_type & | ring () const |
Get reference to ring. | |
node_ptr | getNode () const |
Get raw node structure. | |
mgr_type * | getManager () const |
Get raw decision diagram manager. | |
diagram_type | Xor (const diagram_type &rhs) const |
Union Xor. | |
diagram_type | divideFirst (const diagram_type &rhs) const |
Division with first term of right-hand side. | |
ostream_type & | print (ostream_type &os) const |
Get number of nodes in decision diagram. | |
first_iterator | firstBegin () const |
Get numbers of used variables. | |
first_iterator | firstEnd () const |
Finish of first term. | |
last_iterator | lastBegin () const |
Start of first term. | |
last_iterator | lastEnd () const |
Finish of first term. | |
diagram_type | firstMultiples (const std::vector< idx_type > &input_multipliers) const |
Get decison diagram representing the multiples of the first term. | |
diagram_type | firstDivisors () const |
Get decison diagram representing the divisors of the first term. | |
navigator | navigation () const |
Navigate through ZDD by incrementThen(), incrementElse(), and terminated() | |
bool_type | isConstant () const |
Checks whether the the diagram corresponds to {} or {{}} (polynomial 0 or 1) | |
Functions for print useful information | |
std::ostream & | printIntern (std::ostream &os) const |
void | PrintMinterm () const |
![]() | |
bool | operator== (const diagram_type &rhs) const |
Equality. | |
bool | operator!= (const diagram_type &rhs) const |
Nonequality. | |
Protected Member Functions | |
template<class ResultType > | |
ResultType | memApply (ResultType(*func)(mgr_type *, node_ptr)) const |
void | checkAssumption (bool isValid) const |
Check whether previous decision diagram operation for validity. | |
template<class ManagerType , class ReverseIterator , class MultReverseIterator > | |
diagram_type | cudd_generate_multiples (const ManagerType &mgr, ReverseIterator start, ReverseIterator finish, MultReverseIterator multStart, MultReverseIterator multFinish) const |
temporarily (needs to be more generic) (similar fct in pbori_algo.h) | |
template<class ManagerType , class ReverseIterator > | |
diagram_type | cudd_generate_divisors (const ManagerType &mgr, ReverseIterator start, ReverseIterator finish) const |
temporarily (needs to be more generic) (similar fct in pbori_algo.h) | |
![]() | |
void | checkSameManager (const diagram_type &other) const |
Test, whether both operands. | |
diagram_type | diagram (node_ptr node) const |
Get diagram of the same context. | |
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr)) const |
Unary function. | |
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr, node_ptr), const diagram_type &rhs) const |
Binary function (two diagrams) | |
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr, node_ptr, node_ptr), const diagram_type &first, const diagram_type &second) const |
Ternary function (three diagrams) | |
diagram_type | apply (node_ptr(*func)(MgrType, node_ptr, Type), Type value) const |
Binary functions with non-diagram right-hand side. | |
ResultType | apply (ResultType(*func)(MgrType, node_ptr)) const |
Unary functions with non-diagram result value. | |
This template class defines a facade for decision diagrams.
typedef CApplyNodeFacade<diagram_type, node_ptr> polybori::CCuddDDFacade< RingType, DiagramType >::base |
Type this is inherited from the following.
typedef CCheckedIdx polybori::CCuddDDFacade< RingType, DiagramType >::checked_idx_type |
Cudd's index type.
typedef int polybori::CCuddDDFacade< RingType, DiagramType >::cudd_idx_type |
Cudd's index type.
typedef DiagramType polybori::CCuddDDFacade< RingType, DiagramType >::diagram_type |
Type for diagrams.
typedef valid_tag polybori::CCuddDDFacade< RingType, DiagramType >::easy_equality_property |
This type has an easy equality check.
typedef CCuddFirstIter polybori::CCuddDDFacade< RingType, DiagramType >::first_iterator |
Iterator type for retrieving first term from Cudd's ZDDs.
typedef CCuddLastIter polybori::CCuddDDFacade< RingType, DiagramType >::last_iterator |
Iterator type for retrieving last term from Cudd's ZDDs.
typedef ring_type::mgr_type polybori::CCuddDDFacade< RingType, DiagramType >::mgr_type |
Raw context.
typedef CCuddNavigator polybori::CCuddDDFacade< RingType, DiagramType >::navigator |
Iterator type for navigation throught Cudd's ZDDs structure.
typedef node_type* polybori::CCuddDDFacade< RingType, DiagramType >::node_ptr |
Pointer type for nodes.
typedef DdNode polybori::CCuddDDFacade< RingType, DiagramType >::node_type |
Type for C-style struct.
typedef CTypes::ostream_type polybori::CCuddDDFacade< RingType, DiagramType >::ostream_type |
Type for output streams.
typedef RingType polybori::CCuddDDFacade< RingType, DiagramType >::ring_type |
Type for diagrams.
|
inline |
Construct diagram from ring and node.
|
inline |
Construct from Manager and navigator.
|
inline |
Construct new node from manager, index, and navigators.
|
inline |
Construct new node from manager, index, and common navigator for then and else-branches
|
inline |
Construct new node.
|
inline |
Copy constructor.
|
inline |
Destructor.
|
inlineprotected |
Check whether previous decision diagram operation for validity.
|
inline |
Determine the number of terms.
|
inline |
Appriximate the number of terms.
|
inlineprotected |
temporarily (needs to be more generic) (similar fct in pbori_algo.h)
|
inlineprotected |
temporarily (needs to be more generic) (similar fct in pbori_algo.h)
|
inline |
Division with first term of right-hand side.
|
inline |
Get numbers of used variables.
Start of first term
Referenced by polybori::CCuddDDFacade< BoolePolyRing, BooleSet >::divideFirst(), polybori::BoolePolynomial::firstBegin(), and polybori::BooleExponent::multiplyFirst().
|
inline |
Get decison diagram representing the divisors of the first term.
Referenced by polybori::BoolePolynomial::firstDivisors(), and polybori::BoolePolynomial::leadDivisors().
|
inline |
Finish of first term.
Referenced by polybori::CCuddDDFacade< BoolePolyRing, BooleSet >::divideFirst(), polybori::BoolePolynomial::firstEnd(), and polybori::BooleExponent::multiplyFirst().
|
inline |
Get decison diagram representing the multiples of the first term.
|
inline |
Get raw decision diagram manager.
Referenced by polybori::CApplyNodeFacade< BooleSet, DdNode * >::checkSameManager().
|
inline |
Get raw node structure.
Referenced by polybori::CApplyNodeFacade< BooleSet, DdNode * >::operator==(), and polybori::CCuddDDFacade< BoolePolyRing, BooleSet >::Xor().
|
inline |
Performs the inclusion test for ZDDs.
|
inline |
Checks whether the the diagram corresponds to {} or {{}} (polynomial 0 or 1)
|
inline |
Test whether diagram represents the empty set.
|
inline |
Test whether diagram represents the empty set.
Referenced by polybori::groebner::GroebnerStrategy::addAsYouWish(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::LexHelper::irreducible_lead(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::minimal_elements_multiplied_monoms(), polybori::groebner::mod_var_set(), polybori::COrderingBase::monom(), polybori::groebner::ReductionStrategy::select1(), polybori::groebner::select_largest_degree(), polybori::groebner::select_no_deg_growth(), polybori::groebner::MinimalLeadingTerms::update(), polybori::CCuddDDFacade< BoolePolyRing, BooleSet >::Xor(), and polybori::groebner::zeros().
|
inline |
Start of first term.
|
inline |
Finish of first term.
|
inlineprotected |
|
inline |
Navigate through ZDD by incrementThen(), incrementElse(), and terminated()
Referenced by polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables(), polybori::groebner::contained_variables_cudd_style(), polybori::BooleSet::divide(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_is_rewriteable(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::do_plug_1(), polybori::BooleSet::existAbstract(), polybori::groebner::include_divisors(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::ll_red_nf_generic(), polybori::groebner::map_every_x_to_x_plus_one(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_mon_set(), polybori::groebner::mod_var_set(), polybori::BooleSet::multiplesOf(), polybori::BoolePolynomial::operator*=(), polybori::groebner::recursively_insert(), and polybori::groebner::zeros().
|
inline |
Number of nodes in the current decision diagram.
Referenced by polybori::BoolePolynomial::nNodes(), and polybori::groebner::CountCriterion::operator()().
|
inline |
Assignment operator.
|
inline |
Get number of nodes in decision diagram.
|
inline |
|
inline |
|
inline |
Number of references pointing here.
|
inline |
Get reference to ring.
Referenced by polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables_cudd_style(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::groebner::include_divisors(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_cudd_style(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::minimal_elements_divided(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::GroebnerStrategy::minimalize(), polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_mon_set(), polybori::groebner::mod_var_set(), polybori::groebner::PairManager::nextSpoly(), polybori::groebner::random_interpolation(), polybori::groebner::recursively_insert(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), polybori::groebner::variety_lex_leading_terms(), and polybori::groebner::zeros().
|
inline |
Get index of curent node.
|
inline |
Union Xor.
Referenced by polybori::groebner::zeros().