3 #include <carl-common/datastructures/Bitset.h>
11 namespace arithmetic {
22 std::map<FormulaT, carl::Bitset>
mData;
26 mOkay.resize(intervals,
true);
36 return mOkay.find_first();
42 std::map<FormulaT, carl::Bitset> data =
mData;
44 covered.resize(
mOkay.size(),
true);
45 while (covered.any()) {
46 auto maxit = data.begin();
47 for (
auto it = data.begin(); it != data.end(); it++) {
48 if (maxit->second.count() < it->second.count()) maxit = it;
50 core.push_back(maxit->first);
51 covered -= maxit->second;
60 os <<
"Covering: " << ri.
mOkay << std::endl;
61 for (
const auto& d: ri.
mData) {
62 os <<
"\t" << d.first <<
" -> " << d.second << std::endl;
Semantics: The space is divided into a number of intervals: (-oo,a)[a,a](a,b)[b,b](b,...
std::map< FormulaT, carl::Bitset > mData
void buildConflictingCore(std::vector< FormulaT > &core) const
const auto & satisfyingSamples() const
Covering(std::size_t intervals)
friend std::ostream & operator<<(std::ostream &os, const Covering &ri)
void add(const FormulaT &c, const carl::Bitset &b)
std::size_t satisfyingInterval() const
std::ostream & operator<<(std::ostream &os, const Covering &ri)
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT