16 #ifndef polybori_BooleSet_h_
17 #define polybori_BooleSet_h_
35 template<
class OrderType,
class NavigatorType,
class MonomType>
40 template<
class OrderType,
class NavigatorType,
class MonomType>
44 #define PBORI_CONST_DDFUNCS(func) \
45 self func(const self& rhs) const { return self(base::func(rhs.diagram())); }
47 #define PBORI_DDFUNCS(func) \
48 self& func(const self& rhs) { base::func(rhs.diagram()); return *this; }
50 #define PBORI_CONST_DDFUNCS_IDX(func) \
51 self func(idx_type idx) const { return self(base::func(idx)); }
53 #define PBORI_DDFUNCS_IDX(func) \
54 self& func(idx_type idx) { base::func(idx); return *this; }
99 base(idx, first, second) { }
104 base(ring, idx, first, second) { }
112 base(ring, navi.getNode()) { }
116 base(ring.zero()) { };
120 base(idx, rhs, rhs) { }
130 const_iterator begin()
const;
133 const_iterator end()
const;
136 const_reverse_iterator rbegin()
const;
139 const_reverse_iterator rend()
const;
142 reverse_exp_iterator rExpBegin()
const;
145 reverse_exp_iterator rExpEnd()
const;
148 exp_iterator expBegin()
const;
151 exp_iterator expEnd()
const;
155 return static_cast<hash_type>(
reinterpret_cast<std::ptrdiff_t
>(getNode()));
164 term_type usedVariables()
const;
167 exp_type usedVariablesExp()
const;
172 return base::change(idx);
177 self add(
const term_type& rhs)
const;
180 bool_type owns(
const term_type& rhs)
const;
183 bool_type owns(
const exp_type&)
const;
186 term_type lastLexicographicalTerm()
const;
189 self divisorsOf(
const term_type& rhs)
const;
192 self divisorsOf(
const exp_type& rhs)
const;
195 self firstDivisorsOf(
const self& rhs)
const;
198 self multiplesOf(
const term_type& rhs)
const;
201 self divide(
const term_type& rhs)
const;
205 bool_type hasTermOfVariables(
const term_type& rhs)
const;
208 self minimalElements()
const;
228 self existAbstract(
const term_type& rhs)
const;
235 return unateProduct(rhs);
254 ostream_type& print(ostream_type&)
const;
260 size_type countIndex(
idx_type idx)
const;
263 double countIndexDouble(
idx_type idx)
const ;
266 bool_type containsDivisorsOfDecDeg(
const term_type& rhs)
const;
269 bool_type containsDivisorsOfDecDeg(
const exp_type& rhs)
const;
273 inline BooleSet::ostream_type&
275 return bset.
print(os);