include "ground_2/ynat/ynat_lt.ma".
(* NATURAL NUMBERS WITH INFINITY ********************************************)
include "ground_2/ynat/ynat_lt.ma".
(* NATURAL NUMBERS WITH INFINITY ********************************************)
-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 *********************************************)
#x1 #x2 #x3 #x4 >yplus_assoc >yplus_assoc
/2 width=1 by eq_f2/
qed.
(* Inversion lemmas on successor *********************************************)
qed-.
lemma yplus_inv_monotonic_23: ∀z,x1,x2,y1,y2. z < ∞ →
qed-.
lemma yplus_inv_monotonic_23: ∀z,x1,x2,y1,y2. z < ∞ →
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/
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/
lemma monotonic_ylt_plus_sn: ∀x,y. x < y → ∀z. z < ∞ → z + x < z + y.
/2 width=1 by monotonic_ylt_plus_dx/ 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.
#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-.
#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-.