I have executed z3 and CVC4 on the following SMT input. Both return unknown.
;!(a,b,c).(0<=a & 0<=b & 1<=c
; =>
; (a+(b mod c)) mod c = (a+b) mod c)
;
;
(set-logic NIA)
(set-option :print-success false)
(declare-fun a () Int)
(declare-fun b () Int)
(declare-fun c () Int)
(assert (<= 0 a))
(assert (<= 1 c))
(assert (<= 0 b))
(assert (! (not (= (mod (+ a (mod b c)) c) (mod (+ a b) c))) :named goal))
(check-sat)
(exit)
Is there any fundamental reason why they are not able to decide satisfiability?
Which options or other solvers would be suitable to address this kind of problems?