Coq 归纳从特定的 nat 开始

标签 coq induction

我正在尝试学习 coq,所以请假设我对此一无所知。

如果我在 coq 中有一个引理

forall n m:nat, n>=1 -> m>=1 ...

我想通过对 n 进行归纳。我如何从 1 开始归纳?目前当我使用“归纳n”。战术它从零开始,这使得基本语句为假,从而难以继续。

任何提示?

最佳答案

以下是每个命题P的证明是真的n>=1 , 如果 P1 是正确的如果 P归纳为真。

Require Import Omega.

Parameter P : nat -> Prop.
Parameter p1 : P 1.
Parameter pS : forall n, P n -> P (S n).

Goal forall n, n>=1 -> P n.

我们通过归纳法开始证明。

  induction n; intro.

如果您有一个错误的假设,那么错误的基本案例是没有问题的。在这种情况下 0>=1 .

  - exfalso. omega.

归纳案例很棘手,因为要访问 P n 的证明,我们首先要证明n>=1 .诀窍是在n上做一个案例分析。 .如 n=0 ,那么我们可以简单地证明目标 P 1 .如 n>=1 ,我们可以访问P n ,然后证明其余的。

  - destruct n.
    + apply p1.
    + assert (S n >= 1) by omega.
      intuition.
      apply pS.
      trivial.
Qed.

关于Coq 归纳从特定的 nat 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205573/

相关文章:

coq - 是什么阻止 Coq 执行简单的重写?

coq - 在 Coq 中证明 (~A -> ~B)-> (~A -> B) -> A

string - TWISTED 最长公共(public)子序列

algorithm - 通过归纳法证明多项式 Big-Theta?

algorithm - 通过归纳法证明算法正确

coq - 将假设中的 ~exists 转换为 forall

Coq:列表对的证明

Coq:使用子类型卡住了

haskell - 如何有效地将归纳类型转换为互归纳类型(无需递归)?

python - 获取图中唯一状态的数量