EqualityStatus TLazyBitblaster::getEqualityStatus(TNode a, TNode b)
{
int numAssertions = d_bv->numAssertions();
+ bool has_full_model =
+ numAssertions != 0 && d_fullModelAssertionLevel.get() == numAssertions;
+
Debug("bv-equality-status")
<< "TLazyBitblaster::getEqualityStatus " << a << " = " << b << "\n";
Debug("bv-equality-status")
- << "BVSatSolver has full model? "
- << (d_fullModelAssertionLevel.get() == numAssertions) << "\n";
+ << "BVSatSolver has full model? " << has_full_model << "\n";
// First check if it trivially rewrites to false/true
Node a_eq_b =
if (a_eq_b == utils::mkFalse()) return theory::EQUALITY_FALSE;
if (a_eq_b == utils::mkTrue()) return theory::EQUALITY_TRUE;
- if (d_fullModelAssertionLevel.get() != numAssertions)
+ if (!has_full_model)
{
return theory::EQUALITY_UNKNOWN;
}
regress0/bv/fuzz41.smtv1.smt2
regress0/bv/issue3621.smt2
regress0/bv/issue-4075.smt2
+ regress0/bv/issue-4076.smt2
regress0/bv/issue-4130.smt2
regress0/bv/int_to_bv_err_on_demand_1.smt2
regress0/bv/mul-neg-unsat.smt2
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic ALL)
+(set-option :produce-models true)
+(declare-fun a ((_ BitVec 2)) Int)
+(declare-fun b (Int) (_ BitVec 2))
+(declare-const c Int)
+(declare-const d Int)
+(assert (= (a #b01) 1))
+(assert(= 0 (a (bvlshr (b c) (b d)))))
+(push)
+(check-sat)
+(pop)
+(check-sat)