1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "ground/arith/nat_pred_succ.ma".
16 include "ground/arith/nat_le.ma".
18 (* ORDER FOR NON-NEGATIVE INTEGERS ******************************************)
20 (* Destructions with npred **************************************************)
22 lemma nle_inv_pred_sn (m) (n): ↓m ≤ n → m ≤ ↑n.
23 #m #n @(nat_ind_succ … m) -m
24 /2 width=1 by nle_succ_bi/
27 (* Constructions with npred *************************************************)
29 lemma nle_succ_pred_dx_refl (m): m ≤ ↑↓m.
30 #m @nle_inv_pred_sn // qed.
33 lemma nle_pred_sn_refl (m): ↓m ≤ m.
34 #m @(nat_ind_succ … m) -m //
37 (*** monotonic_pred *)
38 lemma nle_pred_bi (m) (n): m ≤ n → ↓m ≤ ↓n.
40 /2 width=3 by nle_trans/
43 lemma nle_pred_sn (m) (n): m ≤ ↑n → ↓m ≤ n.
44 #m #n @(nat_ind_succ … m) -m //
45 /2 width=1 by nle_pred_bi/
48 (* Inversions with npred ****************************************************)
51 lemma nle_inv_succ_sn (m) (n):
52 ↑m ≤ n → ∧∧ m ≤ ↓n & n = ↑↓n.
54 [ /2 width=3 by nle_refl, conj/
55 | #n #Hn /3 width=1 by nle_des_succ_sn, conj/