16 #ifndef polybori_orderings_COrderingBase_h_
17 #define polybori_orderings_COrderingBase_h_
33 class BoolePolynomial;
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 ;
159 virtual idx_type lastBlockStart()
const = 0;
171 COrderingBase::~COrderingBase() { }