Isabelle/HOL 中未定义
undefined in Isabelle/HOL
我试图在 Isabelle/HOL 中证明这个引理。
lemma "(0::nat) ≠ undefined"
但是挑剔的人找到了这个和它的否定的反例
lemma "(0::nat) = undefined"
这怎么可能?我查了一下 undefined 是如何定义的,它是一个公理:
axiomatization undefined :: 'a
但这仍然是经典逻辑,对吧?所以 "(0::nat) = undefined"
或 "(0::nat) ≠ undefined"
应该为真。
背景:
我有一个函数类型:
type_synonym myfun = "nat ⇒ nat"
并且我在语言环境中对其图像和域施加了限制。当我尝试采用特定函数并证明它满足语言环境中的所有条件时,我遇到了问题,因为某些条件仅适用于未定义的值。
提前谢谢你:)
通过公理化,每种类型都有一个指定值,即undefined
。这不是某个超出该类型正常范围的单独值,即 undefined :: nat
是一个自然数,但您不知道它是 哪个 自然数,并且在事实上,您将无法证明关于 undefined
的任何重要 属性。在这种情况下,一个简单的 属性 是一个适用于 所有 类型值的值。
因此,陈述 undefined ≠ (0 :: nat)
在 Isabelle/HOL 中不可证明,它的否定也不可证明(除了错误和不一致)。
特别是对于undefined :: bool
,我们知道undefined = True ∨ undefined = False
,但是同样,您将无法证明undefined = True
或undefined = False
。
对于单位类型(仅由值() :: unit
组成的单元素类型),但是,你可以证明undefined = ()
,因为这个是一个微不足道的 属性.
至于你原来的问题,听起来好像你必须改变你在你的应用程序中建模不确定性的方式。由于您没有提供有关您在做什么的任何详细信息,因此实际上不可能就该做什么提供任何具体建议。但是试图证明关于 undefined
的任何事情都是行不通的。
我试图在 Isabelle/HOL 中证明这个引理。
lemma "(0::nat) ≠ undefined"
但是挑剔的人找到了这个和它的否定的反例
lemma "(0::nat) = undefined"
这怎么可能?我查了一下 undefined 是如何定义的,它是一个公理:
axiomatization undefined :: 'a
但这仍然是经典逻辑,对吧?所以 "(0::nat) = undefined"
或 "(0::nat) ≠ undefined"
应该为真。
背景:
我有一个函数类型:
type_synonym myfun = "nat ⇒ nat"
并且我在语言环境中对其图像和域施加了限制。当我尝试采用特定函数并证明它满足语言环境中的所有条件时,我遇到了问题,因为某些条件仅适用于未定义的值。
提前谢谢你:)
通过公理化,每种类型都有一个指定值,即undefined
。这不是某个超出该类型正常范围的单独值,即 undefined :: nat
是一个自然数,但您不知道它是 哪个 自然数,并且在事实上,您将无法证明关于 undefined
的任何重要 属性。在这种情况下,一个简单的 属性 是一个适用于 所有 类型值的值。
因此,陈述 undefined ≠ (0 :: nat)
在 Isabelle/HOL 中不可证明,它的否定也不可证明(除了错误和不一致)。
特别是对于undefined :: bool
,我们知道undefined = True ∨ undefined = False
,但是同样,您将无法证明undefined = True
或undefined = False
。
对于单位类型(仅由值() :: unit
组成的单元素类型),但是,你可以证明undefined = ()
,因为这个是一个微不足道的 属性.
至于你原来的问题,听起来好像你必须改变你在你的应用程序中建模不确定性的方式。由于您没有提供有关您在做什么的任何详细信息,因此实际上不可能就该做什么提供任何具体建议。但是试图证明关于 undefined
的任何事情都是行不通的。