我怎样才能证明“假”以及从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.