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

时间:2018-06-04 04:37:10

标签: isabelle

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

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

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

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

我是Isabelle的新手,所以请告诉我,由于某种原因,我想做的事情是错误的。

1 个答案:

答案 0 :(得分:1)

是的,您可以为函数定义类实例化。如果对函数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
相关问题