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:

## 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_type > | core_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_type & | order_reference
| Reference for handling mterm orderings. More...
typedef DdManager | mgr_type
typedef std::vector< idx_type > | block_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 = ((DdHalfWord) ~0) }
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_type & | print (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_type * | getManager () 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

typedef std::vector<idx_type> polybori::BoolePolyRing::block_idx_type

Type for block indices.

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

Type for block iterators.

typedef CCheckedIdx polybori::BoolePolyRing::checked_idx_type

Check indices bevor using.

typedef core_type::const_varname_reference polybori::BoolePolyRing::const_varname_reference

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

Smart pointer to core.

typedef CCuddCore polybori::BoolePolyRing::core_type

Type of actual data.

typedef class BooleSet polybori::BoolePolyRing::dd_type

set decision diagram type

typedef class BooleExponent polybori::BoolePolyRing::exp_type

define exponent type

typedef DdManager polybori::BoolePolyRing::mgr_type

typedef class BooleMonomial polybori::BoolePolyRing::monom_type

set monomial type

typedef core_type::order_ptr polybori::BoolePolyRing::order_ptr

Smart pointer for handling mterm orderings.

typedef order_type& polybori::BoolePolyRing::order_reference

Reference for handling mterm orderings.

typedef core_type::order_type polybori::BoolePolyRing::order_type

Type for handling mterm orderings.

typedef CTypes::ordercode_type polybori::BoolePolyRing::ordercode_type

typedef class BoolePolynomial polybori::BoolePolyRing::poly_type

set polynomial type

typedef class BooleVariable polybori::BoolePolyRing::var_type

set variables type

typedef CTypes::vartext_type polybori::BoolePolyRing::vartext_type

## Constructor & Destructor Documentation

polybori::BoolePolyRing::BoolePolyRing | ( | const core_ptr & | rhs | ) |

inline protected

Support for shallow copy (clone)

Note
  May generate invalid ring, hence `protected`

polybori::BoolePolyRing::BoolePolyRing | ( | const CWeakPtr< core_type > & | rhs | ) |

inline explicit protected

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

inline protected

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

Get unique identifier for this ring.

Referenced by polybori::groebner::GroebnerStrategy::addGeneratorDelayed(), and polybori::groebner::GroebnerStrategy::addGeneratorTrySplit().

size_type polybori::BoolePolyRing::nVariables | ( |  | ) | const

inline

Get number of ring variables.

Referenced by polybori::CIndexHandle< NaviType >::fromNode(), polybori::groebner::CacheManager::insert(), polybori::groebner::CacheManager::lookup(), polybori::groebner::minimal_elements_internal3(), polybori::groebner::GroebnerStrategy::suggestPluginVariable(), polybori::CIndexCacheHandle< NaviType >::toNode(), and polybori::groebner::LexBucket::updateTailStart().

BoolePolyRing::dd_type polybori::BoolePolyRing::one | ( |  | ) | const

Get decision diagram with all variables negated.

Referenced by polybori::groebner::GroebnerStrategy::addNonTrivialImplicationsDelayed(), polybori::groebner::do_is_rewriteable(), polybori::groebner::minimal_elements_divided(), and polybori::groebner::variety_lex_leading_terms().

order_reference polybori::BoolePolyRing::ordering | ( |  | ) | const

inline

Access ordering of *this.

Referenced by polybori::block_begin(), polybori::block_end(), polybori::BoolePolynomial::boundedLead(), polybori::BoolePolynomial::boundedLeadExp(), polybori::BooleMonomial::compare(), polybori::groebner::get_table_entry4(), polybori::groebner::have_base_ordering_for_tables(), polybori::groebner::have_ordering_for_tables(), polybori::groebner::ReductionStrategy::headNormalForm(), polybori::BoolePolynomial::inSingleBlock(), polybori::BoolePolynomial::lead(), polybori::BoolePolynomial::leadExp(), polybori::BoolePolynomial::leadFirst(), polybori::groebner::LiteralFactorization::LiteralFactorization(), polybori::BoolePolynomial::orderedBegin(), polybori::BoolePolynomial::orderedEnd(), polybori::BoolePolynomial::orderedExpBegin(), polybori::BoolePolynomial::orderedExpEnd(), polybori::groebner::red_tail(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_in_last_block(), and polybori::groebner::ReductionStrategy::select1().

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

Access nvar-th ring variable as diagram.

Referenced by polybori::groebner::GroebnerStrategy::addNonTrivialImplicationsDelayed(), polybori::groebner::code_2_m_4(), polybori::groebner::TimesConstantImplication::operator()(), polybori::groebner::TimesVariableSubstitution::operator()(), and polybori::CIndexCacheHandle< NaviType >::toNode().

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

Get empty decision diagram.

Referenced by polybori::groebner::do_is_rewriteable(), polybori::groebner::gen_random_subset(), polybori::groebner::PairManager::nextSpoly(), polybori::groebner::nf3_lexbuckets(), polybori::groebner::random_set_using_generator(), polybori::groebner::red_tail_general(), polybori::groebner::red_tail_generic(), polybori::groebner::reduce_by_monom(), polybori::CIndexCacheHandle< NaviType >::toNode(), polybori::groebner::translate_indices(), and polybori::groebner::MinimalLeadingTerms::update().

## 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:

- BoolePolyRing.h
- BoolePolyRing.cc