我正在寻找有关nat类型的引理

时间:2019-04-06 03:50:51

标签: coq

我正在寻找有关nat的引理。我希望它已经存在于Coq库之一中,所以我不必证明它。

forall m n : nat, (S m < n)%nat -> (n - (S m) < n)%nat

请将我指向图书馆(如果存在)。谢谢!

3 个答案:

答案 0 :(得分:3)

该陈述不成立:用m = 0代替,结论变成n < n,这是一个明显的矛盾。

答案 1 :(得分:3)

You are almost looking for Nat.sub_lt. I recommend using the Search command to find lemmas. It's quite powerful.

Require Import Arith.
Goal forall m n, (S m < n)%nat -> (n - (S m) < n)%nat.
  intros.
  Search (_ - _ < _).
  apply Nat.sub_lt.
  Search (_ < _ -> _ <= _).
  apply Nat.lt_le_incl, H.
  Search (0 < S _).
  apply Nat.lt_0_succ.
Qed.

or auto using Nat.sub_lt, Nat.lt_le_incl, Nat.lt_0_succ. or auto with arith.

答案 2 :(得分:0)

据我所知,没有Coq库可以证明您的陈述。因此,您可以提出自己的证明,如下:

Require Import PeanoNat List.
Import Nat.

Goal(forall m n : nat, (S m < n)%nat -> (n - (S m) < n)%nat).
Proof.
induction m.
destruct n.
intros.
inversion H.
intros. simpl.
rewrite Nat.sub_0_r.
apply lt_succ_diag_r.
intros.
intuition.
Qed.