[英]How do I use a lemma from a Coq library?
我正在嘗試使用這個庫中的引理 eqb_sym: https ://coq.inria.fr/library/Coq.Structures.Equalities.html
我試過“需要導入 Coq.Structures.Equalities”。 和“需要導入 BoolEqualityFacts”但都不讓我使用引理 eqb_sym。 Coq 抱怨它在當前環境中找不到引理。 一般來說,當我從https://coq.inria.fr/library/ 中的庫中找到我想使用的引理時,我在哪里可以找到要導入的正確模塊並且是“需要導入模塊名稱”正確的使用方法?
eqb_sym
引理定義在由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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.