Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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_Quantifiers - Fatal编程技术网

z3在带有量词的公式中超时

z3在带有量词的公式中超时,z3,quantifiers,Z3,Quantifiers,我在下面的例子中得到超时。 是否有任何技巧可以使这项工作正常进行(例如,通过重新设置问题或使用触发器)?对于本例,宏查找器将非常有用(我认为通常对于所有具有含义的量词),您可以通过以下方式启用它: (set-option :macro-finder true) 下面是一个更新后的示例,可以快速获取satsat(rise4fun链接:): (设置选项:宏查找器为真) (声明常量a(数组Int Bool)) (声明const sz Int) (声明常量n Int) (声明常量d Int) (宣布

我在下面的例子中得到超时。


是否有任何技巧可以使这项工作正常进行(例如,通过重新设置问题或使用触发器)?

对于本例,宏查找器将非常有用(我认为通常对于所有具有含义的量词),您可以通过以下方式启用它:

(set-option :macro-finder true)
下面是一个更新后的示例,可以快速获取sat
sat
(rise4fun链接:):

(设置选项:宏查找器为真)
(声明常量a(数组Int Bool))
(声明const sz Int)
(声明常量n Int)
(声明常量d Int)
(宣布康斯特布尔)
(声明常量x Int)
(声明常数y Int)
;;首次启动时间
(声明乐趣ttff(Int)Bool)
(断言
(对于所有((x1内部)(y1内部)(n1内部))
(=(ttff x1 y1 n1)
(及
(对于所有((i Int))
(=>)和((和(
(set-option :macro-finder true)

(declare-const a (Array Int Bool))
(declare-const sz Int)
(declare-const n Int)
(declare-const d Int)
(declare-const r Bool)
(declare-const x Int)
(declare-const y Int)

;;ttff
(declare-fun ttff (Int Int Int) Bool)
  (assert
  (forall ((x1 Int) (y1 Int) (n1 Int))
  (= (ttff x1 y1 n1)
  (and
  (forall ((i Int))
  (=> (and (<= x1 i) (< i y1))
  (= (select a i) true)))
  (forall ((i Int))
  (=> (and (<= y1 i) (< i n1))
  (= (select a i) false)))))))

;; A1
  (assert (and (<= 0 n) (<= n sz)))

;; A2
  (assert (< 0 d))

;; A3
  (assert (and (and (<= 0 x) (<= x y)) (<= y n)))

;; A4
  (assert (ttff x y n))

;; A6
  (assert
  (=> (< 0 y)
  (= (select a (- y 1)) true)))

;; A7
  (assert
  (=> (< 0 x)
  (= (select a (- x 1)) false)))

;;G
(assert
  (not
  (iff
  (and (<= (* 2 d) (+ n 1)) (ttff (- (+ n 1) (* 2 d)) (- (+ n 1) d) (+ n 1)))
  (and (= (- (+ n 1) y) d) (<= d (- y x))))))
(check-sat)
(get-model)