在Isabelle打印/查询类实例

时间:2017-11-04 17:25:39

标签: isabelle

我刚刚开始使用Isabelle。我有这样一个文件:

theory Z
  imports Main Int 
begin

value "(2::int) + (2::int)"

lemma "(n::int) + (m::int) = m + n"
apply(auto) done

print_locale comm_ring_1
print_interps comm_ring_1

end

这大部分都按照我的预期工作:Isabelle告诉我2 + 2 = 4,它知道如何证明n + m = m + n,并且它打印了交换单位环的公理。

但是,我预计行“print_interps comm_ring_1”会让Isabelle告诉我它知道整数是类comm_ring_1的一个实例(鉴于这个事实肯定在标准Int.thy文件中得到证明)库,我们已导入)。但伊莎贝尔实际上并没有告诉我这一点。

还有其他方法可以让Isabelle列出它知道的所有comm_ring_1实例吗?或者具体查询int是否是comm_ring_1的实例?我查看了这样一个命令的参考手册,但找不到一个。

1 个答案:

答案 0 :(得分:0)

Isabelle中的每个类型类都定义了一个同名的语言环境,但它们并不相同。命令print_localeprint_interps仅考虑类型类的区域设置方面。使用instanceinstantiation键入类注册不会将该类型注册为该语言环境的解释。因此print_interps不会列出已经证明类型类实例的类型。这是通过命令print_classes完成的。