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 |