【发布时间】:2019-12-07 15:28:29
【问题描述】:
我正在证明弱归纳和强归纳的等价性。
我有这样的定义:
Definition strong_induct (nP : nat->Prop) : Prop :=
nP 0 /\
(forall n : nat,
(forall k : nat, k <= n -> nP k) ->
nP (S n))
.
我想证明以下内容,并写道:
Lemma n_le_m__Sn_le_Sm : forall n m,
n <= m -> S n <= S m
.
Lemma strong_induct_nP__nP_n__nP_k : forall (nP : nat->Prop)(n : nat),
strong_induct nP -> nP n ->
(forall k, k < n -> nP k)
.
Proof.
intros nP n [Hl Hr].
induction n as [|n' IHn].
- intros H k H'. inversion H'.
- intros H k H'.
inversion H'.
+ destruct n' as [|n''] eqn : En'.
* apply Hl.
* apply Hr.
unfold lt in IHn.
assert(H'' : nP (S n'') -> forall k : nat, k <= n'' -> nP k). {
intros Hx kx Hxx.
apply n_le_m__Sn_le_Sm in Hxx.
apply IHn.
- apply Hx.
- apply Hxx.
}
但是我无法继续证明。 在这种情况下如何证明引理?
【问题讨论】:
-
您要证明的陈述有问题。
strong_induct nP始终为真,独立于nP。所以引理真的说nP n -> forall k, k < n -> nP k这是不真实的。 -
我不明白你试图证明的引理与证明弱归纳和强归纳之间的等价性有什么关系。您是否难以证明强归纳意味着弱归纳或相反?