Isabelle:未定义函数的新公理

Isabelle: new axiom for undefined functions

我正在研究一种理论,我大量使用 Funcset 理论中定义的外延函数。我需要使用函数值函数,其中函数和值都是外延的。很烦人的是,我的一些引理失败了,因为 undefined 函数没有将所有内容映射到 undefined。所以目标

undefined x = undefined 

无法证明。我可以使用限制来解决这个问题,但如果没有这些限制,它会更加优雅。添加新公理是否安全:

axiomatization where 
  undefined_at [simp]: "undefined x = undefined"

?我很担心这个因为

1) 我不确定我是否应该 fiddle 这样的逻辑。

2) 添加这个公理后,对于像“undefined \in A”这样的目标,nitpick 会产生错误:Limit reached: too many nested axioms (256).

3) 看似无辜的公理

axiomatization where 
  at_undefined [simp]: "f undefined = undefined"

产生奇怪的目标,例如 "P ==> undefined" .

常量 undefined 并没有真正模拟 undefined 的数学概念。相反,它是否表示未指定,正如我在 Isabelle 邮件列表的 thread 中所解释的那样。

Back in 2008undefined实际上是用公理undefined x = undefined指定的,即函数undefined将所有内容映射到undefined。很快,人们意识到这不是undefined应该表示的,因为它把函数undefined限制为一个常数函数,根本不是一个任意函数。添加这个公理不会使 HOL 不可靠,但它严重限制了已证明内容的普遍性,因为 undefined 被 Isabelle 的包大量使用。

另一个公理 at_undefined 然而会导致不一致。如前所述,这意味着每个函数 f 都应该是未指定值 undefined 上的恒等式。考虑布尔值的类型 boolundefined 必须是 TrueFalse。因此,如果您对 f 取反,则公理要求 ~ True = True~ False = False。显然,这与op ~的规范不一致,所以公理也不一致