3 #include <carl-common/datastructures/Bitset.h>
14 std::map<carl::Variable,carl::Bitset>
mData;
25 template<
typename Contractor>
27 add(c.var(), c.origin(), c.dependees());
30 void add(carl::Variable v,
const FormulaT& c,
const std::vector<carl::Variable>& used) {
33 SMTRAT_LOG_DEBUG(
"smtrat.mcsat.icp",
"Added " << c <<
" to " << v <<
" -> " << bs);
34 for (
auto used_var: used) {
35 bs = bs |
mData[used_var];
36 SMTRAT_LOG_DEBUG(
"smtrat.mcsat.icp",
"Added " <<
mData[used_var] <<
" from " << used_var <<
" to " << v <<
" -> " << bs);
40 std::vector<FormulaT>
get(carl::Variable v,
bool negate =
true)
const {
41 std::vector<FormulaT> res;
42 auto it =
mData.find(v);
43 assert(it !=
mData.end());
44 for (std::size_t i: it->second) {
std::vector< FormulaT > mConstraints
std::vector< FormulaT > get(carl::Variable v, bool negate=true) const
void add(carl::Variable v, const FormulaT &c, const std::vector< carl::Variable > &used)
void add(const Contractor &c)
std::map< FormulaT, std::size_t > mConstraintIDs
std::map< carl::Variable, carl::Bitset > mData
std::size_t get_constraint_id(const FormulaT &c)
carl::Contraction< Operator, Poly > Contractor
Class to create the formulas for axioms.
carl::Formula< Poly > FormulaT
#define SMTRAT_LOG_DEBUG(channel, msg)