问题标签 [quantifiers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
z3 - pull_nested_quantifiers 选项是否适用于 Z3 中的简化?
我想将公式中的所有嵌套量词拉到最外层。我希望以下命令可以在 Z3 中工作,但它们不能:
目的是:pull-nested-quantifiers
什么?如何使用 SMT-LIB 或 Z3 API 提取嵌套量词?
set - Z3中的排除和包含
我正在尝试使用 Z3 对集合中元素的包含和排除进行建模。特别是包含具有不同值的元素,并排除尚未在目标集中的元素。所以基本上我想要一个集合 U 并让 Z3 找到一个集合 U_d ,它只包含具有不同值的 U 元素。
我当前的方法使用量词,但我无法理解如何声明如果元素出现在 U_d 中,我希望始终将它们包含在 U_d 中。
它产生的作业是:
我想要的作业是:
我知道将 false 分配给 A 和 B 在逻辑上是正确的分配,但我不知道如何以排除这些情况的方式陈述事情。
也许我没有正确考虑这个问题。
任何建议将不胜感激。:)
haskell - 存在类型的理论基础是什么?
Haskell Wiki很好地解释了如何使用存在类型,但我不太了解它们背后的理论。
考虑这个存在类型的例子:
为我们可以转换为String
. wiki 提到我们真正想要定义的类型是
即一个真正的“存在”类型——我松散地认为这是在说“数据构造函数S
采用任何存在Show
实例的类型并包装它”。实际上,您可能可以编写如下 GADT:
我没有尝试编译它,但它似乎应该可以工作。对我来说,GADT 显然等同于我们想要编写的代码 (2)。
但是,我完全不明白为什么(1)等于(2)。为什么将数据构造函数移到外面会forall
变成一个exists
?
我能想到的最接近的是逻辑中的德摩根定律,其中交换否定和量词的顺序将存在量词变成全称量词,反之亦然:
但数据构造函数似乎与否定运算符完全不同。
forall
使用而不是不存在来定义存在类型的能力背后的理论是什么exists
?
.net - 存在量词的 Z3 .NET API
我正在尝试使用 Z3 .net API 来获取存在量词 expr。以下是我的代码:
'
对于该程序,我得到以下结果:
我的问题是 1. 是什么意思!在结果中/ 2. 我无法获得SAT成绩的原因是什么?3. 除了Z3网站上的API菜单外,谁能提供一些与Z3 .NET API对应的武术。
非常感谢!
z3 - 线性整数算术中量词消除的工具
除了 Z3 之外,是否还有其他可用(并且仍然受支持)的 SMT 工具可以为线性整数算术执行量词消除?
谢谢。
z3 - 定义自定义量词
我试图让 Z3 验证一些在符号中使用迭代最大值的正式证明。例如,对于 fa 函数 (↑i: 0 ≤ i < N: f(i)) 指定 f 在应用于 0 和 N 之间的值时的最大值。它可以很好地公理化为:
(↑i: p(i): f(i)) ≤ x <=> (∀i: p(i): f(i) ≤ x)
在 i 的类型上使用 pa 谓词。有没有办法在 Z3 中定义这样的量词?
制定我的证明非常方便,所以我想尽可能地接近这个定义。
谢谢!
python - python regex:多次匹配一个组
我知道有更好或更简单的方法可以做到这一点,但是当我自己尝试过但没有奏效时,我很感兴趣为什么,所以这里有问题:
假设我想使用正则表达式获取 Xml 属性。让我们看看下面的 XML-Node:
解析Node
以及OtherNode
我有以下正则表达式:
的输出pattern.findall(xml)
是:
('Node', 'key2="val2"', 'key2', 'val2') ('OtherNode', '', '', '')
和输出[m.groupdict() for m in pattern.finditer(xml)]
:
似乎只有最后一个元变量可以作为组访问。
如何搭配key1
以及key2
?是否可以将多个组与(...)*
构造匹配?换句话说:meta
如果存在,我希望正则表达式多次匹配命名组。
prolog - 证明的一阶逻辑语句。操纵量词
好的,我有给定的关系:如果 F(x) 不正确,则没有任何情况满足 G(x) 和 H(y,x)。((∀x ¬F(x)) ⇒¬(∀y G(y) ˄ H(y,x)))
现在,我可以将其转换为: (∀y G(y) ˄ H(y,x))) ⇒ ((∀x F(x)) ????
如果不是,则左侧基本上必须暗示:如果 F(x) 不正确.... 没有提及 For All 或 Existential 量词。我可以把否定放在量词之外,即把它写成 (¬(∀x F(x)),因为这让工作更容易???
z3 - 通过 C/C++ API 在 Z3 中消除 LIA 的量词
我想使用 Z3 通过 C/C++ API 消除线性整数算术公式中的量词。考虑一个简单的例子:Exists (x) (x <= y & y <= 2*x)。具有相同模型的无量词公式是 y >= 0。
我试着这样做:
我得到的是
(存在 ((x Int) (and (<= xy) (<= y (* 2 x))))
而我想获得类似的东西
(<= 0 年)
Z3有可能获得它吗?提前谢谢了。
c# - 替代品上的正则表达式量词(竖线“|”)
我想修剪一个字符串,如果它以 foo 或 bar 开头和/或结尾,并且想要获取正则表达式组中的内部字符串。
例如
“fooTestbar”应该是“Test”,
“Test2bar”应该是“Test2”
,“Test3”应该是“Test3”。
我目前的正则表达式是:
但这不起作用,因为我无法将量词?
应用于替代组((foo|bar)
)。
我的代码
任何帮助将不胜感激。