]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma
arithmetics for λδ
[helm.git] / matita / matita / contribs / lambdadelta / ground / arith / nat_lt_pred.ma
index c319006fc4df70d9fadeffe0e3ed266d1b823f8d..cb776975830572cff409fe9e0317ef6d852ce584 100644 (file)
@@ -17,22 +17,40 @@ include "ground/arith/nat_lt.ma".
 
 (* STRICT ORDER FOR NON-NEGATIVE INTEGERS ***********************************)
 
-(* Constructions with npred *************************************************)
+(* Destructions with npred **************************************************)
 
-lemma nlt_zero_sn (m): m = ↑↓m → 𝟎 < m.
-// qed.
+(*** S_pred lt_succ_pred lt_inv_O1 *)
+lemma nlt_des_gen (m) (n): m < n → n = ↑↓n.
+#m #n @(nat_ind_succ … n) -n //
+#H elim (nlt_inv_zero_dx … H)
+qed-.
 
 (* Inversions with npred ****************************************************)
 
-(*** S_pred *)
-lemma nlt_inv_zero_sn (m): 𝟎 < m → m = ↑↓m.
-#m @(nat_ind_succ … m) -m //
-#H elim (nlt_inv_refl … H)
-qed-.
+(*** lt_inv_gen *)
+lemma nlt_inv_gen (m) (n): m < n → ∧∧ m ≤ ↓n & n = ↑↓n.
+/2 width=1 by nle_inv_succ_sn/ qed-.
+
+(*** lt_inv_S1 *)
+lemma nlt_inv_succ_sn (m) (n): ↑m < n → ∧∧ m < ↓n & n = ↑↓n.
+/2 width=1 by nle_inv_succ_sn/ qed-.
 
 lemma nlt_inv_pred_dx (m) (n): m < ↓n → ↑m < n.
-#m #n #H >(nlt_inv_zero_sn n)
+#m #n #H >(nlt_des_gen (𝟎) n)
 [ /2 width=1 by nlt_succ_bi/
 | /3 width=3 by le_nlt_trans, nlt_le_trans/
 ]
 qed-.
+
+(* Constructions with npred *************************************************)
+
+lemma nlt_zero_sn (n): n = ↑↓n → 𝟎 < n.
+// qed.
+
+(*** monotonic_lt_pred *)
+lemma nlt_pred_bi (m) (n): 𝟎 < m → m < n → ↓m < ↓n.
+#m #n #Hm #Hmn
+@nle_inv_succ_bi
+<(nlt_des_gen … Hm) -Hm
+<(nlt_des_gen … Hmn) //
+qed.