178 template<
class OrderType,
class NavigatorType,
class MonomType>
187 #define PBORI_CONST_DDFUNCS(func) \
188 self func(const self& rhs) const { return self(base::func(rhs.diagram())); }
190 #define PBORI_DDFUNCS(func) \
191 self& func(const self& rhs) { base::func(rhs.diagram()); return *this; }
193 #define PBORI_CONST_DDFUNCS_IDX(func) \
194 self func(idx_type idx) const { return self(base::func(idx)); }
196 #define PBORI_DDFUNCS_IDX(func) \
197 self& func(idx_type idx) { base::func(idx); return *this; }
243 base(idx, first, second) {
251 base(ring.manager(), idx, first, second) { }
255 base(rhs.ring().manager(), idx, rhs.navigation()) { }
264 base(ring.manager().manager(), navi) { }
270 const_iterator begin()
const;
273 const_iterator end()
const;
276 exp_iterator expBegin()
const;
279 exp_iterator expEnd()
const;
282 self& operator=(
const self&);
285 using base::operator=;
288 term_type usedVariables()
const;
291 exp_type usedVariablesExp()
const;
294 self& addAssign(
const term_type&);
297 self add(
const term_type&)
const;
300 bool_type owns(
const term_type&)
const;
303 bool_type owns(
const exp_type&)
const;
306 term_type lastLexicographicalTerm()
const;
309 self divisorsOf(
const term_type& rhs)
const;
312 self divisorsOf(
const exp_type& rhs)
const;
315 self firstDivisorsOf(
const self& rhs)
const;
318 self multiplesOf(
const term_type& rhs)
const;
321 self divide(
const term_type& rhs)
const;
324 self& divideAssign(
const term_type& rhs);
327 bool_type hasTermOfVariables(
const term_type& rhs)
const;
330 self minimalElements()
const;
347 self existAbstract(
const term_type& rhs)
const;
353 self ite(
const self& then_dd,
const self& else_dd) {
354 return self(base::ite(then_dd.diagram(), else_dd.diagram()));
358 self&
iteAssign(
const self& then_dd,
const self& else_dd) {
359 base::iteAssign(then_dd.diagram(), else_dd.diagram());
365 return base::unateProduct(rhs.diagram());
406 using
base::stableHash;
412 self emptyElement()
const {
return base::emptyElement(); }
415 size_type countIndex(
idx_type idx)
const;
418 double countIndexDouble(
idx_type idx)
const ;
425 inline BooleSet::ostream_type&
427 return bset.
print(os);