// (mod x (- c)) ---> (mod x c)
NodeManager* nm = NodeManager::currentNM();
Node nn = nm->mkNode(k, t[0], nm->mkConst(-t[1].getConst<Rational>()));
- Node ret = k == kind::INTS_DIVISION ? nm->mkNode(kind::UMINUS, nn) : nn;
- return RewriteResponse(REWRITE_AGAIN, nn);
+ Node ret = (k == kind::INTS_DIVISION || k == kind::INTS_DIVISION_TOTAL)
+ ? nm->mkNode(kind::UMINUS, nn)
+ : nn;
+ return RewriteResponse(REWRITE_AGAIN, ret);
}else if(dIsConstant && n.getKind() == kind::CONST_RATIONAL){
Assert(d.getConst<Rational>().isIntegral());
Assert(n.getConst<Rational>().isIntegral());
regress0/arith/integers/arith-int-042.cvc
regress0/arith/integers/arith-int-042.min.cvc
regress0/arith/issue1399.smt2
+ regress0/arith/issue3412.smt2
+ regress0/arith/issue3413.smt2
regress0/arith/leq.01.smtv1.smt2
regress0/arith/miplib.cvc
regress0/arith/miplib2.cvc
--- /dev/null
+(set-logic QF_NIA)
+(declare-fun a () Int)
+(declare-fun e () Int)
+(declare-fun f () Bool)
+(assert (= (div a e) (- 1)))
+(assert (= f (not (= e (- 1)))))
+(assert (ite f false (= (div a (- 1)) (- 1))))
+(set-info :status sat)
+(check-sat)