如何在 => 处实例化一个类型类?

How can I instantiate a typeclass at =>?

我正在尝试使用 Isabelle/Pure 作为逻辑框架来实现新逻辑的证明助手(因此 Isabelle/HOL 除了作为动机之外是无关紧要的)。

有没有办法为函数类型 => 定义类型类实例化,比如

instantiation "=>" :: (foo,foo)foo

所以只要 ABfoo 的实例化,那么 A => B 会自动成为吗?不接受上述语法;似乎我需要函数类型构造函数的名称(不仅仅是符号),但如果存在这样的名称,我不知道它是什么或在哪里可以找到它。

我是 Isabelle 的新手,所以请告诉我我正在尝试做的事情是否出于某种原因是错误的。

是的,您可以为函数定义一个 class 实例化。如果您对函数使用类型构造函数的名称 fun 而不是中缀运算符 =>.

则没有问题

例如:

class foo = 
  fixes bar :: 'a

instantiation "fun" :: (foo,foo) foo
begin
definition "(bar :: 'a ⇒ 'b) = (λ x. bar)" 
instance ..
end

两个备注:

  • fun 用双引号引起来,否则它会与定义函数的外部关键字 fun 发生冲突。
  • 在这个例子中,你也可以写成instantiation "fun" :: (type,foo) foo,因为bar函数的定义不依赖于 bar 'a.
  • 类型常量