polybori::CCuddDDFacade< RingType, DiagramType > Class Template Reference

This template class defines a facade for decision diagrams. More...

#include <CCuddDDFacade.h>

Inheritance diagram for polybori::CCuddDDFacade< RingType, DiagramType >:

polybori::CApplyNodeFacade< DiagramType, DdNode * > polybori::CAuxTypes polybori::BooleSet polybori::groebner::LLReductor polybori::groebner::MinimalLeadingTerms polybori::groebner::TermsFacade< NewType > polybori::groebner::TermsFacade< polybori::groebner::LeadingTerms > polybori::groebner::TermsFacade< polybori::groebner::LeadingTerms00 > polybori::groebner::TermsFacade< polybori::groebner::LeadingTerms11 > polybori::groebner::TermsFacade< polybori::groebner::MonomialPlusOneTerms > polybori::groebner::TermsFacade< polybori::groebner::MonomialTerms >

List of all members.

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_typenode_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_typeoperator= (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_typering () const
 Get reference to ring.
node_ptr getNode () const
 Get raw node structure.
mgr_typegetManager () 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_typeprint (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)


Detailed Description

template<class RingType, class DiagramType>
class polybori::CCuddDDFacade< RingType, DiagramType >

This template class defines a facade for decision diagrams.

Member Typedef Documentation

template<class RingType, class DiagramType>
typedef CTypes::ostream_type polybori::CCuddDDFacade< RingType, DiagramType >::ostream_type

Type for output streams.

Reimplemented from polybori::CAuxTypes.

template<class RingType, class DiagramType>
typedef RingType polybori::CCuddDDFacade< RingType, DiagramType >::ring_type

Type for diagrams.

Reimplemented in polybori::BooleSet.

template<class RingType, class DiagramType>
typedef DiagramType polybori::CCuddDDFacade< RingType, DiagramType >::diagram_type

Type for diagrams.

Reimplemented from polybori::CApplyNodeFacade< DiagramType, DdNode * >.

template<class RingType, class DiagramType>
typedef DdNode polybori::CCuddDDFacade< RingType, DiagramType >::node_type

Type for C-style struct.

template<class RingType, class DiagramType>
typedef node_type* polybori::CCuddDDFacade< RingType, DiagramType >::node_ptr

Pointer type for nodes.

Reimplemented from polybori::CApplyNodeFacade< DiagramType, DdNode * >.

template<class RingType, class DiagramType>
typedef CApplyNodeFacade<diagram_type, node_ptr> polybori::CCuddDDFacade< RingType, DiagramType >::base

Type this is inherited from the following.

Reimplemented in polybori::BooleSet.

template<class RingType, class DiagramType>
typedef CCuddFirstIter polybori::CCuddDDFacade< RingType, DiagramType >::first_iterator

Iterator type for retrieving first term from Cudd's ZDDs.

template<class RingType, class DiagramType>
typedef CCuddLastIter polybori::CCuddDDFacade< RingType, DiagramType >::last_iterator

Iterator type for retrieving last term from Cudd's ZDDs.

template<class RingType, class DiagramType>
typedef CCuddNavigator polybori::CCuddDDFacade< RingType, DiagramType >::navigator

Iterator type for navigation throught Cudd's ZDDs structure.

template<class RingType, class DiagramType>
typedef valid_tag polybori::CCuddDDFacade< RingType, DiagramType >::easy_equality_property

This type has an easy equality check.

template<class RingType, class DiagramType>
typedef ring_type::mgr_type polybori::CCuddDDFacade< RingType, DiagramType >::mgr_type

Raw context.

template<class RingType, class DiagramType>
typedef int polybori::CCuddDDFacade< RingType, DiagramType >::cudd_idx_type

Cudd's index type.

template<class RingType, class DiagramType>
typedef CCheckedIdx polybori::CCuddDDFacade< RingType, DiagramType >::checked_idx_type

Cudd's index type.


Constructor & Destructor Documentation

template<class RingType, class DiagramType>
polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade ( const ring_type ring,
node_ptr  node 
) [inline]

Construct diagram from ring and node.

template<class RingType, class DiagramType>
polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade ( const ring_type ring,
const navigator navi 
) [inline]

Construct from Manager and navigator.

template<class RingType, class DiagramType>
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.

template<class RingType, class DiagramType>
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

template<class RingType, class DiagramType>
polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade ( idx_type  idx,
const self thenDD,
const self elseDD 
) [inline]

Construct new node.

template<class RingType, class DiagramType>
polybori::CCuddDDFacade< RingType, DiagramType >::CCuddDDFacade ( const self from  )  [inline]

Todo:
NULL?
Copy constructor

template<class RingType, class DiagramType>
polybori::CCuddDDFacade< RingType, DiagramType >::~CCuddDDFacade (  )  [inline]

Destructor.


Member Function Documentation

template<class RingType, class DiagramType>
diagram_type& polybori::CCuddDDFacade< RingType, DiagramType >::operator= ( const diagram_type rhs  )  [inline]

Assignment operator.

template<class RingType, class DiagramType>
* bool polybori::CCuddDDFacade< RingType, DiagramType >::implies ( const self rhs  )  const [inline]

Performs the inclusion test for ZDDs.

Note:
Preprocessor generated members
  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))

