Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/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,有一种distribute for all策略可用于在连词上分布通用量词。我对通用量词和存在量词的更一般的程序感兴趣,这将尽可能缩小量词的范围。 例如,我想要公式 (exists((x Int))(and(=z(*2 x))(Z3代码库中的分支mcsat有一个新策略称为miniscope。它做你想要的。我们可以使用mcsat来构建mcsat分支。我们只需用mcsat替换不稳定的 下面是一些使用这种策略的示例 (declare-const z Int) (declare-const x Int)

有一种
distribute for all
策略可用于在连词上分布通用量词。我对通用量词和存在量词的更一般的程序感兴趣,这将尽可能缩小量词的范围。 例如,我想要公式


(exists((x Int))(and(=z(*2 x))(Z3代码库中的分支
mcsat
有一个新策略称为
miniscope
。它做你想要的。我们可以使用
mcsat
来构建
mcsat
分支。我们只需用
mcsat
替换
不稳定的

下面是一些使用这种策略的示例

(declare-const z Int)
(declare-const x Int)
(declare-const y Int)

(assert (exists ((x Int)) (and (= z (* 2 x)) (<= z y))))

(apply miniscope)
以及生产量

(goals
(goal
  (<= z y)
  (exists ((x!1 Int)) (= z (* 2 x!1)))
  :precision precise :depth 3)
)
(goals
(goal
  (forall ((x2 Real))
    (or (q2 x2 x2)
        (and (forall ((x1 Int)) (q1 x1 x2))
             (exists ((y Real)) (q1 (to_int y) x2)))))
  :precision precise :depth 3)
)
编辑

mcsat
分支包含正在进行的工作,这些工作最终将合并到
master
分支中。但是,合并可能不会在下一个正式版本(v4.3.2)中发生。当我们发布新版本时,我们将
不稳定的
contrib
分支合并到
master
分支中

mcsat
分支实质上是在添加新功能。它与
不稳定
contrib
分支不兼容

我们鼓励高级用户(熟悉git)使用非官方版本和替代分支。当然,在报告bug/问题时,应该使用与提交相关的git哈希,而不是版本号


结束编辑

谢谢。“迷你镜”策略是专门针对分支机构的吗?我的意思是,你认为可以“整合”吗它使用了主分支的源代码,但付出的努力相对较少?我只是不知道mcsat分支与主分支有什么不同,所以我不知道切换到该分支也会产生什么影响。您是否计划最终在主分支中添加该策略?我用有关
mcsat
分支机构。
(goals
(goal
  (forall ((x2 Real))
    (or (q2 x2 x2)
        (and (forall ((x1 Int)) (q1 x1 x2))
             (exists ((y Real)) (q1 (to_int y) x2)))))
  :precision precise :depth 3)
)