src/HOL/IntDiv.thy
changeset 23512 770e7f9f715b
parent 23477 f4b83f03cac9
child 23684 8c508c4dc53b
equal deleted inserted replaced
23511:7067f5e3670f 23512:770e7f9f715b
  1060 
  1060 
  1061 
  1061 
  1062 subsection {* The Divides Relation *}
  1062 subsection {* The Divides Relation *}
  1063 
  1063 
  1064 lemma zdvd_iff_zmod_eq_0: "(m dvd n) = (n mod m = (0::int))"
  1064 lemma zdvd_iff_zmod_eq_0: "(m dvd n) = (n mod m = (0::int))"
  1065 by(simp add:dvd_def zmod_eq_0_iff)
  1065   by (simp add: dvd_def zmod_eq_0_iff)
       
  1066 
       
  1067 definition
       
  1068   dvd_int :: "int \<Rightarrow> int \<Rightarrow> bool"
       
  1069 where
       
  1070   "dvd_int = op dvd"
       
  1071 
       
  1072 lemmas [code inline] = dvd_int_def [symmetric]
       
  1073 lemmas [code, folded dvd_int_def, code func] = zdvd_iff_zmod_eq_0
  1066 
  1074 
  1067 lemmas zdvd_iff_zmod_eq_0_number_of [simp] =
  1075 lemmas zdvd_iff_zmod_eq_0_number_of [simp] =
  1068   zdvd_iff_zmod_eq_0 [of "number_of x" "number_of y", standard]
  1076   zdvd_iff_zmod_eq_0 [of "number_of x" "number_of y", standard]
  1069 
  1077 
  1070 lemma zdvd_0_right [iff]: "(m::int) dvd 0"
  1078 lemma zdvd_0_right [iff]: "(m::int) dvd 0"
  1071 by (simp add: dvd_def)
  1079   by (simp add: dvd_def)
  1072 
  1080 
  1073 lemma zdvd_0_left [iff]: "(0 dvd (m::int)) = (m = 0)"
  1081 lemma zdvd_0_left [iff]: "(0 dvd (m::int)) = (m = 0)"
  1074   by (simp add: dvd_def)
  1082   by (simp add: dvd_def)
  1075 
  1083 
  1076 lemma zdvd_1_left [iff]: "1 dvd (m::int)"
  1084 lemma zdvd_1_left [iff]: "1 dvd (m::int)"
  1077   by (simp add: dvd_def)
  1085   by (simp add: dvd_def)
  1078 
  1086 
  1079 lemma zdvd_refl [simp]: "m dvd (m::int)"
  1087 lemma zdvd_refl [simp]: "m dvd (m::int)"
  1080 by (auto simp add: dvd_def intro: zmult_1_right [symmetric])
  1088   by (auto simp add: dvd_def intro: zmult_1_right [symmetric])
  1081 
  1089 
  1082 lemma zdvd_trans: "m dvd n ==> n dvd k ==> m dvd (k::int)"
  1090 lemma zdvd_trans: "m dvd n ==> n dvd k ==> m dvd (k::int)"
  1083 by (auto simp add: dvd_def intro: mult_assoc)
  1091   by (auto simp add: dvd_def intro: mult_assoc)
  1084 
  1092 
  1085 lemma zdvd_zminus_iff: "(m dvd -n) = (m dvd (n::int))"
  1093 lemma zdvd_zminus_iff: "(m dvd -n) = (m dvd (n::int))"
  1086   apply (simp add: dvd_def, auto)
  1094   apply (simp add: dvd_def, auto)
  1087    apply (rule_tac [!] x = "-k" in exI, auto)
  1095    apply (rule_tac [!] x = "-k" in exI, auto)
  1088   done
  1096   done