使用SOME的Isabelle术语之间的平等

时间:2014-03-30 20:02:08

标签: isabelle

我有点惊讶

value "let x = SOME n. n ∈ {1::int,2} in x = x"

返回True。在β-扩展和α-重命名之后,该术语与以下相同:

value "(SOME na. na ∈ {1::int,2}) = (SOME nb. nb ∈ {1::int,2})"

我不明白为什么这种平等应该成立。为什么na选择的值与为nb选择的值相同?

1 个答案:

答案 0 :(得分:6)

左侧的术语与右侧的术语完全相同(模数转换)。因此,它们也具有相同的价值。等于(或更确切地说是等同于α)的术语总是在HOL中产生相等的值,因为它是确定性的。

你可以认为SOME x. P x给你一个任意但固定的值,属性P成立(如果这样的值存在,否则只是一些任意但固定的值你对此一无所知所有)。特别是,具有相同参数的SOME的不同“调用”将始终为您提供相同的值。 THEundefined等也是如此。

如果你想要真正的非确定性选择,你必须在HOL中使用不同的逻辑或模型非确定性。精化框架提供了一个不确定的monad,其中每个操作都可以有零个,一个或多个可能的结果。