(* *)
(**************************************************************************)
+include "ground_2/xoa/ex_3_2.ma".
include "ground_2/ynat/ynat_lt.ma".
(* NATURAL NUMBERS WITH INFINITY ********************************************)
lemma yplus_O2: ∀m:ynat. m + 0 = m.
// qed.
-lemma yplus_S2: â\88\80m:ynat. â\88\80n. m + S n = ⫯(m + n).
+lemma yplus_S2: â\88\80m:ynat. â\88\80n. m + S n = â\86\91(m + n).
// qed.
lemma yplus_Y2: ∀m:ynat. m + (∞) = ∞.
(* Properties on successor **************************************************)
-lemma yplus_succ2: â\88\80m,n. m + ⫯n = ⫯(m + n).
+lemma yplus_succ2: â\88\80m,n. m + â\86\91n = â\86\91(m + n).
#m * //
qed.
-lemma yplus_succ1: â\88\80m,n. ⫯m + n = ⫯(m + n).
+lemma yplus_succ1: â\88\80m,n. â\86\91m + n = â\86\91(m + n).
#m * // #n elim n -n //
qed.
-lemma yplus_succ_swap: â\88\80m,n. m + ⫯n = ⫯m + n.
+lemma yplus_succ_swap: â\88\80m,n. m + â\86\91n = â\86\91m + n.
// qed.
-lemma yplus_SO2: â\88\80m. m + 1 = ⫯m.
+lemma yplus_SO2: â\88\80m. m + 1 = â\86\91m.
* //
qed.
/2 width=1 by eq_f2/
qed.
-lemma yplus_assoc_23: ∀x1,x2,x3,x4. x1 + x2 + (x3 + x4) = x1 + (x2 + x3) + x4.
+lemma yplus_assoc_23: ∀x1,x2,x3,x4. x1 + x2 + (x3 + x4) = x1 + (x2 + x3) + x4.
#x1 #x2 #x3 #x4 >yplus_assoc >yplus_assoc
/2 width=1 by eq_f2/
qed.
(* Inversion lemmas on successor *********************************************)
-lemma yplus_inv_succ_lt_dx: â\88\80x,y,z:ynat. 0 < y â\86\92 x + y = ⫯z â\86\92 x + â«°y = z.
+lemma yplus_inv_succ_lt_dx: â\88\80x,y,z:ynat. 0 < y â\86\92 x + y = â\86\91z â\86\92 x + â\86\93y = z.
#x #y #z #H <(ylt_inv_O1 y) // >yplus_succ2
/2 width=1 by ysucc_inv_inj/
qed-.
-lemma yplus_inv_succ_lt_sn: â\88\80x,y,z:ynat. 0 < x â\86\92 x + y = ⫯z â\86\92 â«°x + y = z.
+lemma yplus_inv_succ_lt_sn: â\88\80x,y,z:ynat. 0 < x â\86\92 x + y = â\86\91z â\86\92 â\86\93x + y = z.
#x #y #z #H <(ylt_inv_O1 x) // >yplus_succ1
/2 width=1 by ysucc_inv_inj/
qed-.
lemma yplus_inv_monotonic_dx: ∀z,x,y. z < ∞ → x + z = y + z → x = y.
-#z #x #y #H elim (ylt_inv_Y2 … H) -H /2 width=2 by yplus_inv_monotonic_dx_inj/
+#z #x #y #H elim (ylt_inv_Y2 … H) -H /2 width=2 by yplus_inv_monotonic_dx_inj/
qed-.
lemma yplus_inv_Y2: ∀x,y. x + y = ∞ → x = ∞ ∨ y = ∞.
-* /2 width=1 by or_introl/ #x * // #y >yplus_inj #H destruct
+* /2 width=1 by or_introl/ #x * // #y >yplus_inj #H destruct
qed-.
lemma yplus_inv_monotonic_23: ∀z,x1,x2,y1,y2. z < ∞ →
- x1 + z + y1 = x2 + z + y2 → x1 + y1 = x2 + y2.
+ x1 + z + y1 = x2 + z + y2 → x1 + y1 = x2 + y2.
#z #x1 #x2 #y1 #y2 #Hz #H @(yplus_inv_monotonic_dx z) //
>yplus_comm_23 >H -H //
qed-.
#z #H elim (yplus_inv_inj … H) -H /2 width=1 by conj/
qed-.
-lemma ylt_inv_plus_sn: â\88\80x,y. x < y â\86\92 â\88\83â\88\83z. ⫯z + x = y & x < ∞.
+lemma ylt_inv_plus_sn: â\88\80x,y. x < y â\86\92 â\88\83â\88\83z. â\86\91z + x = y & x < ∞.
#x #y #H elim (ylt_inv_le … H) -H
#Hx #H elim (yle_inv_plus_sn … H) -H
/2 width=2 by ex2_intro/
qed-.
-lemma ylt_inv_plus_dx: â\88\80x,y. x < y â\86\92 â\88\83â\88\83z. x + ⫯z = y & x < ∞.
+lemma ylt_inv_plus_dx: â\88\80x,y. x < y â\86\92 â\88\83â\88\83z. x + â\86\91z = y & x < ∞.
#x #y #H elim (ylt_inv_plus_sn … H) -H
#z >yplus_comm /2 width=2 by ex2_intro/
qed-.
lemma monotonic_ylt_plus_dx: ∀x,y. x < y → ∀z. z < ∞ → x + z < y + z.
#x #y #Hxy #z #Hz elim (ylt_inv_Y2 … Hz) -Hz
#m #H destruct /2 width=1 by monotonic_ylt_plus_dx_inj/
-qed.
+qed.
lemma monotonic_ylt_plus_sn: ∀x,y. x < y → ∀z. z < ∞ → z + x < z + y.
/2 width=1 by monotonic_ylt_plus_dx/ qed.
(* Properties on predeccessor ***********************************************)
-lemma yplus_pred1: â\88\80x,y:ynat. 0 < x â\86\92 â«°x + y = â«°(x+y).
+lemma yplus_pred1: â\88\80x,y:ynat. 0 < x â\86\92 â\86\93x + y = â\86\93(x+y).
#x * // #y elim y -y // #y #IH #Hx
>yplus_S2 >yplus_S2 >IH -IH // >ylt_inv_O1
/2 width=1 by ylt_plus_dx1_trans/
qed-.
-lemma yplus_pred2: â\88\80x,y:ynat. 0 < y â\86\92 x + â«°y = â«°(x+y).
+lemma yplus_pred2: â\88\80x,y:ynat. 0 < y â\86\92 x + â\86\93y = â\86\93(x+y).
/2 width=1 by yplus_pred1/ qed-.