Was causing arithmetic to process a Boolean equality when --arith-rewrite-equalities is true.
Fixes #5761.
if (it == visited.end())
{
- if (cur.getKind() == kind::EQUAL)
+ // don't consider Boolean equality
+ if (cur.getKind() == kind::EQUAL && !cur[0].getType().isBoolean())
{
// For example, (= x y) ---> (and (>= x y) (<= x y))
theory::TrustNode trn = te->ppRewriteEquality(cur);
regress0/arith/issue4367.smt2
regress0/arith/issue4525.smt2
regress0/arith/issue5219-conflict-rewrite.smt2
+ regress0/arith/issue5761-ppr.smt2
regress0/arith/ite-lift.smt2
regress0/arith/leq.01.smtv1.smt2
regress0/arith/miplib.cvc
--- /dev/null
+; COMMAND-LINE: --arith-rewrite-equalities -i
+; EXPECT: sat
+(set-logic QF_NIA)
+(set-info :status sat)
+(declare-const i4 Int)
+(declare-const v9 Bool)
+(assert (= v9 (< (- i4) 1)))
+(push)
+(check-sat)