簡體   English   中英

如何使用 Coq 庫中的引理?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM