- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简短的问题。我写了一个简单的程序(使用 Z3 NET API)并得到如下输出。
程序(部分):
Sort[] domain = new Sort[3];
domain[0] = intT;
domain[1] = intT;
domain[2] = intT;
FPolicy = z3.MkFuncDecl("FPolicy", domain, boolT);
Term[] args = new Term[3];
args[0] = z3.MkNumeral(0, intT);
args[1] = z3.MkNumeral(1, intT);
args[2] = z3.MkNumeral(30, intT);
z3.AssertCnstr(z3.MkApp(FPolicy, args));
args[1] = z3.MkNumeral(2, intT);
args[2] = z3.MkNumeral(20, intT);
z3.AssertCnstr(z3.MkApp(FPolicy, args));
输出:
FPolicy -> {
0 1 30 -> true
0 2 20 -> true
else -> true
}
我想知道我能否将“else -> true”设为 false(即“else -> false”)。
最佳答案
对于无量词的问题,Z3 (3.2) 将为 else
选择range
中出现频率更高的值.通过 range
在这里,我指的是 Z3 分配给特定有限输入值集的有限值集。在我们的示例中,只有 true
发生在 range
.因此,true
被选为 else
值(value)。
对于无量词(和无数组)的问题,如果选项 :model-compact true
不使用,那么else
的值没关系。也就是说,如果公式 F
是可满足的,Z3 将产生一个模型 M
.然后,如果我们更改任何 else
的值在 M
, 结果模型 M’
仍然是F
的模型.因此,您可以忽略 else
,或者假设它是你想要的任何东西,如果输入公式 F
没有量词,F
不使用数组理论,并且:model-compact true
未使用。此属性基于当前在 Z3 中实现的算法,将来可能会发生变化。相比之下,mhs提供的解决方案不受Z3实现变化的影响。在他的编码中,任何 SMT 求解器(成功生成模型)都必须使用 false
作为量词前件中未指定的每个点的函数值。
另一种选择是使用 default
运算符,并使用数组对您的问题进行编码。什么时候,default
使用运算符,我们应该将数组视为成对:(实际数组,默认值)。此默认值用于提供 else
模型构建期间的值。Z3 还有几个内置公理来传播默认值:store
和 map
运营商。这是您使用这种方法编码的问题:
(set-option :produce-models true)
(declare-const FPolicy (Array Int Int Int Bool))
(assert (select FPolicy 0 1 30))
(assert (select FPolicy 0 2 20))
(assert (not (default FPolicy)))
(check-sat)
(get-model)
关于z3 - 关于 Z3 中 Uninterpreted Function 的表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734976/
我有一个简短的问题。我写了一个简单的程序(使用 Z3 NET API)并得到如下输出。 程序(部分): Sort[] domain = new Sort[3]; dom
我使用的是图标字体,只要图标在界面中正常显示,一切正常。我正在使用 .scss 格式通过 Sass 创建文件。 我注意到当我检查一个元素以在代码检查器中查看它的 CSS 属性时,或者通过代码检查器查看
我是一名优秀的程序员,十分优秀!