src/HOL/Nat.thy
changeset 71425 f2da99316b86
parent 71407 2525e28e4b8b
child 71585 4b1021677f15
equal deleted inserted replaced
71424:e83fe2c31088 71425:f2da99316b86
   791   apply (rule add_less_mono1 [THEN less_trans], assumption+)
   791   apply (rule add_less_mono1 [THEN less_trans], assumption+)
   792   apply (induct j)
   792   apply (induct j)
   793    apply simp_all
   793    apply simp_all
   794   done
   794   done
   795 
   795 
   796 text \<open>Deleted \<open>less_natE\<close>; use \<open>less_imp_Suc_add RS exE\<close>\<close>
       
   797 lemma less_imp_Suc_add: "m < n \<Longrightarrow> \<exists>k. n = Suc (m + k)"
   796 lemma less_imp_Suc_add: "m < n \<Longrightarrow> \<exists>k. n = Suc (m + k)"
   798 proof (induct n)
   797 proof (induct n)
   799   case 0
   798   case 0
   800   then show ?case by simp
   799   then show ?case by simp
   801 next
   800 next
   806 qed
   805 qed
   807 
   806 
   808 lemma le_Suc_ex: "k \<le> l \<Longrightarrow> (\<exists>n. l = k + n)"
   807 lemma le_Suc_ex: "k \<le> l \<Longrightarrow> (\<exists>n. l = k + n)"
   809   for k l :: nat
   808   for k l :: nat
   810   by (auto simp: less_Suc_eq_le[symmetric] dest: less_imp_Suc_add)
   809   by (auto simp: less_Suc_eq_le[symmetric] dest: less_imp_Suc_add)
       
   810 
       
   811 lemma less_natE:
       
   812   assumes \<open>m < n\<close>
       
   813   obtains q where \<open>n = Suc (m + q)\<close>
       
   814   using assms by (auto dest: less_imp_Suc_add intro: that)
   811 
   815 
   812 text \<open>strict, in 1st argument; proof is by induction on \<open>k > 0\<close>\<close>
   816 text \<open>strict, in 1st argument; proof is by induction on \<open>k > 0\<close>\<close>
   813 lemma mult_less_mono2:
   817 lemma mult_less_mono2:
   814   fixes i j :: nat
   818   fixes i j :: nat
   815   assumes "i < j" and "0 < k"
   819   assumes "i < j" and "0 < k"