首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索Coq库

搜索Coq库
EN

Stack Overflow用户
提问于 2020-05-09 03:59:51
回答 1查看 256关注 0票数 1

我试图证明Coq中的n <= 2^n,我忽略了一个必须存在于某个地方的简单引理:

代码语言:javascript
复制
a <= b /\ c <= d -> a+c <= b+d

更广泛地说,我如何在Coq库中搜索像这样的引理?以下是我的完整代码:

代码语言:javascript
复制
(***********)
(* imports *)
(***********)
Require Import Nat.
Require Import Init.Nat.
Require Import Coq.Arith.PeanoNat.

(************************)
(* exponential function *)
(************************)
Definition f (a : nat) : nat := 2^a.

(**********************)
(* inequality theorem *)
(**********************)
Theorem a_leq_pow_2_a: forall a, a <= f(a).
Proof.
  induction a as[|a' IHa].
  - apply le_0_n.
  - unfold f.
    rewrite Nat.pow_succ_r.
    * rewrite Nat.mul_comm.
      rewrite Nat.mul_succ_r.
      rewrite Nat.mul_1_r.
      unfold f in IHa.
      (* stuck here *)
Qed.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 06:05:03

搜索引理的命令称为Search。(对于较早的Coq版本,它被拆分为SearchAboutSearchPattern等)有关所有可能的变体,请参见文档

在您的例子中,您正在寻找一个带有形式_+_ <= _+_的结果的引理。因此,您可以键入以下内容,这将给出六种结果,包括您要寻找的结果:

代码语言:javascript
复制
Search (_ + _ <= _ + _).
(*
Nat.add_le_mono_r: forall n m p : nat, n <= m <-> n + p <= m + p
Nat.add_le_mono: forall n m p q : nat, n <= m -> p <= q -> n + p <= m + q
...
*)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61691619

复制
相关文章

相似问题

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