PolyBoRi
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
polybori::BoolePolyRing Class Reference

This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and variable names. More...

#include <BoolePolyRing.h>

Inheritance diagram for polybori::BoolePolyRing:
polybori::COrderEnums polybori::CCompareEnums polybori::CAuxTypes

Public Types

typedef class BooleExponent exp_type
 define exponent type More...
 
typedef class BooleMonomial monom_type
 set monomial type More...
 
typedef class BooleVariable var_type
 set variables type More...
 
typedef class BooleSet dd_type
 set decision diagram type More...
 
typedef class BoolePolynomial poly_type
 set polynomial type More...
 
typedef CCheckedIdx checked_idx_type
 Check indices bevor using. More...
 
typedef CCuddCore core_type
 Type of actual data. More...
 
typedef core_type::const_varname_reference const_varname_reference
 
typedef boost::intrusive_ptr< core_typecore_ptr
 Smart pointer to core. More...
 
typedef core_type::order_type order_type
 Type for handling mterm orderings. More...
 
typedef core_type::order_ptr order_ptr
 Smart pointer for handling mterm orderings. More...
 
typedef order_typeorder_reference
 Reference for handling mterm orderings. More...
 
typedef DdManager mgr_type
 
typedef std::vector< idx_typeblock_idx_type
 Type for block indices. More...
 
typedef block_idx_type::const_iterator block_iterator
 Type for block iterators. More...
 
adopt global type definitions
typedef CTypes::ordercode_type ordercode_type
 
typedef CTypes::vartext_type vartext_type
 
- Public Types inherited from polybori::COrderEnums
enum  ordercodes {
  lp, dlex, dp_asc, block_dlex,
  block_dp_asc
}
 Codes For orderings. More...
 
- Public Types inherited from polybori::CCompareEnums
enum  comparecodes {
  less_than = -1, equality = 0, greater_than = +1, less_or_equal_max = 0,
  greater_or_equal_min = 0
}
 Comparision codes enumeration. More...
 
enum  { max_idx = CUDD_MAXINDEX }
 
- Public Types inherited from polybori::CAuxTypes
typedef bool bool_type
 Type for standard true/false statements. More...
 
typedef std::size_t size_type
 Type for lengths, dimensions, etc. More...
 
typedef int deg_type
 Type for polynomial degrees (ranges from -1 to maxint) More...
 
typedef int integer_type
 Type for integer numbers. More...
 
typedef int idx_type
 Type for indices. More...
 
typedef std::size_t hash_type
 Type for hashing. More...
 
typedef unsigned int errornum_type
 Type used to store error codes. More...
 
typedef short int comp_type
 Type for comparisons. More...
 
typedef int ordercode_type
 Type for ordering codes. More...
 
typedef const char * errortext_type
 Type used to verbose error information. More...
 
typedef std::ostream ostream_type
 Type for out-stream. More...
 
typedef const char * vartext_type
 Type for setting/getting names of variables. More...
 
typedef unsigned long large_size_type
 large size_type (necessary?) More...
 
typedef std::size_t refcount_type
 Type for counting references. More...
 

Public Member Functions

 BoolePolyRing (size_type nvars=1, ordercode_type order=lp)
 Constructor for nvars variables and order code. More...
 
 BoolePolyRing (size_type nvars, const order_ptr &order)
 Constructor for nvars variables (and given pointer to ordering) More...
 
 BoolePolyRing (const self &rhs)
 Copy constructor (cheap) More...
 
 ~BoolePolyRing ()
 Destructor. More...
 
size_type nVariables () const
 Get number of ring variables. More...
 
vartext_type getVariableName (checked_idx_type idx) const
 Get name of variable with index idx. More...
 
void setVariableName (checked_idx_type idx, vartext_type varname)
 Set name of variable with index idx. More...
 
void clearCache ()
 Clears the function cache. More...
 
ostream_typeprint (ostream_type &) const
 Print out statistics and settings for current ring to output stream. More...
 
hash_type hash () const
 Get unique identifier for manager of *this. More...
 
hash_type id () const
 Get unique identifier for this ring. More...
 
order_reference ordering () const
 Access ordering of *this. More...
 
mgr_typegetManager () const
 Get plain decision diagram manager. More...
 
self clone () const
 Construct ring with similiar properties (deep copy) More...
 
void changeOrdering (ordercode_type)
 Change order of current ring. More...
 
poly_type coerce (const poly_type &rhs) const
 Map polynomial to this ring, if possible. More...
 
monom_type coerce (const monom_type &rhs) const
 Map monomial to this ring, if possible. More...
 
var_type coerce (const var_type &rhs) const
 Map variable to this ring. More...
 
dd_type variableDiagram (checked_idx_type nvar) const
 Access nvar-th ring variable as diagram. More...
 
var_type variable (checked_idx_type nvar) const
 Access nvar-th ring variable as diagram. More...
 
dd_type zero () const
 Get empty decision diagram. More...
 
dd_type one () const
 Get decision diagram with all variables negated. More...
 
