在做作业时,我陷入了以下问题:
创建功能添加。它返回两个自然数之和。 证明它有效。
我很困惑,因为要编写代码来证明这一点,我需要将自然数(在Isabelle中为nat
)强制转换为int
。
这是我编写的add
函数:
primrec add :: "nat ⇒ nat ⇒ nat"
where
add01: "add x 0 = x" |
add02: "add x (Suc y) = Suc (add x y) "
要知道结果,我这样做了:
value "somaNat (Suc(Suc(0))) (Suc(0))"
它应该返回3。
Suc(Suc(0) = 2
Suc(0) = 1
还尝试创建一个将其强制转换为int的函数,如下所示:
primrec nat_to_int :: "nat ⇒ int"
where
nat_to_int02: "nat_to_int x = value x"
它不起作用,因为(value x
)不能在右侧。
我在Isabelle提供的教程中搜索了它,而在网上找到了另一个。
我在SO上找到的最接近的问题是: Casting int to nat in Isabelle
那么,如何在Isabelle中将nat
转换为int
?