我怎样才能证明“假”以及从Coq假设中引申出来的任何东西';d=d+;1';?

我怎样才能证明“假”以及从Coq假设中引申出来的任何东西';d=d+;1';?,coq,Coq,如何从H证明False反转H只是复制它。该证明通过对d的归纳得出,并使用: Goal forall (d : nat), d + 1 = d -> False. Proof. intros d H. Abort. 基本情况是0=1,它通过反转导致False,从而结束该情况。归纳推理假设为d+1=d->False,目标为sd+1=sd->False。我们从eq\u add\u S知道x+1=y+1->x+y,因此我们重写了我们的目标并应用归纳假设 完整证明: eq_add_

如何从
H
证明
False
<代码>反转H只是复制它。

该证明通过对
d
的归纳得出,并使用:

Goal forall (d : nat), d + 1 = d -> False.
Proof.
  intros d H.
Abort.      
基本情况是
0=1
,它通过反转导致
False
,从而结束该情况。归纳推理假设为
d+1=d->False
,目标为
sd+1=sd->False
。我们从
eq\u add\u S
知道
x+1=y+1->x+y
,因此我们重写了我们的目标并应用归纳假设

完整证明:

eq_add_S
     : forall n m : nat, S n = S m -> n = m
Goal for all(d:nat),d+1=d->False。
证明。
诱导d。
介绍。
-反转H。
-介绍H。

EREWITE证明在
d
上通过归纳得出,并使用:

Goal forall (d : nat), d + 1 = d -> False.
Proof.
  intros d H.
Abort.      
基本情况是
0=1
,它通过反转导致
False
,从而结束该情况。归纳推理假设为
d+1=d->False
,目标为
sd+1=sd->False
。我们从
eq\u add\u S
知道
x+1=y+1->x+y
,因此我们重写了我们的目标并应用归纳假设

完整证明:

eq_add_S
     : forall n m : nat, S n = S m -> n = m
Goal for all(d:nat),d+1=d->False。
证明。
诱导d。
介绍。
-反转H。
-介绍H。

下面是你如何发现一些有用的引理,从你的上下文中推导出一个矛盾。首先,我们需要导入包含它们的模块,否则
Search
命令将无法发现这些引理:

Goal forall (d : nat), d + 1 = d -> False.
Proof.
  induction d.
  intros.
  - inversion H.
  - intros H.
    erewrite <- eq_add_S in H; eauto.
Qed.
让我们检查一下是否有我们需要的引理(回想一下,
xy
not(eq xy)
的表示法,
nota
代表
a->False
):


下面是如何从上下文中找出一些有用的引理来推导矛盾。首先,我们需要导入包含它们的模块,否则
Search
命令将无法发现这些引理:

Goal forall (d : nat), d + 1 = d -> False.
Proof.
  induction d.
  intros.
  - inversion H.
  - intros H.
    erewrite <- eq_add_S in H; eauto.
Qed.
让我们检查一下是否有我们需要的引理(回想一下,
xy
not(eq xy)
的表示法,
nota
代表
a->False
):

你可以尝试归纳法(然后倒装法)。您也可以只运行欧米茄:P@abhishek请在你的问题中提供答案。谢谢。你可以试试归纳法(然后倒装法)。您也可以只运行欧米茄:P@abhishek请在你的问题中提供答案。非常感谢。
Search (S ?x <> ?x).
Nat.neq_succ_diag_l: forall n : nat, S n <> n
Require Import Coq.Arith.Arith.

Goal forall (d : nat), d + 1 = d -> False.
Proof.
  intros d H.
  rewrite Nat.add_comm in H.
  now apply Nat.neq_succ_diag_l in H.
Qed.