天道酬勤,学无止境

quantifiers

根据 ∀, ∃ 的示例 Kripke 模型的正式公理定义(formal axiomatic def of an example Kripke model in terms of ∀, ∃)

问题 我正在寻找一个关于∀、∃的示例Kripke 模型的正式公理定义,假设具有简单的谓词逻辑、布尔逻辑...... 我遇到的所有 Kripke 模型的描述都只是通过对英语语言概念的释义(即 ☐ =“necessity”)来引入新的符号。 虽然肯定有帮助和激励,但它并不能保证我会和其他人一样对 Kripke 模型有相同的解释。 (这个问题是对问题 Kripke 语义的良好回答的结果:学习软件可用?) 回答1 你可以很容易地用 forall 替换盒子,用存在的菱形(或者只是将它重写为对偶)。 但是 Kripke 模型中的解释要点是,这些公式是在纯粹的本地级别进行评估的。 如果您将 Kripke 模型想象成一个在顶点上带有标签的有向图(标签对应于命题),那么公式总是在状态 下* 求值。 根据 Kripkes 可能世界哲学,这通常被称为一个世界。 现在,你如何评价它? 好吧,简单地说,当且仅当对于所有可到达的世界(当前顶点的传出邻域)phi 为真,框 phi 被评估为真(在世界/状态/顶点中)。 将此与一阶逻辑进行比较,其中 forall phi 为真当且仅当 phi 对所有对象都为真(全局!)。 现在,钻石随后用双非框代替它,但如果您愿意,当且仅当存在可达世界(顶点有一个传出邻居)时,钻石 phi 被评估为真(在世界/状态/顶点中)其中 phi 为真。 再次将其与一阶逻辑进行比较

2021-10-31 15:22:19    分类:技术分享    logic   semantics   definition   axiom   quantifiers

z3py 在尝试消除量词时死了(z3py dies trying to do quantifier elimination)

