【发布时间】:2014-06-08 23:08:27
【问题描述】:
如何在 Coq 中展开类实例?似乎只有当实例不包含证明或其他内容时才有可能。考虑一下:
Class C1 (t:Type) := {v1:t}.
Class C2 (t:Type) := {v2:t;c2:v2=v2}.
Instance C1_nat: C1 nat:= {v1:=4}.
Instance C2_nat: C2 nat:= {v2:=4}.
trivial.
Qed.
Theorem thm1 : v1=4.
unfold v1.
unfold C1_nat.
trivial.
Qed.
Theorem thm2 : v2=4.
unfold v2.
unfold C2_nat.
trivial.
Qed.
thm1被证明了,但我无法证明thm2;它在unfold C2_nat 步骤与Error: Cannot coerce C2_nat to an evaluable reference. 抱怨。
发生了什么事?如何获得C2_nat对v2的定义?
【问题讨论】:
-
我认为这种透明-不透明功能的存在是为了加快减少速度。您应该将程序中对输出没有贡献的部分设置为不透明,而这些部分仅对类型有贡献。