Лемма 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.