如何使用Coq库中的引理?

如何使用Coq库中的引理?,coq,Coq,我正在尝试使用此库中的引理eqbu sym: 我试过“需要导入Coq.Structures.Equalities.”和“需要导入BoolEqualityFacts”,但都没有让我使用引理eqbu-sym。Coq抱怨在当前环境中找不到引理。一般来说,当我从中的库中找到我想要使用的引理时,我在哪里找到要导入的正确模块,并且“Require import module Name”是使用它的正确方法?引理是在由BooleanEqualityType'类型的模块参数化的函子中定义的。要使用它,必须实例化

我正在尝试使用此库中的引理eqbu sym:


我试过“需要导入Coq.Structures.Equalities.”和“需要导入BoolEqualityFacts”,但都没有让我使用引理eqbu-sym。Coq抱怨在当前环境中找不到引理。一般来说,当我从中的库中找到我想要使用的引理时,我在哪里找到要导入的正确模块,并且“Require import module Name”是使用它的正确方法?

引理是在由
BooleanEqualityType'
类型的模块参数化的函子中定义的。要使用它,必须实例化该函子并导入它。以下是自然数标准类型的可能用法,
nat

Require Import Coq.Structures.Equalities.

(* We are defining an implementation of a module of
   type BooleanEqualityType'. You can check what fields are required
   by asking Coq to print BooleanEqualityType'. *)
Module N <: BooleanEqualityType'.

Definition t := nat.
Definition eq := @eq nat.
Lemma eq_equiv : Equivalence eq.
Proof. split; congruence. Qed.
Definition eqb := Nat.eqb.
Lemma eqb_eq : forall n m, eqb n m = true <-> eq n m.
Proof. (* Fill in here *) Admitted.

End N.

(* Instantiate the generic lemmas for our implementation *)
Module Import NBoolEqualityFacts := BoolEqualityFacts(N).

(* We can now use the lemma *)
Check eqb_sym.
需要导入Coq.Structures.Equalities。
(*我们正在定义一个模块的实现
键入BooleanEqualityType'。您可以检查需要哪些字段
通过要求Coq打印BooleanEqualityType.*)

模块N请注意,在标准情况下,如
nat
,标准库中提供了相应的模块<代码>需要导入OrdersEx。模块NBoolEqualityFacts:=BoolEqualityFacts(Nat作为OT)。