【发布时间】:2019-08-30 02:34:02
【问题描述】:
我现在正在学习 Coq,在一个更大的证明中,我被以下子证明难住了:
Theorem sub : ∀ n m : nat, n ≤ m → n ≠ m → n < m.
或者,一旦展开:
Theorem sub : ∀ n m : nat, n ≤ m → n ≠ m → S n ≤ m.
这里,“n≤m”归纳定义如下:
Inductive le : nat → nat → Prop :=
| le_n : ∀ n : nat, le n n
| le_S : ∀ n m : nat, (le n m) → (le n (S m)).
我还没有走多远,但我的尝试看起来像这样:
Theorem sub : ∀ n m : nat, n ≤ m → n ≠ m → n < m.
Proof.
unfold lt.
intro n.
induction n.
- induction m.
+ intros. exfalso. contradiction.
+ admit.
- admit.
Admitted.
在第一个归纳步骤(由第一个承认标记)中,归纳假设显示以下内容:
1 subgoal
m : nat
IHm : 0 ≤ m → 0 ≠ m → 1 ≤ m
______________________________________(1/1)
0 ≤ S m → 0 ≠ S m → 1 ≤ S m
我不确定如何利用这个假设来证明子目标。我将不胜感激任何正确方向的指导。
【问题讨论】:
-
除了@SCappella 的回答,注意
intros; lia.也可以解决。
标签: coq proof coq-tactic