Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Isabelle 2015中定义一般实函数_Isabelle - Fatal编程技术网

在Isabelle 2015中定义一般实函数

在Isabelle 2015中定义一般实函数,isabelle,Isabelle,在Isabelle 2014中,我能够定义一个通用函数,该函数采用自然数和实数,并以以下方式输出实数: definition example :: "nat ⇒ real ⇒ real" where "example i = real" 然而,我无法在2015年的《伊莎贝拉》中做到这一点。我得到以下错误: lhs的坏头:“λx.示例一(实x)” 上述错误出现在定义中: “λx.示例一(实x)≡ 真正的” 在较新版本的Isabelle中,定义泛型实函数的方法是否发生了变化?如何像以前一样定义泛型

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

definition example :: "nat ⇒ real ⇒ real"
where "example i = real"
然而,我无法在2015年的《伊莎贝拉》中做到这一点。我得到以下错误:

lhs的坏头:“λx.示例一(实x)”
上述错误出现在定义中:
“λx.示例一(实x)≡ 真正的”

在较新版本的Isabelle中,定义泛型实函数的方法是否发生了变化?如何像以前一样定义泛型函数


我已经浏览了较新的Isabelle文档,但是我找不到任何与以下案例相关的内容。

我自己,总是在
上声明[[show_sorts=true]]
声明[[show_consts=true]]
,因此我看到了关于类型类和类型的事情,否则我不会看到和想到这些事情

在《伊莎贝拉》中,你有

term "real :: 'a∷real_of => real".
但在《伊莎贝拉》中,它是

term "real :: 'a::type => real".
显然,的类型class
real_在2015年是新的

我在Isabelle 2015和Isabelle 2014中使用命令
print_classes
,并在输出面板中搜索结果

2014年《伊莎贝尔》中的《代码》真实版没有出现任何东西,但2015年《伊莎贝尔》中我得到了

class real_of:
  supersort: type
  parameters:
    real :: 'a => real
  instances:
    int :: real_of
    nat :: real_of
这表明只有
int
nat
被实例化为
real\u of
。您可以将
示例更改为:

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

当参数已经是real类型时,则不需要任何转换函数,所需函数仅为:

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

或者,如果要省略第二个参数,请改用
示例i=id

您所说的“泛型”到底是什么意思?是要定义忽略第一个参数的函数,还是要定义忽略第二个参数将第一个参数从nat转换为实的函数?在这两种情况下,您都不会在2014年或2015年做您想做的事情。@LarsNoschinski我想定义一个忽略第一个参数并使用第二个参数输出实数的函数。输出将是real类型,但是我希望避免使用特定的函数形式。“我怎样才能做到这一点呢?”约阿希姆布雷特纳为这一混乱道歉;泛型我的意思是我想避免显式定义一个函数,而只是使用一个实输出。你的修复很可能不是OP想要的,尽管它指出了问题的根源:2014年,real可以应用于将任何术语转换为real——尽管定义只存在于int和nat,所以你不能证明其他类型的人有什么有趣的东西。甚至不是
real(x::real)=x
。2015年,该类型被限制为减少基本上没有意义的术语的混淆。@Lars,我想OP可以将
real
实例化为
real\u of
。我从你之前给出的一个涉及
Resources.master\u directory(Toplevel.theory\u of state)
的答案中得到了很多好处。更简单(可能更明智)的解决方案是使用
id
而不是
real
(为什么要转换不需要转换的东西?)