我在以下 SMT 输入上执行了 z3 和 CVC4。两者都返回未知。
;!(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)
他们无法决定可满足性是否有任何根本原因?
哪些选项或其他求解器适合解决此类问题?