我如何在伊莎贝尔(Isabelle)将nat转换为int

时间:2019-11-02 02:12:11

标签: isabelle

在做作业时,我陷入了以下问题:

  

创建功能添加。它返回两个自然数之和。   证明它有效。

我很困惑,因为要编写代码来证明这一点,我需要将自然数(在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

0 个答案:

没有答案