16 #ifndef polybori_orderings_COrderingBase_h_
17 #define polybori_orderings_COrderingBase_h_
33 class BoolePolynomial;
77 virtual ~COrderingBase() = 0;
82 virtual comp_type compare(
const monom_type&,
const monom_type&)
const = 0;
84 virtual comp_type compare(
const exp_type&,
const exp_type&)
const = 0;
87 virtual monom_type lead(
const poly_type&)
const = 0;
90 virtual monom_type lead(
const poly_type&,
deg_type)
const = 0;
93 virtual exp_type leadExp(
const poly_type&)
const = 0;
96 virtual exp_type leadExp(
const poly_type&,
deg_type)
const = 0;
99 virtual poly_type leadFirst(
const poly_type&)
const = 0;
102 virtual bool_type isLexicographical()
const = 0;
105 virtual bool_type orderedStandardIteration()
const = 0;
108 virtual bool_type isSymmetric()
const = 0;
111 virtual bool_type isDegreeOrder()
const = 0;
114 virtual bool_type isBlockOrder()
const = 0;
117 virtual bool_type isTotalDegreeOrder()
const = 0;
120 virtual bool_type ascendingVariables()
const = 0;
123 virtual bool_type descendingVariables()
const = 0;
126 virtual bool_type isDegreeReverseLexicographical()
const = 0;
129 virtual ordered_iterator leadIteratorBegin(
const poly_type&)
const = 0;
132 virtual ordered_iterator leadIteratorEnd(
const poly_type&)
const = 0;
135 virtual ordered_exp_iterator leadExpIteratorBegin(
const poly_type&)
const = 0;
138 virtual ordered_exp_iterator leadExpIteratorEnd(
const poly_type&)
const = 0;
141 virtual ordercode_type getOrderCode()
const = 0;
144 virtual ordercode_type getBaseOrderCode()
const = 0 ;
148 virtual block_iterator
blockBegin()
const {
return block_iterator(); }
149 virtual block_iterator
blockEnd()
const {
return block_iterator(); }
159 virtual idx_type lastBlockStart()
const = 0;
163 monom_type
monom(
const set_type& rhs)
const {
166 return monom_type(rhs);
171 COrderingBase::~COrderingBase() { }
This class is just a wrapper for using variables for storing indices as interim data structure for Bo...
Definition: BooleExponent.h:34
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
int deg_type
Definition: groebner_defs.h:42
COrderedIter< navigator, monom_type > ordered_iterator
Definition: COrderingBase.h:57
BooleSet set_type
Type of Boolean sets.
Definition: COrderingBase.h:71
Definition: COrderingBase.h:43
COrderedIter< navigator, exp_type > ordered_exp_iterator
Definition: COrderingBase.h:58
This struct contains auxiliary type definitions.
Definition: pbori_defs.h:210
This template class is used for polybori's exception handling.
Definition: PBoRiGenericError.h:35
virtual void clearBlocks()
Definition: COrderingBase.h:151
This class wraps the underlying decicion diagram type and defines the necessary operations.
Definition: BoolePolynomial.h:85
Definition: BoolePolynomial.h:63
block_idx_type::const_iterator block_iterator
Type for block iterators.
Definition: COrderingBase.h:68
bool isZero() const
Test whether diagram represents the empty set.
Definition: CCuddDDFacade.h:244
monom_type monom(const set_type &rhs) const
Get monomial from set of subsets of Boolean variables (internal use only)
Definition: COrderingBase.h:163
virtual void appendBlock(checked_idx_type)
Definition: COrderingBase.h:150
std::vector< idx_type > block_idx_type
Type for block indices.
Definition: COrderingBase.h:65
BooleExponent exp_type
Definition: COrderingBase.h:55
CCheckedIdx checked_idx_type
Check index on input.
Definition: COrderingBase.h:62
CCuddNavigator navigator
Definition: COrderingBase.h:54
COrderingBase()
Default constructor.
Definition: COrderingBase.h:74
BooleMonomial monom_type
Definition: COrderingBase.h:53
polybori::CTypes::idx_type idx_type
Definition: groebner_defs.h:44
virtual block_iterator blockEnd() const
Definition: COrderingBase.h:149
BoolePolynomial poly_type
Definition: COrderingBase.h:52
This class defines an iterator for navigating through then and else branches of ZDDs.
Definition: CCuddNavigator.h:36
virtual block_iterator blockBegin() const
Definition: COrderingBase.h:148
Definition: BooleSet.h:57
This class is just a wrapper for using variables from cudd's decicion diagram.
Definition: BooleMonomial.h:50
#define PBORI_UNLIKELY(expression)
Definition: pbori_defs.h:59
This class defines CCheckedIdx.
Definition: CCheckedIdx.h:29