问题 我有一个 Python 程序,我在其中生成不同的 z3 公式,然后对其中的一些进行存在量化。 我的程序过去运行良好,但突然间它开始尝试对某些表达式进行量词消除。 代码不会返回并挂在这些示例上。 这是出现问题的输入之一。 所有变量都是整数。 我尝试打印expr但它从未打印过。 在有问题的情况下,进程也不能轻易终止。 我必须通过关闭终端(ubuntu)来强制它。 Exists([R_1_0, R__0, R_0_1, R__1, R_0_0, R_1_1], And(n >= 3, X == n, X_0_ + X_1_ == X, X_0_ >= 0, R_0_0 <= X_0_, R_0_0 >= 0, R_0_0 <= R__0, R_0_1 <= X_0_, R_0_1 >= 0, R_0_1 <= R__1, X_1_ >= 0, R_1_0 <= X_1_, R_1_0 >= 0, R_1_0 <= R__0, R_1_1 <= X_1_, R_1_1 >= 0, R_1_1 <= R__1, R__0 <= X, R__1 <= X, R_1_0 + R_0_0 == R__0, R_1_1 + R_0_1 == R__1, And(True, And(And(3*R__0 > 2*n, R_0_0 >= R_1_0), 3*R_0_0 <= 2*n), And

2021-10-26 09:17:18    分类:技术分享    z3   z3py   quantifiers

Dafny/Boogie 中的触发器是什么?(What are triggers in Dafny/Boogie?)

问题 我一直在达夫尼一瘸一拐地走,不了解触发器。 也许因此,我编写的程序似乎给验证者带来了困难。 有时我会花大量时间摆弄我的证明,试图说服达夫尼/布吉它是有效的; 当我开始工作时,有时验证很慢(这严重降低了我继续的能力)。 很难问一个准确的问题,因为我不知道我不知道是什么。 但让我们从基础开始: 什么是触发器? 它们什么时候使用? 它们是如何推断的? 一旦我理解了所有这些,接下来我应该阅读什么? 回答1 了解触发器绝对是成为 Dafny 专家的重要组成部分! 我们最近为 Dafny 开设了一个常见问题页面,其中包括对触发器的相当广泛的描述。 我建议您首先阅读常见问题解答的那部分。 (本答案的其余部分假设您已经这样做了。) 没有涉及的一件事是如何推断触发器。 (我很快会在常见问题解答中添加此答案的编辑版本。)实际上,触发器可能在两个不同的级别进行推断:Dafny 或 Z3。 一般来说,最好在 Dafny 级别推断触发器,因为更有可能在从翻译到 Z3 的所有编码细节都涉及到之前找到一个简洁的触发器。 但是,如果 Dafny 没有设法推断出触发器,有时 Z3 仍然可以作为权宜之计做一些有用的事情。 (在这种情况下,达夫尼会发出警告。) Z3 和 Dafny 使用的推理过程在概念上非常相似。 给定一个用于所有forall x1, ..., xn :: e的量化表达式

2021-10-23 08:30:57    分类:技术分享    quantifiers   dafny   boogie

量词范围在后视中不起作用(Quantifier range not working in lookbehind)

问题 好的,所以我正在开发一个项目,我需要一个可以匹配 * 后跟 1-4 个空格或制表符,然后是一行文本的正则表达式。 现在我正在使用 .* 在lookbehind 之后进行测试。 但是我可以让它明确匹配 1、2 或 4 个空格/制表符但不是 1-4。 我正在针对以下块进行测试 * test line here * Second test * Third test * Another test 这些是我正在测试的两种模式(?<=(\*[ \t]{3})).*它按预期工作并匹配第二行,如果我用 1、2 或 4 替换 3,则相同但是,如果我用 1,4 替换它,形成以下模式(?<=(\*[ \t]{1,4})).*它不再匹配任何行,老实说,我无法理解为什么。 我试过谷歌搜索没有成功。 我正在使用 g(lobal) 标志。 回答1 PHP,像许多风格一样,不支持可变长度的lookbehind。 唯一的支持是在lookbehind 的顶层的交替( | )。 甚至一个? 可以打破格局。 另一种方法是使用: (?<=\*[ \t]|\*[ \t]{2}|\*[ \t]{3}|\*[ \t]{4}).* 或者更好的是,中止一个组的后视: \*[ \t]{1,4}(.*) 这对您来说应该很有效,因为无论如何您似乎都没有重叠。 从手册: 后视断言的内容受到限制,因此它匹配的所有字符串都必须具有固定长º

2021-10-22 09:19:01    分类:技术分享    php   regex   lookbehind   quantifiers

z3py dies trying to do quantifier elimination

I have a Python program in which I generate different z3 formulas, then I do existential quantification on some of them. My program used to work fine, but all of a sudden it started to die trying to do quantifier elimination on some of the expressions. The code does not return and hangs on those examples. This is one of the inputs for which the problem occurs. All variables are integers. I try to print expr but it is never printed. In the problematic cases the process cannot be killed easily either. I have to force it by closing the terminal (ubuntu). Exists([R_1_0, R__0, R_0_1, R__1, R_0_0, R

2021-10-21 03:38:47    分类:问答    z3   z3py   quantifiers

python中占有量词的替代品(Alternative to possessive quantifier in python)

问题 我试图匹配字符串Article所有出现,后跟一个数字(单个或多个数字),后面没有一个左括号。 在 Sublime Text 中,我使用以下正则表达式: Article\s[0-9]++(?!\() 搜索以下字符串: Article 29 Article 30(1) 这与Article 30(1) (如我所料Article 30(1)不符,但与Article 29 Article 1和Article 1 Article 29不符。 尝试在 Python (3) 中使用 import re article_list = re.findall(r'Article\s[0-9]++(?!\()', "Article 30(1)") 当我使用 Python 正则表达式不支持的(嵌套)所有格量词时,出现以下错误。 有什么方法可以匹配我希望它(不是)在 Python 中匹配的内容? 回答1 Python re不支持所有格量​​词。 您可以考虑改用 Python PyPi regex 模块,它支持这种类型的量词。 或使用以下变通方法。 您需要在前瞻中添加一个数字: Article\s[0-9]+(?![(0-9]) ^^^ 请参阅此正则表达式演示。 或者,使用单词边界: Article\s[0-9]+\b(?!\() ^ 请参阅此正则表达式演示。 回答2 您还可以使用(?=(...))

2021-10-15 17:16:08    分类:技术分享    python   regex   quantifiers

正则表达式:星号重复运算符的所有格量词,即 \d**(Regex: possessive quantifier for the star repetition operator, i.e. \d**)

问题 从 GLib 参考手册,“正则表达式语法”部分,“原子分组和所有格量词”小节: 考虑应用到字符串123456bar时的模式\d+foo :在匹配所有 6 个数字然后匹配 "foo" 失败后,匹配器的正常操作是仅匹配 \d+ 项的 5 个数字再试一次,然后与 4,依此类推,最终失败。 如果我们在前面的例子中使用(?>\d+)foo (称为原子分组),匹配器会在第一次匹配“foo”失败时立即放弃。 当原子组的子模式只是一个重复项时,如上例所示,可以使用更简单的表示法,称为“占有量词”: \d++foo 我的问题是:是否有任何理由说明星号 ( * ) 重复运算符没有等效项? Java 中的示例: final String in = "123456"; // "plus" (+) System.out.println(in.matches("\\d+")); // true System.out.println(in.matches("(?>\\d+)")); // true System.out.println(in.matches("\\d++")); // true // "star" (*) System.out.println(in.matches("\\d*")); // true System.out.println(in.matches("(?>\\d*)")); /

2021-10-14 22:55:09    分类:技术分享    java   regex   quantifiers

Regex: possessive quantifier for the star repetition operator, i.e. \d**

From the GLib Reference Manual, section "Regular expression syntax", subsection "Atomic grouping and possessive quantifiers": Consider the pattern \d+foo when applied to the string 123456bar: after matching all 6 digits and then failing to match "foo", the normal action of the matcher is to try again with only 5 digits matching the \d+ item, and then with 4, and so on, before ultimately failing. If we use (?>\d+)foo (called atomic grouping) for the previous example, the matcher give up immediately on failing to match "foo" the first time. When the subpattern for an atomic group is just a

2021-10-14 13:55:20    分类:问答    java   regex   quantifiers

formal axiomatic def of an example Kripke model in terms of ∀, ∃

I am looking for a formal axiomatic definition of an example Kripke model in terms of ∀, ∃ assuming knowledge of simple predicate logic, boolean logic,... All descriptions of Kripke models I encounter simply introduce new notations through paraphrasing to english linguistic concepts (i.e. ☐ = "necessity"). While certainly both helpfull and motivating, it does not assure that I will have the same interpretation of what a Kripke model is as someone else. (this question is the result from good answer at question Kripke semantics: learning software available?)

2021-09-25 11:41:54    分类:问答    logic   semantics   definition   axiom   quantifiers

为什么我的正则表达式捕获组在匹配多个部分时只捕获字符串的最后一部分?(Why is my regex capture group only capturing the last part of the string when it matches multiple parts?)

问题 我试过的 var test = "asdfdas ABCD EFGH"; var regex = /^\S+( [A-Z]{4})+$/; // Also tried: /^\S+( [A-Z]{4})+$/g // And: /^\S+( [A-Z]{4})+?$/g var matches = test.match(regex); 我做了一个 JSFiddle。 我的期望 变量matches应该成为这个数组: [ "asdfdas ABCD EFGH", " ABCD", " EFGH" ] 我得到什么 变量matches实际上是这个数组: [ "asdfdas ABCD EFGH", " EFGH" ] 我的想法 我的猜测是我在捕获组和/或$逻辑中遗漏了一些东西。 任何帮助,将不胜感激。 (我知道我可以在多个正则表达式中弄清楚如何做到这一点,但我想了解这里发生了什么。) 回答1 是的,这正是它所做的; 你没有做错任何事。 当一个组被赋予一个量词时,它只捕获它的最后一次匹配,这就是它在 JavaScript 中所做的一切。 一般的解决方法是使用多个正则表达式,如您所说,例如 var test = "asdfdas ABCD EFGH"; var match = test.match(/^\S+((?: [A-Z]{4})+)$/); // capture all

2021-09-16 01:05:10    分类:技术分享    javascript   regex   quantifiers   capture-group