Isabelle 如何在=>;处实例化typeclass;?
我试图使用Isabelle/Pure作为一个逻辑框架来实现一个新逻辑的证明助手(因此Isabelle/HOL除了作为动机之外是不相关的) 有没有一种方法可以为函数type=>定义一个类型类实例化,比如Isabelle 如何在=>;处实例化typeclass;?,isabelle,Isabelle,我试图使用Isabelle/Pure作为一个逻辑框架来实现一个新逻辑的证明助手(因此Isabelle/HOL除了作为动机之外是不相关的) 有没有一种方法可以为函数type=>定义一个类型类实例化,比如 instantiation "=>" :: (foo,foo)foo 因此,每当A和B是foo的实例化时,A=>B也会自动被实例化吗?不接受上述语法;似乎我需要一个函数类型构造函数的名称(不仅仅是一个符号),但如果存在这样一个名称,我不知道它是什么,也不知道在哪里可以找到它 我是伊莎贝尔的
instantiation "=>" :: (foo,foo)foo
因此,每当A
和B
是foo
的实例化时,A=>B
也会自动被实例化吗?不接受上述语法;似乎我需要一个函数类型构造函数的名称(不仅仅是一个符号),但如果存在这样一个名称,我不知道它是什么,也不知道在哪里可以找到它
我是伊莎贝尔的新手,所以请务必告诉我我所做的是否出于某种原因是错误的。是的,您可以为函数定义一个类实例化。如果为函数
fun
使用类型构造函数的名称,而不是中缀运算符=>
,则没有问题
例如:
class foo =
fixes bar :: 'a
instantiation "fun" :: (foo,foo) foo
begin
definition "(bar :: 'a ⇒ 'b) = (λ x. bar)"
instance ..
end
两点意见:
在双引号中,因为它会与定义函数的外部关键字fun
冲突李>fun
- 在本例中,您还可以编写
,因为函数的实例化“fun”::(type,foo)foo
条的定义不依赖于
类型为条形图
'a的常数
fun
?它在文档中的某个地方吗?是否有一个向Isabelle发出的内省命令,显示中缀运算符的含义?此外,您建议的(type,foo)foo
在纯文本中对我不起作用;它显示未声明的类:“??.type”。无法分析排序
。我必须声明一个default\u sort
来做类似的事情吗?如果你在Pure中,尝试“{}”
而不是type
@MikeShulman,你可以自己找到类型构造函数的名称,你可以键入termèλx。x›
进入伊莎贝尔/杰迪特缓冲区。这将在输出窗格中显示标识函数的类型。然后,按住Ctrl键并将光标悬停在函数空间箭头上。应该会出现一个弹出窗口,告诉您类型构造函数被称为“fun”。或者,在函数空间箭头上按住Ctrl键并单击鼠标右键将带您到达定义点。