dd_type constant (bool is_one) const
 Get constant one or zero. More...
 

Protected Member Functions

 BoolePolyRing (const core_ptr &rhs)
 
 BoolePolyRing (const CWeakPtr< core_type > &rhs)
 Get strong reference from weak pointer (used by WeakRingPtr) More...
 
core_ptr core () const
 Access to actual data (via ->) More...
 

Protected Attributes

core_ptr p_core
 Smart pointer to actual data. More...
 

Friends

class WeakRingPtr
 The weak pointer needs access to data structure. More...
 

Detailed Description

This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and variable names.

Member Typedef Documentation

Type for block indices.

typedef block_idx_type::const_iterator polybori::BoolePolyRing::block_iterator

Type for block iterators.

Check indices bevor using.

typedef boost::intrusive_ptr<core_type> polybori::BoolePolyRing::core_ptr

Smart pointer to core.

Type of actual data.

set decision diagram type

define exponent type

set monomial type

Smart pointer for handling mterm orderings.

Reference for handling mterm orderings.

Type for handling mterm orderings.

set polynomial type

set variables type

Constructor & Destructor Documentation

polybori::BoolePolyRing::BoolePolyRing ( const core_ptr rhs)
inlineprotected

Support for shallow copy (clone)

Note
May generate invalid ring, hence protected
polybori::BoolePolyRing::BoolePolyRing ( const CWeakPtr< core_type > &  rhs)
inlineexplicitprotected

Get strong reference from weak pointer (used by WeakRingPtr)

References PBORI_ASSERT.

polybori::BoolePolyRing::BoolePolyRing ( size_type  nvars = 1,
ordercode_type  order = lp 
)
explicit

Constructor for nvars variables and order code.

Constructor for nvars variables.

References PBORI_TRACE_FUNC.

polybori::BoolePolyRing::BoolePolyRing ( size_type  nvars,
const order_ptr order 
)
inline

Constructor for nvars variables (and given pointer to ordering)

polybori::BoolePolyRing::BoolePolyRing ( const self rhs)
inline

Copy constructor (cheap)

polybori::BoolePolyRing::~BoolePolyRing ( )
inline

Destructor.

Member Function Documentation

void polybori::BoolePolyRing::changeOrdering ( ordercode_type  order)

Change order of current ring.

References polybori::get_ordering(), p_core, and PBORI_TRACE_FUNC.

void polybori::BoolePolyRing::clearCache ( )
inline

Clears the function cache.

self polybori::BoolePolyRing::clone ( ) const
inline

Construct ring with similiar properties (deep copy)

BoolePolyRing::poly_type polybori::BoolePolyRing::coerce ( const poly_type rhs) const

Map polynomial to this ring, if possible.

References getManager(), and polybori::CErrorEnums::invalid.

Referenced by coerce().

BoolePolyRing::monom_type polybori::BoolePolyRing::coerce ( const monom_type rhs) const

Map monomial to this ring, if possible.

References coerce().

BoolePolyRing::var_type polybori::BoolePolyRing::coerce ( const var_type rhs) const

Map variable to this ring.

BoolePolyRing::dd_type polybori::BoolePolyRing::constant ( bool  is_one) const

Get constant one or zero.

core_ptr polybori::BoolePolyRing::core ( ) const
inlineprotected

Access to actual data (via ->)

mgr_type* polybori::BoolePolyRing::getManager ( ) const
inline

Get plain decision diagram manager.

Referenced by coerce(), and print().

vartext_type polybori::BoolePolyRing::getVariableName ( checked_idx_type  idx) const
inline

Get name of variable with index idx.

hash_type polybori::BoolePolyRing::hash ( ) const
inline

Get unique identifier for manager of *this.

hash_type polybori::BoolePolyRing::id ( ) const
inline
size_type polybori::BoolePolyRing::nVariables ( ) const
inline
BoolePolyRing::dd_type polybori::BoolePolyRing::one ( ) const
order_reference polybori::BoolePolyRing::ordering ( ) const
inline
BoolePolyRing::ostream_type & polybori::BoolePolyRing::print ( ostream_type os) const

Print out statistics and settings for current ring to output stream.

References Cudd_PrintInfo, getManager(), and PBORI_PREFIX.

Referenced by polybori::operator<<().

void polybori::BoolePolyRing::setVariableName ( checked_idx_type  idx,
vartext_type  varname 
)
inline

Set name of variable with index idx.

BoolePolyRing::var_type polybori::BoolePolyRing::variable ( checked_idx_type  nvar) const
BoolePolyRing::dd_type polybori::BoolePolyRing::variableDiagram ( checked_idx_type  nvar) const

Access nvar-th ring variable as diagram.

BoolePolyRing::dd_type polybori::BoolePolyRing::zero ( ) const

Friends And Related Function Documentation

friend class WeakRingPtr
friend

The weak pointer needs access to data structure.

Member Data Documentation

core_ptr polybori::BoolePolyRing::p_core
protected

Smart pointer to actual data.

Referenced by changeOrdering().


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