为什么我不能在Isabelle中定义nat?

时间:2018-03-21 04:48:22

标签: isabelle

我关注tutorial for Isabelle,并在2.2.2节中输入以下示例:

Object.assign()

但得到了错误

theory FailedBasicAdditionProof
  imports Main
begin

datatype nat = 0 | Suc nat

fun add :: "nat ⇒ nat ⇒ nat" where
"add 0 n = n" |
"add (Suc m) n = Suc(add m n)"

lemma add_02: "add m 0 = m"
apply(induction m)
apply(auto)
  done
end

我做错了什么?

1 个答案:

答案 0 :(得分:2)

如果您恰好查看the datatype docs,则完成相同的示例,但使用Legacy feature! Bad name binding: "nat.0"⌂ Legacy feature! Bad name binding: "nat.0"⌂ Bad name: "nat.0" 而不是Zero这个词。

如果您将0替换为0,则示例应该有效。我认为这是一个可能在以后更改或添加的命名约定。

正确的例子在这里:

Zero