我怎样才能打破`forall i:nat i< S k - > Coq中的H`为`i< k和i = k`?

时间:2017-10-17 13:45:37

标签: coq coq-tactic

我必须证明:

i < Datatypes.length (l0 ++ f :: nil) -> H

我对i < Datatypes.length l0i = Datatypes.length l0有一个单独的假设。

1 个答案:

答案 0 :(得分:3)

Require Import Arith.

SearchAbout lt le.

给了我(除其他外):

le_lt_or_eq: forall n m : nat, n <= m -> n < m \/ n = m

现在。您有i < S k,相当于S i <= S k,您想要i <= k。所以你需要在每一方都剥离S

SearchAbout le S.

给了我(除其他外):

le_S_n: forall n m : nat, S n <= S m -> n <= m

通过将两者结合起来,您应该能够证明自己的目标:

Goal forall i k, i < S k -> i < k \/ i = k.
intros i k iltSk.
 apply le_lt_or_eq.
 apply le_S_n.
 assumption.
Qed.