X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Flibrary%2Fnat%2Fminus.ma;h=3acce20afe21277adfab0b15c6d023022afd5da5;hb=78044035b4419e569df0d7f6a7f96fa32d21a19d;hp=6ff744dcb5a3aa5e8cc626b20ae2740bda00b49c;hpb=da83446deba30fbe32b9bf617d83bd22cc9c9770;p=helm.git diff --git a/helm/matita/library/nat/minus.ma b/helm/matita/library/nat/minus.ma index 6ff744dcb..3acce20af 100644 --- a/helm/matita/library/nat/minus.ma +++ b/helm/matita/library/nat/minus.ma @@ -215,24 +215,19 @@ qed. theorem distributive_times_minus: distributive nat times minus. simplify. intros. -apply (leb_elim z y).intro. -cut x*(y-z)+x*z = (x*y-x*z)+x*z. -apply inj_plus_l (x*z). -assumption. -apply trans_eq nat ? (x*y). -rewrite < distr_times_plus. -rewrite < plus_minus_m_m ? ? H.reflexivity. -rewrite < plus_minus_m_m ? ? ?.reflexivity. -apply le_times_r. -assumption. -intro. -rewrite > eq_minus_n_m_O. -rewrite > eq_minus_n_m_O (x*y). -rewrite < sym_times.simplify.reflexivity. -apply lt_to_le. -apply not_le_to_lt.assumption. -apply le_times_r.apply lt_to_le. -apply not_le_to_lt.assumption. +apply (leb_elim z y). + intro.cut x*(y-z)+x*z = (x*y-x*z)+x*z. + apply inj_plus_l (x*z).assumption. + apply trans_eq nat ? (x*y). + rewrite < distr_times_plus.rewrite < plus_minus_m_m ? ? H.reflexivity. + rewrite < plus_minus_m_m ? ? ?. + reflexivity. + apply le_times_r.assumption. + intro.rewrite > eq_minus_n_m_O. + rewrite > eq_minus_n_m_O (x*y). + rewrite < sym_times.simplify.reflexivity. + apply le_times_r.apply lt_to_le.apply not_le_to_lt.assumption. + apply lt_to_le.apply not_le_to_lt.assumption. qed. theorem distr_times_minus: \forall n,m,p:nat. n*(m-p) = n*m-n*p @@ -241,26 +236,22 @@ theorem distr_times_minus: \forall n,m,p:nat. n*(m-p) = n*m-n*p theorem eq_minus_minus_minus_plus: \forall n,m,p:nat. (n-m)-p = n-(m+p). intros. cut m+p \le n \or \not m+p \le n. -elim Hcut. -apply sym_eq. -apply plus_to_minus.assumption. -rewrite > assoc_plus. -rewrite > sym_plus p. -rewrite < plus_minus_m_m. -rewrite > sym_plus. -rewrite < plus_minus_m_m.reflexivity. -rewrite > eq_minus_n_m_O n (m+p). -rewrite > eq_minus_n_m_O (n-m) p.reflexivity. -apply decidable_le (m+p) n. -apply le_plus_to_minus_r. -rewrite > sym_plus.assumption. -apply trans_le ? (m+p). -rewrite < sym_plus. -apply le_plus_n.assumption. -apply lt_to_le.apply not_le_to_lt.assumption. -apply le_plus_to_minus. -apply lt_to_le.apply not_le_to_lt. -rewrite < sym_plus.assumption. + elim Hcut. + symmetry.apply plus_to_minus.assumption. + rewrite > assoc_plus.rewrite > sym_plus p.rewrite < plus_minus_m_m. + rewrite > sym_plus.rewrite < plus_minus_m_m. + reflexivity. + apply trans_le ? (m+p). + rewrite < sym_plus.apply le_plus_n. + assumption. + apply le_plus_to_minus_r.rewrite > sym_plus.assumption. + rewrite > eq_minus_n_m_O n (m+p). + rewrite > eq_minus_n_m_O (n-m) p. + reflexivity. + apply le_plus_to_minus.apply lt_to_le. rewrite < sym_plus. + apply not_le_to_lt. assumption. + apply lt_to_le.apply not_le_to_lt.assumption. + apply decidable_le (m+p) n. qed. theorem eq_plus_minus_minus_minus: \forall n,m,p:nat. p \le m \to m \le n \to