Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么z3中的以下表达式需要很长时间?_Z3 - Fatal编程技术网

为什么z3中的以下表达式需要很长时间?

为什么z3中的以下表达式需要很长时间?,z3,Z3,这个z3表达式有什么问题 (declare-const arg_1 Int) (assert (and (not (= 0 (mod arg_1 10))) (= 0 (mod (+ 1 arg_1) 10)))) (check-sat) (get-model) 试图用z3评估它永远挂起。另一方面,如果我尝试下面的任何一种方法,它会立即返回 (declare-const arg_1 Int) (declare-const arg_2 Int) (assert (= 0

这个z3表达式有什么问题

(declare-const arg_1 Int)
(assert
  (and
     (not (= 0 (mod arg_1 10)))
     (= 0 (mod (+ 1 arg_1) 10))))
(check-sat)
(get-model)
试图用z3评估它永远挂起。另一方面,如果我尝试下面的任何一种方法,它会立即返回

(declare-const arg_1 Int)
(declare-const arg_2 Int)
(assert (= 0 (mod (+ 1 arg_1) 10)))
(assert (not (= 0 (mod arg_2 10))))

;(assert (= arg_1 arg_2))
(check-sat)
(get-model)

=> sat
(model 
  (define-fun arg_2 () Int
    1)
  (define-fun arg_1 () Int
    9)
)
仅使用第一个表达式

仅使用第二个表达式

在同一个文件中同时声明它们也会立即返回

(declare-const arg_1 Int)
(declare-const arg_2 Int)
(assert (= 0 (mod (+ 1 arg_1) 10)))
(assert (not (= 0 (mod arg_2 10))))

;(assert (= arg_1 arg_2))
(check-sat)
(get-model)

=> sat
(model 
  (define-fun arg_2 () Int
    1)
  (define-fun arg_1 () Int
    9)
)

但是,如果我取消对arg_1=arg_2断言的注释,它将挂起。

这很可能是z3错误。如果使用z3-v:3运行原始版本,则会得到:

$ z3 -v:3 a.smt2
(smt.searching)
(smt.simplifying-clause-set :num-deleted-clauses 1)
final-check OPTIMAL
final-check OPTIMAL
...

它一直在打印。我尝试了cvc4、yices和mathsat;他们都马上解决了。您应该在上报告,以便他们可以查看。

如果您在同一个文件中单独声明它们,会发生什么情况?@LeventErkok使用结果进行了更新。它立即返回,除非我试图断言两个变量相等。
$ z3 -v:3 a.smt2
(smt.searching)
(smt.simplifying-clause-set :num-deleted-clauses 1)
final-check OPTIMAL
final-check OPTIMAL
...