/*** The currently asserted disequalities */
context::CDQueue<TNode> d_disequalities;
- NodeSet d_disequalitiesAlreadySplit;
+ typedef context::CDHashSet<Node, NodeHashFunction> CDNodeSet;
+ CDNodeSet d_disequalitiesAlreadySplit;
Node makeDiseqSplitLemma(TNode diseq);
/** Backtracking mechanisms **/
std::vector<std::pair<TermId, InequalityEdge> > d_undoStack;
public:
- InequalityGraph(context::Context* c, bool s = false)
+ InequalityGraph(context::Context* c, context::Context* u, bool s = false)
: ContextNotifyObj(c),
d_ineqNodes(),
d_ineqEdges(),
d_conflict(),
d_modelValues(c),
d_disequalities(c),
- d_disequalitiesAlreadySplit(),
+ d_disequalitiesAlreadySplit(u),
d_undoStack(),
d_undoStackIndex(c)
{}
bool addInequality(TNode a, TNode b, bool strict, TNode fact);
Statistics d_statistics;
public:
- InequalitySolver(context::Context* c, TheoryBV* bv)
+ InequalitySolver(context::Context* c, context::Context* u, TheoryBV* bv)
: SubtheorySolver(c, bv),
d_assertionSet(c),
- d_inequalityGraph(c),
+ d_inequalityGraph(c, u),
d_explanations(c),
d_isComplete(c, true),
d_ineqTerms(),
}
if (options::bitvectorInequalitySolver()) {
- SubtheorySolver* ineq_solver = new InequalitySolver(c, this);
+ SubtheorySolver* ineq_solver = new InequalitySolver(c, u, this);
d_subtheories.push_back(ineq_solver);
d_subtheoryMap[SUB_INEQUALITY] = ineq_solver;
}
bug260a.smt \
bug260b.smt \
bug440.smt \
+ bug734.smt2 \
bug_extract_mult_leading_bit.smt2
TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_BV)
+(declare-fun x0 () (_ BitVec 3))
+(assert (not (= #b001 x0)))
+(assert (bvult #b000 x0))
+(check-sat)
+(check-sat)