PolyBoRi
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
polybori::CBlockOrderingFacade< OrderType, OrderTag > Class Template Referenceabstract

This class implements block orderings for COrderingFacade. OrderType must inherit from COrderingFacade<OrderType>. More...

#include <CBlockOrderingFacade.h>

Inheritance diagram for polybori::CBlockOrderingFacade< OrderType, OrderTag >:
polybori::COrderingFacade< OrderType, OrderTag > polybori::COrderingBase polybori::COrderingTags< OrderTag > polybori::order_traits< OrderTag > polybori::CAuxTypes

Public Types

typedef self base
 *this is to be used as base for OrderType only More...
 
Declare template argument-dependent types
typedef base_type::order_lead_tag order_lead_tag
 
typedef base_type::poly_type poly_type
 
typedef base_type::monom_type monom_type
 
typedef base_type::exp_type exp_type
 
typedef base_type::deg_type deg_type
 
typedef base_type::set_type set_type
 
typedef base_type::comp_type comp_type
 
- Public Types inherited from polybori::COrderingFacade< OrderType, OrderTag >
typedef self base
 *this is to be used as base for OrderType only More...
 
typedef OrderType order_type
 Variable ordering definiton functional type. More...
 
typedef CCacheTypes::lead_tag< OrderTag > order_lead_tag
 Tag for for leading monomial cache. More...
 
typedef COrderingTags< OrderTag > ordering_tags
 
- Public Types inherited from polybori::COrderingBase
typedef CCheckedIdx checked_idx_type
 Check index on input. More...
 
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...
 
typedef BooleSet set_type
 Type of Boolean sets. More...
 
typedef BoolePolynomial poly_type
 
typedef BooleMonomial monom_type
 
typedef CCuddNavigator navigator
 
typedef BooleExponent exp_type
 
typedef COrderedIter< navigator, monom_typeordered_iterator
 
typedef COrderedIter< navigator, exp_typeordered_exp_iterator
 
- 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 Types inherited from polybori::order_traits< OrderTag >
enum  { order_code = order_traits_code<OrderTag>::order_code, baseorder_code = order_code }
 

Public Member Functions

 CBlockOrderingFacade ()
 Default Constructor. More...
 
 CBlockOrderingFacade (const self &rhs)
 Copy Constructor. More...
 
 ~CBlockOrderingFacade ()=0
 Destructor. More...
 
monom_type lead (const poly_type &poly) const
 generic block lead More...
 
monom_type lead (const poly_type &poly, deg_type) const
 
exp_type leadExp (const poly_type &poly) const
 Extraction of leading exponent - just using lead. More...
 
exp_type leadExp (const poly_type &poly, deg_type) const
 
interface for block orderings
COrderingBase::block_iterator blockBegin () const
 
COrderingBase::block_iterator blockEnd () const
 
void appendBlock (COrderingBase::checked_idx_type idx)
 
void clearBlocks ()
 
- Public Member Functions inherited from polybori::COrderingFacade< OrderType, OrderTag >
 COrderingFacade ()
 Construct new decision diagramm manager. More...
 
 COrderingFacade (const self &rhs)
 Construct new decision diagramm manager. More...
 
 ~COrderingFacade ()
 Destructor. More...
 
poly_type leadFirst (const poly_type &poly) const
 Generates polynomial with leading term first (other terms may be skipped) More...
 
bool_type isLexicographical () const
 Check whether ring is lexicographical. More...
 
bool_type orderedStandardIteration () const
 Test whether iterators respect order. More...
 
bool_type isSymmetric () const
 Test whether variable pertubation do not change the order. More...
 
bool_type isDegreeOrder () const
 Test whether we deal with a degree-ordering. More...
 
bool_type isBlockOrder () const
 Test whether we deal with a degree-ordering. More...
 
bool_type isTotalDegreeOrder () const
 Test whether we deal with a total degree-ordering. More...
 
bool_type isDegreeReverseLexicographical () const
 Test whether ordering is deg-rev-lex ordering. More...
 
bool_type ascendingVariables () const
 Test whether variables are in ascending order. More...
 
bool_type descendingVariables () const
 Test whether variables are in descending order. More...
 
ordercode_type getOrderCode () const
 Get numerical code for ordering. More...
 
ordercode_type getBaseOrderCode () const
 Get numerical code for base ordering (the same for non-block orderings) More...
 
bool_type lieInSameBlock (idx_type first, idx_type second) const
 
idx_type lastBlockStart () const
 Generic procedure to get index, where last block starts. More...
 
ordered_iterator leadIteratorBegin (const poly_type &poly) const
 Initialize iterator corresponding to leading term. More...
 
ordered_iterator leadIteratorEnd (const poly_type &poly) const
 End marker for iterator corresponding to leading term. More...
 
ordered_exp_iterator leadExpIteratorBegin (const poly_type &poly) const
 Initialize exponent iterator corresponding to leading term. More...
 
ordered_exp_iterator leadExpIteratorEnd (const poly_type &poly) const
 End marker for exponent iterator corresponding to leading term. More...
 
