#include "theory/arith/arith_utilities.h"
#include "theory/arith/arith_static_learner.h"
+#include "theory/arith/options.h"
#include "util/propositional_query.h"
StatisticsRegistry::unregisterStat(&d_avgNumMiplibtrickValues);
}
+void ArithStaticLearner::miplibTrickInsert(Node key, Node value){
+ if(options::arithMLTrick()){
+ d_miplibTrick.insert(key, value);
+ }
+}
+
+
void ArithStaticLearner::staticLearning(TNode n, NodeBuilder<>& learned){
vector<TNode> workList;
TNode var = n[1][0];
Node current = (d_miplibTrick.find(var) == d_miplibTrick.end()) ?
mkBoolNode(false) : d_miplibTrick[var];
- d_miplibTrick.insert(var, n.orNode(current));
+
+ miplibTrickInsert(var, n.orNode(current));
Debug("arith::miplib") << "insert " << var << " const " << n << endl;
}
}
Result isTaut = PropositionalQuery::isTautology(possibleTaut);
if(isTaut == Result(Result::VALID)){
miplibTrick(var, values, learned);
- d_miplibTrick.insert(var, mkBoolNode(false));
+ miplibTrickInsert(var, mkBoolNode(false));
}
++keyIter;
}
// The domain is an implicit list OR(x, OR(y, ..., FALSE ))
// or FALSE
CDNodeToNodeListMap d_miplibTrick;
+ void miplibTrickInsert(Node key, Node value);
/**
* Map from a node to it's minimum and maximum.
turns on the preprocessing rewrite turning equalities into a conjunction of inequalities
/turns off the preprocessing rewrite turning equalities into a conjunction of inequalities
+option arithMLTrick --enable-miplib-trick/--disable-miplib-trick bool :default false :read-write
+ turns on the preprocessing step of attempting to infer bounds on miplib problems
+/turns off the preprocessing step of attempting to infer bounds on miplib problems
+
endmodule