]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/ground/arith/ynat_lt_le_succ.ma
73e38daeb4d5648f85521c8e3162f4d0789b4a16
[helm.git] / matita / matita / contribs / lambdadelta / ground / arith / ynat_lt_le_succ.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 include "ground/arith/ynat_lt_succ.ma".
16 include "ground/arith/ynat_lt_le.ma".
17
18 (* STRICT ORDER FOR NON-NEGATIVE INTEGERS WITH INFINITY *********************)
19
20 (* Constructions with ysucc *************************************************)
21
22 (*** yle_lt yle_succ1_inj *)
23 lemma ylt_le_succ_sn (x) (y):
24       x < ∞ → ↑x ≤ y → x < y.
25 /3 width=3 by ylt_yle_trans, ylt_succ_dx_refl/ qed.
26
27 (* Inversions and destructions on yle ***************************************)
28
29 (*** ylt_inv_le *)
30 lemma ylt_inv_le_succ_sn (x) (y):
31       x < y → ∧∧ x < ∞ & ↑x ≤ y.
32 #x #y * -x -y
33 /3 width=1 by yle_inj, conj/
34 qed-.
35
36 (* Destructions with yle and ysucc ******************************************)
37
38 (*** ylt_fwd_le_succ1 *)
39 lemma ylt_des_le_succ_sn (x) (y): x < y → ↑x ≤ y.
40 #x #y #H
41 elim (ylt_inv_le_succ_sn … H) -H #_ //
42 qed-.
43
44 (*** ylt_fwd_succ2 *)
45 lemma ylt_des_succ_dx (x) (y): x < ↑y → x ≤ y.
46 #x #y @(ynat_split_nat_inf … y) -y //
47 #n <ysucc_inj #H
48 elim (ylt_inv_inj_dx … H) -H #m #Hm #H destruct
49 /3 width=1 by yle_inj, nlt_inv_succ_dx/
50 qed-.