首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ssreflect中简单不等式的证明

Ssreflect中简单不等式的证明
EN

Stack Overflow用户
提问于 2017-04-10 21:19:15
回答 2查看 165关注 0票数 1

我在Coq中遇到了一些非常简单的证明问题,使用MathComp库进行反射。

假设我想证明这个引理:

代码语言:javascript
复制
From mathcomp Require Import ssreflect ssrbool ssrnat.

Lemma example m n: n.+1 < m -> n < m.
Proof.
      have predn_ltn_k k: (0 < k.-1) -> (0 < k).
          by case: k.
      rewrite -subn_gt0 subnS => submn_pred_gt0.
      by rewrite -subn_gt0; apply predn_ltn_k.
Qed.

对于这样一个简单的任务,这种方法对我来说似乎有点“非正统”。有没有更好/更简单的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-11 00:04:27

是的,有更好的方法。你的引理是ltnW : forall m n, m < n -> m <= n的一个特例

代码语言:javascript
复制
Lemma example n m : n.+1 < m -> n < m.
Proof. exact: ltnW. Qed.

这是因为n < m实际上是n.+1 <= m的语法糖。

票数 5
EN

Stack Overflow用户

发布于 2017-04-11 00:02:44

我并没有经常练习haven,所以我不能真正判断这是否可以被打下来,但基本上,n < n.+1 < m的想法是

代码语言:javascript
复制
Require Import mathcomp.ssreflect.ssrnat.
Require Import mathcomp.ssreflect.ssrbool.
Require Import mathcomp.ssreflect.ssreflect.

Lemma example m n: n.+1 < m -> n < m.
Proof.
move => ltSnm; apply: ltn_trans; by [apply ltnSn | apply ltSnm].
Qed.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43333052

复制
相关文章

相似问题

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