首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Coq中自然数的最大值、归纳法的引理

关于Coq中自然数的最大值、归纳法的引理
EN

Stack Overflow用户
提问于 2019-04-13 09:47:24
回答 1查看 64关注 0票数 0

我有一个用自然数计算的T型家族。如果某个类型有人居住,那么下一个类型也有人居住。(我可以说家庭是“向上居住的”吗?)

假设n型有人居住。如何证明数为max(m,n)的类型也有人居住?

代码语言:javascript
复制
Parameter fam : nat->Type.
Axiom fam_mon : forall n, fam n -> fam (S n).
Lemma mxinh m : forall n, fam n -> fam (max m n).
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-13 12:37:38

嗯,我不知道你在哪里发现困难,没有特别的困难来证明这一点,鉴于fam n持有任意大的数字后,证人。

例如,一个详细的证据是:

代码语言:javascript
复制
Parameter fam : nat->Type.
Axiom fam_mon : forall n, fam n -> fam n.+1.

Lemma fam_gt n k (hb : fam n) : fam (k + n).
Proof. by elim: k => //= k ihk; apply: fam_mon. Qed.

Lemma mxinh m n (hb : fam n) : fam (maxn n m).
Proof. by rewrite maxnE addnC; apply: fam_gt. Qed.

(* Another proof, YMMV *)  
Lemma fam_leq n m (hl : n <= m) (hb : fam n) : fam m.
Proof. by move/subnK: hl <-; apply: fam_gt. Qed.

Lemma mxinh' m n (hb : fam n) : fam (maxn n m).
Proof. exact: fam_leq (leq_maxl _ _) hb. Qed.

但是实际上,除非我们对用例有更多的了解,否则如何构建这个理论还不清楚。

为那些喜欢使用“标准库”的人编辑:

代码语言:javascript
复制
Require Import PeanoNat.

Parameter fam : nat -> Type.
Axiom fam_mon : forall n, fam n -> fam (S n).

Lemma fam_gt n k (hb : fam n) : fam (n + k).
Proof. now rewrite Nat.add_comm; induction k; auto; apply fam_mon. Qed.

Lemma fam_leq n m (hl : n <= m) (hb : fam n) : fam m.
Proof. now rewrite <- (Nat.sub_add _ _ hl), Nat.add_comm; apply fam_gt. Qed.

Lemma mxinh m n (hb : fam n) : fam (max n m).
Proof. exact (fam_leq (Nat.le_max_l _ _) hb). Qed.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55664149

复制
相关文章

相似问题

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