]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/ground/arith/pnat_plus.ma
update in ground
[helm.git] / matita / matita / contribs / lambdadelta / ground / arith / pnat_plus.ma
index e6db03ac46b8cccce12764f84693c9a8e461dc74..af5bd09432c8b3460d1d5123d9c0f3ecd56bb819 100644 (file)
@@ -17,35 +17,57 @@ include "ground/arith/pnat_iter.ma".
 (* ADDITION FOR POSITIVE INTEGERS *******************************************)
 
 definition pplus: pnat → pnat → pnat ≝
-           λp,q. psucc^q p.
+           λp,q. (psucc^q) p.
 
 interpretation
   "plus (positive integers)"
   'plus p q = (pplus p q).
 
-(* Basic rewrites ***********************************************************)
+(* Basic constructions ******************************************************)
 
-lemma pplus_one_dx (p): ↑p = p + 𝟏.
+lemma pplus_unit_dx (p): ↑p = p + 𝟏.
 // qed.
 
 lemma pplus_succ_dx (p) (q): ↑(p+q) = p + ↑q.
 // qed.
 
-(* Advanced reweites (semigroup properties) *********************************)
+(* Advanced constructions (semigroup properties) ****************************)
 
 lemma pplus_succ_sn (p) (q): ↑(p+q) = ↑p + q.
 #p #q @(piter_appl … psucc)
 qed.
 
-lemma pplus_one_sn (p): ↑p = 𝟏 + p.
+lemma pplus_unit_sn (p): ↑p = 𝟏 + p.
 #p elim p -p //
 qed.
 
 lemma pplus_comm: commutative … pplus.
 #p elim p -p //
-qed.
+qed-. (* * gets in the way with auto *)
 
 lemma pplus_assoc: associative … pplus.
 #p #q #r elim r -r //
 #r #IH <pplus_succ_dx <pplus_succ_dx <IH -IH //
 qed.
+
+(* Basic inversions *********************************************************)
+
+lemma eq_inv_unit_pplus (p) (q): 𝟏 = p + q → ⊥.
+#p #q elim q -q
+[ <pplus_unit_dx #H destruct
+| #q #_ <pplus_succ_dx #H destruct
+]
+qed-.
+
+lemma eq_inv_pplus_unit (p) (q):
+      p + q = 𝟏 → ⊥.
+/2 width=3 by eq_inv_unit_pplus/ qed-.
+
+lemma eq_inv_pplus_bi_dx (r) (p) (q): p + r = q + r → p = q.
+#r elim r -r /3 width=1 by eq_inv_psucc_bi/
+qed-.
+
+lemma eq_inv_pplus_bi_sn (r) (p) (q): r + p = r + q → p = q.
+#r #p #q <pplus_comm <pplus_comm in ⊢ (???%→?);
+/2 width=2 by eq_inv_pplus_bi_dx/
+qed-.