在Isabelle 2015中定义一个通用的实际功能

时间:2015-07-19 16:21:30

标签: isabelle

在Isabelle2014中,我能够定义一个通用函数,它采用自然数和实数,并以下列方式输出实数:

definition example :: "nat ⇒ real ⇒ real"
where "example i = real"

但是,我在Isabelle2015中无法做到这一点。我收到以下错误:

lhs的坏头:“λx。示例i(真实x)”
上面的错误发生在定义中:
“λx。例子i(真实x)≡真实”

在较新版本的Isabelle中,定义通用实际函数的方法是否已更改?我怎样才能像以前那样定义泛型函数?

我查看了较新的Isabelle文档,但是我找不到任何与下列情况有关的内容。

2 个答案:

答案 0 :(得分:2)

我自己,我总是在declare[[show_sorts=true]]declare[[show_consts=true]],所以我看到了类型类和类型的内容,否则我将无法看到和思考。

在Isabelle2015,你有

term "real :: 'a∷real_of => real".

但是在Isabelle2014中,它是

term "real :: 'a::type => real".

显然,类型类real_of是Isabelle2015中的新类型。

我在Isabelle2015和Isabelle2014中使用命令print_classes,并在输出面板中搜索结果。

在Isabelle2014中没有出现real_of,但在Isabelle2015中我得到了

class real_of:
  supersort: type
  parameters:
    real :: 'a => real
  instances:
    int :: real_of
    nat :: real_of

这表明只有intnatreal_of实例化了。您可以将example更改为此:

definition example :: "nat => 'a::real_of => real" where 
  "example i = real"

答案 1 :(得分:0)

当参数已经是real类型时,你不需要任何转换函数,你想要的函数就是:

definition example :: "nat ⇒ real ⇒ real" where
  "example i x = x"

或者,如果您想省略第二个参数,请改用example i = id