- Public Member Functions inherited from polybori::COrderingBase
 COrderingBase ()
 Default constructor. More...
 
virtual ~COrderingBase ()=0
 
virtual comp_type compare (idx_type, idx_type) const =0
 Comparison of monomials. More...
 
virtual comp_type compare (const monom_type &, const monom_type &) const =0
 
virtual comp_type compare (const exp_type &, const exp_type &) const =0
 

Protected Member Functions

template<class TermType , class BinOpType >
comp_type compare_terms (const TermType &lhs, const TermType &rhs, const BinOpType &idx_comparer) const
 Comparison of monomials/expoinents template. More...
 
- Protected Member Functions inherited from polybori::COrderingFacade< OrderType, OrderTag >
bool_type inSameBlockInternal (idx_type, idx_type, invalid_tag) const
 trivial case for non-block orderings More...
 
bool_type inSameBlockInternal (idx_type first, idx_type second, valid_tag) const
 complicated case for block orderings More...
 
- Protected Member Functions inherited from polybori::COrderingBase
monom_type monom (const set_type &rhs) const
 Get monomial from set of subsets of Boolean variables (internal use only) More...
 

Protected Attributes

COrderingBase::block_idx_type m_indices
 index data More...
 

Detailed Description

template<class OrderType, class OrderTag>
class polybori::CBlockOrderingFacade< OrderType, OrderTag >

This class implements block orderings for COrderingFacade. OrderType must inherit from COrderingFacade<OrderType>.

Member Typedef Documentation

template<class OrderType, class OrderTag>
typedef self polybori::CBlockOrderingFacade< OrderType, OrderTag >::base

*this is to be used as base for OrderType only

template<class OrderType, class OrderTag>
typedef base_type::comp_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::comp_type
template<class OrderType, class OrderTag>
typedef base_type::deg_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::deg_type
template<class OrderType, class OrderTag>
typedef base_type::exp_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::exp_type
template<class OrderType, class OrderTag>
typedef base_type::monom_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::monom_type
template<class OrderType, class OrderTag>
typedef base_type::order_lead_tag polybori::CBlockOrderingFacade< OrderType, OrderTag >::order_lead_tag
template<class OrderType, class OrderTag>
typedef base_type::poly_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::poly_type
template<class OrderType, class OrderTag>
typedef base_type::set_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::set_type

Constructor & Destructor Documentation

template<class OrderType, class OrderTag>
polybori::CBlockOrderingFacade< OrderType, OrderTag >::CBlockOrderingFacade ( )
inline

Default Constructor.

template<class OrderType, class OrderTag>
polybori::CBlockOrderingFacade< OrderType, OrderTag >::CBlockOrderingFacade ( const self rhs)
inline

Copy Constructor.

template<class OrderType , class OrderTag >
polybori::CBlockOrderingFacade< OrderType, OrderTag >::~CBlockOrderingFacade ( )
inlinepure virtual

Destructor.

Member Function Documentation

template<class OrderType, class OrderTag>
void polybori::CBlockOrderingFacade< OrderType, OrderTag >::appendBlock ( COrderingBase::checked_idx_type  idx)
inlinevirtual

Reimplemented from polybori::COrderingBase.

template<class OrderType, class OrderTag>
COrderingBase::block_iterator polybori::CBlockOrderingFacade< OrderType, OrderTag >::blockBegin ( ) const
inlinevirtual

Reimplemented from polybori::COrderingBase.

template<class OrderType, class OrderTag>
COrderingBase::block_iterator polybori::CBlockOrderingFacade< OrderType, OrderTag >::blockEnd ( ) const
inlinevirtual

Reimplemented from polybori::COrderingBase.

template<class OrderType, class OrderTag>
void polybori::CBlockOrderingFacade< OrderType, OrderTag >::clearBlocks ( )
inlinevirtual

Reimplemented from polybori::COrderingBase.

template<class OrderType, class OrderTag>
template<class TermType , class BinOpType >
comp_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::compare_terms ( const TermType &  lhs,
const TermType &  rhs,
const BinOpType &  idx_comparer 
) const
inlineprotected

Comparison of monomials/expoinents template.

template<class OrderType, class OrderTag>
monom_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::lead ( const poly_type poly) const
inlinevirtual

generic block lead

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
monom_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::lead ( const poly_type poly,
deg_type   
) const
inlinevirtual

Leading monomial with bound (just the ordinary leading monomial)

Note
falls back to lead, ignores second argument

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
exp_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::leadExp ( const poly_type poly) const
inlinevirtual

Extraction of leading exponent - just using lead.

Implements polybori::COrderingBase.

template<class OrderType, class OrderTag>
exp_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::leadExp ( const poly_type poly,
deg_type   
) const
inlinevirtual

Leading exponent with bound (just the ordinary leading monomial)

Note
falls back to leadExp, ignores second argument

Implements polybori::COrderingBase.

Member Data Documentation

template<class OrderType, class OrderTag>
COrderingBase::block_idx_type polybori::CBlockOrderingFacade< OrderType, OrderTag >::m_indices
protected

index data


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