我是Isabelle的新手,也是一般的HOL编程。 教科书中的一个练习是:
定义递归函数double ::nat⇒nat并证明double m = add m m。
我仍然试图定义它,但我无法弄明白。, 这是我到目前为止所做的。
fun double :: "nat => nat" where
"double 0 = 0" | //my base case
"double (n) = //I don't know what to do here
我有一个函数add定义如下。
fun add :: "nat ⇒ nat ⇒ nat" where
"add 0 n = n" |
"add (Suc m) n = Suc(add m n)"
但我认为我不打算在double的定义中使用add。 我们将非常感谢对答案的解释。 谢谢, 雨天
答案 0 :(得分:1)
尝试找出如何用double (Suc n)
和double n
来表达Suc
。这将给你一个递归的定义。