Isabelle HOLCF 不理解 fixrec

Isabelle HOLCF doesn't understand fixrec

这是一个非常简单的理论:

theory Test
  imports HOLCF
begin
  fixrec down :: "'a u → 'a"
    where "down (up x) = x"
end

它给出了以下错误:

Type unification failed: Clash of types "_ ⇒ _" and "_ → _"

Type error in application: operator not of function type

Operator:  up :: ??'a → ??'a⇩⊥
Operand:   x :: ??'b

我尝试过声明不同的函数,但我总是得到类似的错误。有什么问题以及如何解决?

我尝试用 ⇒ 替换 →,但没有用。

单箭头是连续函数的space,双箭头表示所有总函数的space。 HOLCF 中的所有包仅适用于连续函数。这就是 对大多数 HOLCF 不起作用的原因。但是,连续函数的函数应用程序必须使用 ASCII 中缀运算符 $\<cdot> 明确编写。所以以下工作:

fixrec down :: "'a u → 'a"
  where "down $ (up $ x) = x"

同样,连续函数的 lambda 抽象使用大写 Λ 而不是小写 λ.