量化 Isabelle 中句子的特定部分

Quantifying over a specific part of the sentence in Isabelle

假设我在 Isabelle 中写了一个引理“(∀a. P a ⟹ Q a) ⟹ R b”。 ∀a 只会量化超过 P a。但是,如果我想对 P a ⟹ Q a 进行量化,在 ∀a 之后放置括号(即“(∀a. (P a ⟹ Q a)) ⟹ R a”)将导致 Isabelle 的解析失败。

如何正确量化句子的特定部分?

注意:我知道引理中的自由变量在 Isabelle 中是隐式通用的。这道题主要是内句,量词不要覆盖整个句子

我认为解析失败是因为 Isabelle/HOL 有两种不同类型的蕴涵运算符,Pure.imp () 和 HOL.implies ().前者是 Isabelle 元逻辑的一部分,而后者是 HOL 逻辑的一部分。您可以在这些邮件列表帖子中找到有关为什么存在这种区别以及何时使用它们的更多信息:

https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2018-December/msg00031.html https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2019-January/msg00019.html

运算符的优先级非常低,低于 ,因此 ∀a. (P a ⟹ Q a) 无法像您预期的那样被解析。您可以使用优先级高于 运算符来修复引理中的解析失败。另一种选择是将 更改为元量词 ,使您的句子更符合 Isabelle 的框架。

运算符优先级的 table 可用,但我不能保证它是最新的。您可以在 Isabelle 中使用 print_syntax 命令进行更可靠的最新排序。

Table: https://lists.cam.ac.uk/pipermail/cl-isabelle-users/2012-November/pdfi7tZP06fqA.pdf