template<class RingType, class DiagramType>
std::ostream& polybori::CCuddDDFacade< RingType, DiagramType >::printIntern ( std::ostream &  os  )  const [inline]

template<class RingType, class DiagramType>
void polybori::CCuddDDFacade< RingType, DiagramType >::PrintMinterm (  )  const [inline]

template<class RingType, class DiagramType>
size_type polybori::CCuddDDFacade< RingType, DiagramType >::count (  )  const [inline]

Determine the number of terms.

template<class RingType, class DiagramType>
double polybori::CCuddDDFacade< RingType, DiagramType >::countDouble (  )  const [inline]

Appriximate the number of terms.

template<class RingType, class DiagramType>
size_type polybori::CCuddDDFacade< RingType, DiagramType >::rootIndex (  )  const [inline]

Get index of curent node.

template<class RingType, class DiagramType>
size_type polybori::CCuddDDFacade< RingType, DiagramType >::nNodes (  )  const [inline]

Number of nodes in the current decision diagram.

Referenced by polybori::BoolePolynomial::nNodes().

template<class RingType, class DiagramType>
size_type polybori::CCuddDDFacade< RingType, DiagramType >::refCount (  )  const [inline]

Number of references pointing here.

template<class RingType, class DiagramType>
bool polybori::CCuddDDFacade< RingType, DiagramType >::isZero (  )  const [inline]

template<class RingType, class DiagramType>
bool polybori::CCuddDDFacade< RingType, DiagramType >::isOne (  )  const [inline]

Test whether diagram represents the empty set.

template<class RingType, class DiagramType>
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().

template<class RingType, class DiagramType>
node_ptr polybori::CCuddDDFacade< RingType, DiagramType >::getNode (  )  const [inline]

template<class RingType, class DiagramType>
mgr_type* polybori::CCuddDDFacade< RingType, DiagramType >::getManager (  )  const [inline]

template<class RingType, class DiagramType>
template<class ResultType>
ResultType polybori::CCuddDDFacade< RingType, DiagramType >::memApply ( ResultType(*)(mgr_type *, node_ptr func  )  const [inline, protected]

template<class RingType, class DiagramType>
void polybori::CCuddDDFacade< RingType, DiagramType >::checkAssumption ( bool  isValid  )  const [inline, protected]

Check whether previous decision diagram operation for validity.

template<class RingType, class DiagramType>
template<class ManagerType, class ReverseIterator, class MultReverseIterator>
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)

template<class RingType, class DiagramType>
template<class ManagerType, class ReverseIterator>
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)

Todo:
Next line needs generalization

template<class RingType, class DiagramType>
diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::Xor ( const diagram_type rhs  )  const [inline]

Union Xor.

Referenced by polybori::groebner::zeros().

template<class RingType, class DiagramType>
diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::divideFirst ( const diagram_type rhs  )  const [inline]

Division with first term of right-hand side.

template<class RingType, class DiagramType>
ostream_type& polybori::CCuddDDFacade< RingType, DiagramType >::print ( ostream_type os  )  const [inline]

Get number of nodes in decision diagram.

template<class RingType, class DiagramType>
first_iterator polybori::CCuddDDFacade< RingType, DiagramType >::firstBegin (  )  const [inline]

template<class RingType, class DiagramType>
first_iterator polybori::CCuddDDFacade< RingType, DiagramType >::firstEnd (  )  const [inline]

template<class RingType, class DiagramType>
last_iterator polybori::CCuddDDFacade< RingType, DiagramType >::lastBegin (  )  const [inline]

Start of first term.

template<class RingType, class DiagramType>
last_iterator polybori::CCuddDDFacade< RingType, DiagramType >::lastEnd (  )  const [inline]

Finish of first term.

template<class RingType, class DiagramType>
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.

template<class RingType, class DiagramType>
diagram_type polybori::CCuddDDFacade< RingType, DiagramType >::firstDivisors (  )  const [inline]

Get decison diagram representing the divisors of the first term.

Referenced by polybori::BoolePolynomial::firstDivisors().

template<class RingType, class DiagramType>
navigator polybori::CCuddDDFacade< RingType, DiagramType >::navigation (  )  const [inline]

template<class RingType, class DiagramType>
bool_type polybori::CCuddDDFacade< RingType, DiagramType >::isConstant (  )  const [inline]

Checks whether the the diagram corresponds to {} or {{}} (polynomial 0 or 1).


The documentation for this class was generated from the following file:

Generated on Wed Jan 30 16:39:53 2013 for PolyBoRi by  doxygen 1.5.6