我正在寻找有关nat的引理。我希望它已经存在于Coq库之一中,所以我不必证明它。
forall m n : nat, (S m < n)%nat -> (n - (S m) < n)%nat
请将我指向图书馆(如果存在)。谢谢!
答案 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.