如何在Coq模块中使用Lemma?

时间:2013-03-01 09:26:55

标签: coq

我在一个名为A.v

的文件中定义了一个模块类型
Module Type WeakPair.
...

End WeakPair.

Module WeakPairProps (Import WP : WeakPair).

 Lemma Weak_A ....

End WeakPairProps.

然后我想定义另一个文件B.v,可以使用Lemma中的WeakPairProps,例如:Weak_A。 因为WeakPairProps不是模块类型所以我不知道如何编写可以重用WeakPairProps中的引理的模块。

1 个答案:

答案 0 :(得分:2)

首先,您需要定义实现模块类型WeakPair的模块:

Module WeakPairImpl <: WeakPair.
(* stuff goes here *)
End WeakPairImpl.

现在您可以实例化仿函数WeakPairProps

Module WeakPairPropsInst := WeakPairProps(WeakPairImpl).

您现在可以参考引理:

WeakPairPropsInst.lemma

如果您不想使用限定名称,可以导入 WeakPairPropsInst。