在 Isabelle 2015 中定义通用实函数
Defining a generic real function in Isabelle 2015
在 Isabelle2014 中,我能够定义一个通用函数,它接受一个自然数和一个实数,并按以下方式输出一个实数:
definition example :: "nat ⇒ real ⇒ real"
where "example i = real"
但是,我无法在 Isabelle2015 中执行此操作。我收到以下错误:
lhs 的错误头部:“λx。示例 i(真实 x)”
上述错误发生在定义中:
"λx. 例子 i (real x) ≡ real"
在新版本的伊莎贝尔中定义泛型实函数的方法是否发生了变化?如何像以前一样定义泛型函数?
我查看了较新的 Isabelle 文档,但是我无法找到与以下案例相关的任何内容。
我自己,我总是在 declare[[show_sorts=true]]
和 declare[[show_consts=true]]
上,所以我看到了关于类型 classes 和类型的东西,否则我不会看到和思考。
在伊莎贝尔2015,你有
term "real :: 'a∷real_of => real".
但在 Isabelle2014 中,它是
term "real :: 'a::type => real".
显然,类型 class 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
这表明只有 int
和 nat
已为 real_of
实例化。您可以将 example
更改为:
definition example :: "nat => 'a::real_of => real" where
"example i = real"
当参数已经是real类型时,那么你不需要任何转换函数,你想要的函数就是:
definition example :: "nat ⇒ real ⇒ real" where
"example i x = x"
或者,如果您想省略第二个参数,请改用 example i = id
。
在 Isabelle2014 中,我能够定义一个通用函数,它接受一个自然数和一个实数,并按以下方式输出一个实数:
definition example :: "nat ⇒ real ⇒ real"
where "example i = real"
但是,我无法在 Isabelle2015 中执行此操作。我收到以下错误:
lhs 的错误头部:“λx。示例 i(真实 x)”
上述错误发生在定义中:
"λx. 例子 i (real x) ≡ real"
在新版本的伊莎贝尔中定义泛型实函数的方法是否发生了变化?如何像以前一样定义泛型函数?
我查看了较新的 Isabelle 文档,但是我无法找到与以下案例相关的任何内容。
我自己,我总是在 declare[[show_sorts=true]]
和 declare[[show_consts=true]]
上,所以我看到了关于类型 classes 和类型的东西,否则我不会看到和思考。
在伊莎贝尔2015,你有
term "real :: 'a∷real_of => real".
但在 Isabelle2014 中,它是
term "real :: 'a::type => real".
显然,类型 class 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
这表明只有 int
和 nat
已为 real_of
实例化。您可以将 example
更改为:
definition example :: "nat => 'a::real_of => real" where
"example i = real"
当参数已经是real类型时,那么你不需要任何转换函数,你想要的函数就是:
definition example :: "nat ⇒ real ⇒ real" where
"example i x = x"
或者,如果您想省略第二个参数,请改用 example i = id
。