我刚刚开始使用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的实例?我查看了这样一个命令的参考手册,但找不到一个。
答案 0 :(得分:0)
Isabelle中的每个类型类都定义了一个同名的语言环境,但它们并不相同。命令print_locale
和print_interps
仅考虑类型类的区域设置方面。使用instance
或instantiation
键入类注册不会将该类型注册为该语言环境的解释。因此print_interps
不会列出已经证明类型类实例的类型。这是通过命令print_classes
完成的。