3
我正在使用Coq中的数学类库。这个库巧妙地使用了类型来重载符号,就像这样。在Coq中展开嵌套定义
(* From math-classes *)
Class Equiv A := equiv : relation A.
Infix "=" := equiv : type_scope.
(* My code *)
Definition MyDataType : Type := ...
Definition MyEquality (x y : MyDataType) : Prop := ...
Instance MyEq_equiv : Equiv MyDataType := MyEquality.
我可以定义这种情况下许多不同的数据类型和x = y
将 被理解为我已经注册了x
和y
感谢到实例解析机制类型的平等。
然而,与这些等式中证明是处理有点恼人,因为我有很多unfold
连续定义:
Lemma MyEquality_refl : forall x : MyDataType, x = x.
Proof.
intro.
unfold equiv, MyEq_equiv, MyEquality.
...
Qed.
有没有更有效的方法来做到这一点unfold
?
您的第二个解决方案效果很好,谢谢! – pintoch
很高兴帮助:) –