Isabelle简单的双重功能

时间:2014-07-15 13:28:31

标签: recursion logic isabelle

我是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。 我们将非常感谢对答案的解释。 谢谢, 雨天

1 个答案:

答案 0 :(得分:1)

尝试找出如何用double (Suc n)double n来表达Suc。这将给你一个递归的定义。