src/HOL/Divides.thy
changeset 30079 293b896b9c25
parent 30078 beee83623cc9
child 30180 6d29a873141f
equal deleted inserted replaced
30078:beee83623cc9 30079:293b896b9c25
   488   shows "divmod m n = (Suc ((m - n) div n), (m - n) mod n)"
   488   shows "divmod m n = (Suc ((m - n) div n), (m - n) mod n)"
   489 proof -
   489 proof -
   490   from divmod_rel have divmod_m_n: "divmod_rel m n (m div n) (m mod n)" .
   490   from divmod_rel have divmod_m_n: "divmod_rel m n (m div n) (m mod n)" .
   491   with assms have m_div_n: "m div n \<ge> 1"
   491   with assms have m_div_n: "m div n \<ge> 1"
   492     by (cases "m div n") (auto simp add: divmod_rel_def)
   492     by (cases "m div n") (auto simp add: divmod_rel_def)
   493   from assms divmod_m_n have "divmod_rel (m - n) n (m div n - 1) (m mod n)"
   493   from assms divmod_m_n have "divmod_rel (m - n) n (m div n - Suc 0) (m mod n)"
   494     by (cases "m div n") (auto simp add: divmod_rel_def)
   494     by (cases "m div n") (auto simp add: divmod_rel_def)
   495   with divmod_eq have "divmod (m - n) n = (m div n - 1, m mod n)" by simp
   495   with divmod_eq have "divmod (m - n) n = (m div n - Suc 0, m mod n)" by simp
   496   moreover from divmod_div_mod have "divmod (m - n) n = ((m - n) div n, (m - n) mod n)" .
   496   moreover from divmod_div_mod have "divmod (m - n) n = ((m - n) div n, (m - n) mod n)" .
   497   ultimately have "m div n = Suc ((m - n) div n)"
   497   ultimately have "m div n = Suc ((m - n) div n)"
   498     and "m mod n = (m - n) mod n" using m_div_n by simp_all
   498     and "m mod n = (m - n) mod n" using m_div_n by simp_all
   499   then show ?thesis using divmod_div_mod by simp
   499   then show ?thesis using divmod_div_mod by simp
   500 qed
   500 qed
   812 
   812 
   813 lemma dvd_1_left [iff]: "Suc 0 dvd k"
   813 lemma dvd_1_left [iff]: "Suc 0 dvd k"
   814   unfolding dvd_def by simp
   814   unfolding dvd_def by simp
   815 
   815 
   816 lemma dvd_1_iff_1 [simp]: "(m dvd Suc 0) = (m = Suc 0)"
   816 lemma dvd_1_iff_1 [simp]: "(m dvd Suc 0) = (m = Suc 0)"
       
   817 by (simp add: dvd_def)
       
   818 
       
   819 lemma nat_dvd_1_iff_1 [simp]: "m dvd (1::nat) \<longleftrightarrow> m = 1"
   817 by (simp add: dvd_def)
   820 by (simp add: dvd_def)
   818 
   821 
   819 lemma dvd_anti_sym: "[| m dvd n; n dvd m |] ==> m = (n::nat)"
   822 lemma dvd_anti_sym: "[| m dvd n; n dvd m |] ==> m = (n::nat)"
   820   unfolding dvd_def
   823   unfolding dvd_def
   821   by (force dest: mult_eq_self_implies_10 simp add: mult_assoc mult_eq_1_iff)
   824   by (force dest: mult_eq_self_implies_10 simp add: mult_assoc mult_eq_1_iff)