Isabelle CONST的意思(与

Isabelle CONST的意思(与,isabelle,Isabelle,《伊莎贝尔/纯洁》中CONST的含义是什么?在HOL.thy中,我们有以下代码块: translations "∃!x. P" ⇌ "CONST Ex1 (λx. P)" 我试图理解“THE”是什么意思,并在HOL.thy中找到了这一点。“THE”在某种程度上得到了解释,但我并没有真正理解到底发生了什么,因为假设P::'a==>a'=>bool definition test :: "'a ==> 'a" where "test y = (THE x. (P x y))" 如果不存在x

《伊莎贝尔/纯洁》中CONST的含义是什么?在HOL.thy中,我们有以下代码块:

translations "∃!x. P" ⇌ "CONST Ex1 (λx. P)"
我试图理解“THE”是什么意思,并在HOL.thy中找到了这一点。“THE”在某种程度上得到了解释,但我并没有真正理解到底发生了什么,因为假设P::'a==>a'=>bool

definition test :: "'a ==> 'a" where
"test y = (THE x. (P x y))"
如果不存在x s.t.p x y,“测试y”怎么可能是类型“a”?不知何故,这必须隐藏在CONST和中(我也不太理解,因为它只是被公理化地作为类型“('a==>bool==>a”没有任何属性)


也许最重要的是,这一切的参考资料在哪里??它不在Isabelle/Isar参考手册、Isabelle HOL教程、Isabelle/Isar实现pdf、理论文件的评论中,也不在我能找到的任何地方。

这个
仅仅是常量
这个
应用的语法糖(try
引理(x.px)=p“by(rule refl)
):参考手册第8.5节描述了语法转换。如果你更深入地观察理论,你会发现常数的公理:
等式
。在
小节中:明确描述运算符
在同一理论中,您将发现常量
的基本(导出)属性
。不幸的是,我不得不同意,手册中没有很好地描述常量
的用途。然而,Tobias Nipkow等人的《高阶逻辑的证明助手》一书中有一节是关于这一点的。另外,请参阅邮件列表上的以下内容。不知何故,我错过了这一公理,它确实澄清了w/r/t(尽管基本上x.P x仍然有点奇怪,其中x:‘a是’a类型的东西,但完全没有确定)。你能给我指一下康斯特的推荐人吗?我不确定它在那里做什么。“a型的东西,但完全不确定”:你是对的。在这种情况下,它是
'a
类型的任意术语。在这种情况下,你几乎无法陈述任何有意义的东西。还有一个相关的常量
undefined
,表示给定类型的任意项。在我的第一个评论中,我已经提供了语法转换的参考:参考手册中的第8.5节。第8.5.2小节提到了
CONST
,但您需要阅读整个章节(如果不是整个章节的话)以获得对实施细节的合理理解。翻译和整个
CONST
实际上只是关于设置符号。作为一个用户,真的没有必要担心这些事情。关于
的重要一点是它的公理化和由此衍生的特征化(参见引理
theI
/
theI'
)。我已经是Isabelle的用户和开发人员8年了,我仍然不知道翻译是如何工作的。当然,如果你真的对这些事情很感兴趣的话,《伊莎贝尔/Isar参考手册》第8章可能是一个不错的选择。
translations
  "_Let (_binds b bs) e"  ⇌ "_Let b (_Let bs e)"
  "let x = a in e"        ⇌ "CONST Let a (λx. e)"
definition test :: "'a ==> 'a" where
"test y = (THE x. (P x y))"