PolyBoRi
Public Types | Public Member Functions | Protected Member Functions
polybori::CCuddDDFacade Class Reference

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

#include <CCuddDDFacade.h>

Inheritance diagram for polybori::CCuddDDFacade:
polybori::CApplyNodeFacade< DiagramType, DdNode * > polybori::CAuxTypes

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)
 Copy constructor.
 ~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.
size_type nSupport () const
 Get numbers of used variables.
template<class VectorLikeType >
void usedIndices (VectorLikeType &indices) const
 Get used variables (assuming indices of zero length)
int * usedIndices () const
 Get used variables (assuming indices of length nSupport())
first_iterator firstBegin () const
 Start of first term.
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

This template class defines a facade for decision diagrams.


Member Typedef Documentation

Type this is inherited from the following.

Reimplemented in polybori::BooleSet.

Cudd's index type.

Cudd's index type.

Type for diagrams.

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

This type has an easy equality check.

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

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

typedef ring_type::mgr_type polybori::CCuddDDFacade::mgr_type

Raw context.

Iterator type for navigation throught Cudd's ZDDs structure.

Pointer type for nodes.

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

Type for C-style struct.

Type for output streams.

Reimplemented from polybori::CAuxTypes.

Type for diagrams.

Reimplemented in polybori::BooleSet.


Constructor & Destructor Documentation

polybori::CCuddDDFacade::CCuddDDFacade ( const ring_type ring,
node_ptr  node 
) [inline]

Construct diagram from ring and node.

polybori::CCuddDDFacade::CCuddDDFacade ( const ring_type ring,
const navigator navi 
) [inline]

Construct from Manager and navigator.

polybori::CCuddDDFacade::CCuddDDFacade ( const ring_type ring,
idx_type  idx,
navigator  thenNavi,
navigator  elseNavi 
) [inline]

Construct new node from manager, index, and navigators.

polybori::CCuddDDFacade::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::CCuddDDFacade ( idx_type  idx,
const self thenDD,
const self elseDD 
) [inline]

Construct new node.

polybori::CCuddDDFacade::CCuddDDFacade ( const self from) [inline]

Copy constructor.

Todo:
NULL?
polybori::CCuddDDFacade::~CCuddDDFacade ( ) [inline]

Destructor.


Member Function Documentation

void polybori::CCuddDDFacade::checkAssumption ( bool  isValid) const [inline, protected]

Check whether previous decision diagram operation for validity.

size_type polybori::CCuddDDFacade::count ( ) const [inline]

Determine the number of terms.

double polybori::CCuddDDFacade::countDouble ( ) const [inline]

Appriximate the number of terms.

template<class ManagerType , class ReverseIterator >
diagram_type polybori::CCuddDDFacade::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 ManagerType , class ReverseIterator , class MultReverseIterator >
diagram_type polybori::CCuddDDFacade::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::divideFirst ( const diagram_type rhs) const [inline]

Division with first term of right-hand side.

first_iterator polybori::CCuddDDFacade::firstBegin ( ) const [inline]
diagram_type polybori::CCuddDDFacade::firstDivisors ( ) const [inline]

Get decison diagram representing the divisors of the first term.

Referenced by polybori::BoolePolynomial::firstDivisors(), and polybori::BoolePolynomial::leadDivisors().

first_iterator polybori::CCuddDDFacade::firstEnd ( ) const [inline]
diagram_type polybori::CCuddDDFacade::firstMultiples ( const std::vector< idx_type > &  input_multipliers) const [inline]

Get decison diagram representing the multiples of the first term.

mgr_type* polybori::CCuddDDFacade::getManager ( ) const [inline]

Get raw decision diagram manager.

node_ptr polybori::CCuddDDFacade::getNode ( ) const [inline]

Get raw node structure.

* bool polybori::CCuddDDFacade::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))
bool_type polybori::CCuddDDFacade::isConstant ( ) const [inline]

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

bool polybori::CCuddDDFacade::isOne ( ) const [inline]

Test whether diagram represents the empty set.

bool polybori::CCuddDDFacade::isZero ( ) const [inline]
last_iterator polybori::CCuddDDFacade::lastBegin ( ) const [inline]

Start of first term.

last_iterator polybori::CCuddDDFacade::lastEnd ( ) const [inline]

Finish of first term.

template<class ResultType >
ResultType polybori::CCuddDDFacade::memApply ( ResultType(*)(mgr_type *, node_ptr func) const [inline, protected]
navigator polybori::CCuddDDFacade::navigation ( ) const [inline]
size_type polybori::CCuddDDFacade::nNodes ( ) const [inline]

Number of nodes in the current decision diagram.

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

size_type polybori::CCuddDDFacade::nSupport ( ) const [inline]

Get numbers of used variables.

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

diagram_type& polybori::CCuddDDFacade::operator= ( const diagram_type rhs) [inline]

Assignment operator.

ostream_type& polybori::CCuddDDFacade::print ( ostream_type os) const [inline]

Get number of nodes in decision diagram.

Reimplemented in polybori::BooleSet.

std::ostream& polybori::CCuddDDFacade::printIntern ( std::ostream &  os) const [inline]
void polybori::CCuddDDFacade::PrintMinterm ( ) const [inline]
size_type polybori::CCuddDDFacade::refCount ( ) const [inline]

Number of references pointing here.

const ring_type& polybori::CCuddDDFacade::ring ( ) const [inline]
size_type polybori::CCuddDDFacade::rootIndex ( ) const [inline]

Get index of curent node.

template<class VectorLikeType >
void polybori::CCuddDDFacade::usedIndices ( VectorLikeType &  indices) const [inline]

Get used variables (assuming indices of zero length)

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

int* polybori::CCuddDDFacade::usedIndices ( ) const [inline]

Get used variables (assuming indices of length nSupport())

diagram_type polybori::CCuddDDFacade::Xor ( const diagram_type rhs) const [inline]

Union Xor.

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


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