100 public CTypes::auxtypes_type {
108 typedef COrderBase base;
111 typedef BoolePolynomial poly_type;
114 typedef poly_type::size_type size_type;
120 typedef BooleMonomial monom_type;
122 typedef BoolePolynomial::navigator navigator;
124 typedef COrderedIter<navigator, monom_type> indirect_iterator;
127 typedef BooleSet set_type;
130 typedef BooleExponent exp_type;
132 typedef COrderedIter<navigator, exp_type> indirect_exp_iterator;
135 typedef std::vector<idx_type> block_idx_type;
138 typedef block_idx_type::const_iterator block_iterator;
142 typedef invalid_tag lex_property;
143 typedef invalid_tag ordered_property;
144 typedef invalid_tag symmetry_property;
145 typedef invalid_tag degorder_property;
146 typedef invalid_tag blockorder_property;
147 typedef invalid_tag degrevlexorder_property;
148 typedef invalid_tag totaldegorder_property;
149 typedef invalid_tag ascending_property;
150 typedef invalid_tag descending_property;
157 COrderBase(
const COrderBase&) {};
160 virtual ~COrderBase() {};
166 virtual comp_type compare(
const monom_type&,
const monom_type&)
const = 0;
169 virtual comp_type compare(
const exp_type&,
const exp_type&)
const = 0;
172 virtual monom_type lead(
const poly_type&)
const = 0;
175 virtual monom_type lead(
const poly_type&, size_type)
const = 0;
178 virtual exp_type leadExp(
const poly_type&)
const = 0;
181 virtual exp_type leadExp(
const poly_type&, size_type)
const = 0;
184 virtual indirect_iterator leadIteratorBegin(
const poly_type&)
const = 0;
185 virtual indirect_iterator leadIteratorEnd()
const = 0;
186 virtual indirect_exp_iterator leadExpIteratorBegin(
const poly_type&)
const = 0;
187 virtual indirect_exp_iterator leadExpIteratorEnd()
const = 0;
191 virtual block_iterator blockBegin()
const {
return block_iterator(); }
192 virtual block_iterator blockEnd()
const {
return block_iterator(); }
193 virtual void appendBlock(
idx_type)
const { }
194 virtual void clearBlocks()
const { }
200 monom_type monom(
const set_type& rhs)
const {
return monom_type(rhs); }