- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于量词的问题。
假设我有一个数组,我想为这个数组计算数组索引 0、1 和 2 -
(declare-const cpuA (Array Int Int))
(assert (or (= (select cpuA 0) 0) (= (select cpuA 0) 1)))
(assert (or (= (select cpuA 1) 0) (= (select cpuA 1) 1)))
(assert (or (= (select cpuA 2) 0) (= (select cpuA 2) 1)))
(assert (forall ((x Int)) (=> (and (>= x 0) (<= x 2)) (or (= (select cpuA x) 0) (= (select cpuA x) 1)))))
最佳答案
量词推理通常非常昂贵。在您的示例中,量化公式等效于您提供的三个断言。
但是,这不是 Z3 决定/解决您的公式的方式。 Z3 使用一种称为基于模型的量词实例化 (MBQI) 的技术来求解您的公式。
这种技术可以决定许多片段(见 http://rise4fun.com/Z3/tutorial/guide)。它主要对本指南中描述的片段有效。
它支持未解释的函数、算术和位向量理论。它还对数组和数据类型的支持有限。
这足以解决您的示例。 Z3 产生的模型看起来更复杂,因为使用相同的引擎来决定更复杂的片段。
该模型应该看起来像一个小的功能程序。您可以在以下文章中找到有关此方法如何工作的更多信息:
selects
)远小于数组的实际大小。我们应该问自己:“我们真的需要数组来建模/解决问题 X 吗?”。您可以考虑以下替代方案:
(declare-fun cpuA (Int) Int)
(assert (or (= (cpuA 0) 0) (= (cpuA 0) 1)))
(assert (or (= (cpuA 1) 0) (= (cpuA 1) 1)))
(assert (or (= (cpuA 2) 0) (= (cpuA 2) 1)))
0
或 1
.关于z3 - 量词与非量词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10011478/
我是正则表达式的新手,我正在浏览 the regex quantifier section .我对 * 量词有疑问。下面是 * 量词的定义: X* - 没有找到或找到多个字母 X .* - 任何字符序
我想证明以下定理: Theorem Frobenius (A: Set) (q: Prop) (p: A -> Prop) : (q \/ forall x : A, p x) -> (foral
例子: /(?:Foo){0}bar/ 我在另一个答案中看到了类似的内容。起初我想“那应该是什么”,但后来,“好吧,有点消极的看法”,所以 Foo之前不允许 bar ,但这不起作用。 你可以看到这个
添加/删除“+”不会改变输出。但我也没有收到任何错误。 “+”在这里做什么? /.{3}+/g 最佳答案 “+”在这里无效,可能是你的意思 /(.{3})+/g 关于javascript - 正则表达
基本上我有以下字符串:http:/www.-woejfewiofjewow不允许匹配 我的正则表达式:http://(www\.[^-])?[^-].* (我用 regexr.com 来检查它..)
我的正则表达式以量词 * 结尾。但是我在字符串中几乎没有匹配项。我怎样才能让它仍然找到所有匹配项?我的正则表达式: ((CMD1|CMD2)+(?::|;)+.*) 测试字符串为"cmd1: test
关于Eloquent JavaScript这本书chapter 9: Regular Expressions在“解析 INI 文件”部分下有一个示例,其中包含一个我根本听不懂的正则表达式。作者正在尝试
假设我们有一个类型构造函数 f,它通过 DataKinds-promoted 对接受两种类型。 forall (f :: (ka, kb) -> *) 然后我可以实现一个函数 forward ,就像
有forAll量词返回一个检查所有测试用例是否通过的属性。有没有办法定义一个“存在”量词,它返回一个属性来检查它至少一个测试用例是否通过? 最佳答案 通过枚举测试存在会更可靠:SmallCheck ,
我可以知道以下代码的输出为:1,10,10 的原因吗?为什么不是这样:10, 10? var str="1, 100 or 1000?"; var patt1=/10?/g; document.wr
我要匹配模式的表达式 空格后跟(加法运算符或减法运算符) 例如:"+" 应该返回 True 我已经尝试在以下正则 exp 上使用 std::regex_match: "[+-]", "\\s[+-]"
最近在学习CodeQL,对于CodeQL就不介绍了,目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记,根据个人知识库笔记修改整理而来的,分享出来共同学习。个人觉得QL的语法比较反人类,至少与
我想不出我想使用 ?? 的情况在正则表达式中,但也许我想得还不够仔细。 最佳答案 也许是一个分隔符分隔的列表,并且您不想匹配任何终止分隔符。 ^((?:[^,]+,??)+),?$ 那将捕获 "a,b
当我尝试 Regex.Replace() 方法时失败。我该如何解决? Replace.Method (String, String, MatchEvaluator, RegexOptions) 我试试
正则表达式{n,m}量词: {n,m}量词可以重复前面匹配的字符n-m次,至少n次,最多m次。 语法结构: 构造函数方式: ?
当我声明这个新类型时: newtype ListScott a = ListScott { unconsScott :: (a -> ListScott a -> r) -> r -> r }
我是正则表达式的新手,我想找到“po”的所有实例及其变体(即“p.o. | p.o. | p o”)后跟“box”的变体,因为我很感兴趣在采购订单中,而不是在邮政信箱中。下面的代码不起作用,即使它后面
大家好。 我有以下结构和类, template struct Node { T DataMember; Node* Next; }; template class NCA {
在下面的代码中,如何让 Specs2 执行第一个测试? “print ones”测试在它应该失败的时候通过了。由于 new Scope,forAll() 部分中的代码未执行。 println 语句仅用
我是一名优秀的程序员,十分优秀!