]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/ground/arith/nat_pred.ma
update in ground
[helm.git] / matita / matita / contribs / lambdadelta / ground / arith / nat_pred.ma
index fb196e042ebea1a5bd415272a7cc0aafbb7d39f0..3367fe66ad4b7c992a5f2798912216f6f3e53992 100644 (file)
 (**************************************************************************)
 
 include "ground/notation/functions/downarrow_1.ma".
-include "ground/arith/pnat_dis.ma".
+include "ground/arith/pnat_split.ma".
 include "ground/arith/nat.ma".
 
 (* PREDECESSOR FOR NON-NEGATIVE INTEGERS ************************************)
 
+definition pnpred (p): nat ≝
+           psplit … (𝟎) ninj p.
+
+interpretation
+  "positive predecessor (non-negative integers)"
+  'DownArrow p = (pnpred p).
+
 (*** pred *)
 definition npred (m): nat ≝ match m with
 [ nzero  ⇒ 𝟎
-| ninj p ⇒ pdis … (𝟎) ninj p
+| ninj p ⇒ p
 ].
 
 interpretation
@@ -33,3 +40,26 @@ interpretation
 (*** pred_O *)
 lemma npred_zero: 𝟎 = ↓𝟎.
 // qed.
+
+lemma npred_inj (p): ↓p = ↓(ninj p).
+// qed.
+
+lemma npred_unit: 𝟎 = ↓𝟏.
+// qed.
+
+lemma npred_psucc (p): ninj p = ↓↑p.
+// qed.
+
+(* Basic inversions *********************************************************)
+
+lemma npred_pnat_inv_refl (p): ninj p = ↓p → ⊥.
+*
+[ <npred_unit #H destruct
+| #p /3 width=2 by psucc_inv_refl, eq_inv_ninj_bi/
+]
+qed-.
+
+(*** pred_inv_fix_sn *)
+lemma npred_inv_refl (n): n = ↓n → 𝟎 = n.
+* // #p #H elim (npred_pnat_inv_refl … H)
+qed-.