首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coq导入问题

Coq导入问题
EN

Stack Overflow用户
提问于 2019-04-27 13:35:42
回答 1查看 102关注 0票数 1

我像往常一样尝试使用以下命令导入Library Coq.Structures.OrdersFacts

代码语言:javascript
复制
Require Import Coq.Structures.OrdersFacts

然后我尝试在那里使用引理:apply CompareFacts.compare_nlt_iff.apply compare_nlt_iff.,但都不起作用...我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-28 23:43:34

CompareFactsModule Type,不是Module。如果你这样做,你可以看到这一点

代码语言:javascript
复制
Require Import  Coq.Structures.OrdersFacts.
Print OrdersFacts.CompareFacts.

找到此类型的模块并应用它的引理。

编辑:

我的意思是,要在nat上使用引理,您需要一个模块来证明nat是一个DecStrOrder' (来自PeanoNatNat就是这样一个模块),并且还需要一个专门针对natCompareFacts

也许一个例子更有用。

代码语言:javascript
复制
Require Import  Coq.Structures.OrdersFacts.

Module mymodule (O:DecStrOrder') (T: CompareFacts O).
  Import T.
  Import O.
  Check compare_eq_iff. (* from CompareFacts *)

  (* a theorem about terms of type O.t *)
  Lemma lem1 a b c: (a ?= b) = Eq -> b == c -> c == a. 
    intros.
    rewrite compare_eq_iff in H.  (* here we use the lemma *)
    rewrite H.
    rewrite H0.
    apply eq_equiv.
  Qed.
End mymodule.

(* the above module functor can be specialised for i.e. nat *)

Require Import PeanoNat.

Print CompareFacts.
Module M : CompareFacts Nat.
  Definition compare_eq_iff := Nat.compare_eq_iff.
  Definition compare_eq := Nat.compare_eq.
  Definition compare_lt_iff := Nat.compare_lt_iff.
  Definition compare_gt_iff := Nat.compare_gt_iff.
  Definition compare_nlt_iff := Nat.compare_nlt_iff.
  Definition compare_ngt_iff := Nat.compare_ngt_iff.
  Definition compare_refl := Nat.compare_refl.
  Definition compare_compat: Proper (eq==>eq==>eq) Nat.compare.
    intros x y Hxy a b Hab; now subst. Defined.
  Definition compare_antisym := Nat.compare_antisym.
End M.  

Module natmodule := mymodule Nat M.
Check natmodule.lem1.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55877588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档