#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. | |
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) | |
| ~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 |
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) | |
| typedef CTypes::ostream_type polybori::CCuddDDFacade< RingType, DiagramType >::ostream_type |
| typedef RingType polybori::CCuddDDFacade< RingType, DiagramType >::ring_type |
| typedef DiagramType polybori::CCuddDDFacade< RingType, DiagramType >::diagram_type |
| typedef DdNode polybori::CCuddDDFacade< RingType, DiagramType >::node_type |
Type for C-style struct.
| typedef node_type* polybori::CCuddDDFacade< RingType, DiagramType >::node_ptr |
| typedef CApplyNodeFacade<diagram_type, node_ptr> polybori::CCuddDDFacade< RingType, DiagramType >::base |
| 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 CCuddNavigator polybori::CCuddDDFacade< RingType, DiagramType >::navigator |
Iterator type for navigation throught Cudd's ZDDs structure.
| typedef valid_tag polybori::CCuddDDFacade< RingType, DiagramType >::easy_equality_property |
This type has an easy equality check.
| typedef ring_type::mgr_type polybori::CCuddDDFacade< RingType, DiagramType >::mgr_type |
Raw context.
| typedef int polybori::CCuddDDFacade< RingType, DiagramType >::cudd_idx_type |
Cudd's index type.
| typedef CCheckedIdx polybori::CCuddDDFacade< RingType, DiagramType >::checked_idx_type |
Cudd's index type.
| polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade | ( | const ring_type & | ring, | |
| node_ptr | node | |||
| ) | [inline] |
Construct diagram from ring and node.
| polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade | ( | const ring_type & | ring, | |
| const navigator & | navi | |||
| ) | [inline] |
Construct from Manager and navigator.
| polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade | ( | const ring_type & | ring, | |
| idx_type | idx, | |||
| navigator | thenNavi, | |||
| navigator | elseNavi | |||
| ) | [inline] |
Construct new node from manager, index, and navigators.
| polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade | ( | const ring_type & | ring, | |
| idx_type | idx, | |||
| navigator | navi | |||
| ) | [inline] |
Construct new node from manager, index, and common navigator for then and else-branches
| polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade | ( | idx_type | idx, | |
| const self & | thenDD, | |||
| const self & | elseDD | |||
| ) | [inline] |
Construct new node.
| polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade | ( | const self & | from | ) | [inline] |
| polybori::CCuddDDFacade< RingType, DiagramType >::~CCuddDDFacade | ( | ) | [inline] |
Destructor.
| diagram_type& polybori::CCuddDDFacade< RingType, DiagramType >::operator= | ( | const diagram_type & | rhs | ) | [inline] |
Assignment operator.
| * bool polybori::CCuddDDFacade< RingType, DiagramType >::implies | ( | const self & | rhs | ) | const [inline] |
Performs the inclusion test for ZDDs.
BOOST_PP_SEQ_FOR_EACH(PB_ZDD_APPLY, const diagram_type&, (Product)(UnateProduct)(WeakDiv)(Divide)(WeakDivF)(DivideF) (Union)(Intersect)(Diff)) BOOST_PP_SEQ_FOR_EACH(PB_ZDD_APPLY, int, (Subset1)(Subset0)(Change))
| std::ostream& polybori::CCuddDDFacade< RingType, DiagramType >::printIntern | ( | std::ostream & | os | ) | const [inline] |
| void polybori::CCuddDDFacade< RingType, DiagramType >::PrintMinterm | ( | ) | const [inline] |
| size_type polybori::CCuddDDFacade< RingType, DiagramType >::count | ( | ) | const [inline] |
Determine the number of terms.
| double polybori::CCuddDDFacade< RingType, DiagramType >::countDouble | ( | ) | const [inline] |
Appriximate the number of terms.
| size_type polybori::CCuddDDFacade< RingType, DiagramType >::rootIndex | ( | ) | const [inline] |
Get index of curent node.
| size_type polybori::CCuddDDFacade< RingType, DiagramType >::nNodes | ( | ) | const [inline] |
| size_type polybori::CCuddDDFacade< RingType, DiagramType >::refCount | ( | ) | const [inline] |
Number of references pointing here.
| bool polybori::CCuddDDFacade< RingType, DiagramType >::isZero | ( | ) | const [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::BooleSet::hasTermOfVariables(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::LexHelper::irreducible_lead(), polybori::BooleSet::lastLexicographicalTerm(), polybori::groebner::linalg_step_modified(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::mod_var_set(), polybori::COrderingBase::monom(), polybori::BooleSet::owns(), polybori::BooleSet::print(), polybori::groebner::ReductionStrategy::select1(), polybori::groebner::select_largest_degree(), polybori::groebner::select_no_deg_growth(), polybori::groebner::MinimalLeadingTerms::update(), polybori::CCuddDDFacade< polybori::BoolePolyRing, polybori::BooleSet >::Xor(), and polybori::groebner::zeros().
| bool polybori::CCuddDDFacade< RingType, DiagramType >::isOne | ( | ) | const [inline] |
Test whether diagram represents the empty set.
| const ring_type& polybori::CCuddDDFacade< RingType, DiagramType >::ring | ( | ) | const [inline] |
Get reference to ring.
Referenced by polybori::BooleSet::begin(), polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables_cudd_style(), polybori::BooleSet::divide(), polybori::BooleSet::divisorsOf(), polybori::groebner::do_fixed_path_divisors(), polybori::groebner::do_minimal_elements_cudd_style(), polybori::BooleSet::end(), polybori::BooleSet::existAbstract(), polybori::BooleSet::expBegin(), polybori::BooleSet::expEnd(), polybori::BooleSet::firstDivisorsOf(), polybori::groebner::fix_point_iterate(), polybori::groebner::include_divisors(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::linalg_step_modified(), 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::BooleSet::minimalElements(), polybori::groebner::GroebnerStrategy::minimalize(), polybori::groebner::GroebnerStrategy::minimalizeAndTailReduce(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_mon_set(), polybori::groebner::mod_var_set(), polybori::BooleSet::multiplesOf(), polybori::groebner::PairManager::nextSpoly(), polybori::BooleSet::print(), polybori::groebner::random_interpolation(), polybori::BooleSet::rbegin(), polybori::BooleSet::rend(), polybori::BooleSet::rExpBegin(), polybori::BooleSet::rExpEnd(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), polybori::groebner::translate_back(), polybori::groebner::variety_lex_leading_terms(), and polybori::groebner::zeros().
| node_ptr polybori::CCuddDDFacade< RingType, DiagramType >::getNode | ( | ) | const [inline] |
Get raw node structure.
Referenced by polybori::CApplyNodeFacade< polybori::BooleSet, DdNode * >::operator==(), and polybori::CCuddDDFacade< polybori::BoolePolyRing, polybori::BooleSet >::Xor().
| mgr_type* polybori::CCuddDDFacade< RingType, DiagramType >::getManager | ( | ) | const [inline] |
Get raw decision diagram manager.
Referenced by polybori::CApplyNodeFacade< polybori::BooleSet, DdNode * >::checkSameManager().
| ResultType polybori::CCuddDDFacade< RingType, DiagramType >::memApply | ( | ResultType(*)(mgr_type *, node_ptr) | func | ) | const [inline, protected] |
| void polybori::CCuddDDFacade< RingType, DiagramType >::checkAssumption | ( | bool | isValid | ) | const [inline, protected] |
Check whether previous decision diagram operation for validity.
| diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::cudd_generate_multiples | ( | const ManagerType & | mgr, | |
| ReverseIterator | start, | |||
| ReverseIterator | finish, | |||
| MultReverseIterator | multStart, | |||
| MultReverseIterator | multFinish | |||
| ) | const [inline, protected] |
temporarily (needs to be more generic) (similar fct in pbori_algo.h)
| diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::cudd_generate_divisors | ( | const ManagerType & | mgr, | |
| ReverseIterator | start, | |||
| ReverseIterator | finish | |||
| ) | const [inline, protected] |
temporarily (needs to be more generic) (similar fct in pbori_algo.h)
| diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::Xor | ( | const diagram_type & | rhs | ) | const [inline] |
| diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::divideFirst | ( | const diagram_type & | rhs | ) | const [inline] |
Division with first term of right-hand side.
| ostream_type& polybori::CCuddDDFacade< RingType, DiagramType >::print | ( | ostream_type & | os | ) | const [inline] |
Get number of nodes in decision diagram.
| first_iterator polybori::CCuddDDFacade< RingType, DiagramType >::firstBegin | ( | ) | const [inline] |
Get numbers of used variables.
Start of first term
Referenced by polybori::CCuddDDFacade< polybori::BoolePolyRing, polybori::BooleSet >::divideFirst(), polybori::BoolePolynomial::firstBegin(), and polybori::BooleExponent::multiplyFirst().
| first_iterator polybori::CCuddDDFacade< RingType, DiagramType >::firstEnd | ( | ) | const [inline] |
Finish of first term.
Referenced by polybori::CCuddDDFacade< polybori::BoolePolyRing, polybori::BooleSet >::divideFirst(), polybori::BoolePolynomial::firstEnd(), and polybori::BooleExponent::multiplyFirst().
| last_iterator polybori::CCuddDDFacade< RingType, DiagramType >::lastBegin | ( | ) | const [inline] |
Start of first term.
| last_iterator polybori::CCuddDDFacade< RingType, DiagramType >::lastEnd | ( | ) | const [inline] |
Finish of first term.
| diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::firstMultiples | ( | const std::vector< idx_type > & | input_multipliers | ) | const [inline] |
Get decison diagram representing the multiples of the first term.
| diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::firstDivisors | ( | ) | const [inline] |
Get decison diagram representing the divisors of the first term.
Referenced by polybori::BoolePolynomial::firstDivisors().
| navigator polybori::CCuddDDFacade< RingType, DiagramType >::navigation | ( | ) | const [inline] |
Navigate through ZDD by incrementThen(), incrementElse(), and terminated().
Referenced by polybori::BooleSet::begin(), polybori::groebner::contained_deg2_cudd_style(), polybori::groebner::contained_variables(), polybori::groebner::contained_variables_cudd_style(), polybori::BooleSet::containsDivisorsOfDecDeg(), 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::BooleSet::expBegin(), polybori::BooleSet::firstDivisorsOf(), polybori::BooleSet::hasTermOfVariables(), polybori::groebner::include_divisors(), polybori::groebner::interpolate(), polybori::groebner::interpolate_smallest_lex(), polybori::groebner::ll_red_nf_generic(), polybori::groebner::minimal_elements_cudd_style_unary(), polybori::groebner::minimal_elements_internal(), polybori::groebner::minimal_elements_internal2(), polybori::BooleSet::minimalElements(), polybori::groebner::mod_deg2_set(), polybori::groebner::mod_mon_set(), polybori::groebner::mod_var_set(), polybori::BooleSet::multiplesOf(), polybori::BoolePolynomial::operator*=(), polybori::BooleSet::owns(), polybori::BooleSet::rbegin(), polybori::BooleSet::rExpBegin(), and polybori::groebner::zeros().
| bool_type polybori::CCuddDDFacade< RingType, DiagramType >::isConstant | ( | ) | const [inline] |
Checks whether the the diagram corresponds to {} or {{}} (polynomial 0 or 1).
1.5.6