--- a/src/HOL/IntDiv.thy Wed Jun 20 05:06:56 2007 +0200
+++ b/src/HOL/IntDiv.thy Wed Jun 20 05:18:39 2007 +0200
@@ -1242,10 +1242,8 @@
done
theorem zdvd_int: "(x dvd y) = (int x dvd int y)"
- unfolding dvd_def
- apply (rule_tac s="\<exists>k. int y = int x * int k" in trans)
- apply (simp only: of_nat_mult [symmetric] of_nat_eq_iff)
- apply (simp add: ex_nat cong add: conj_cong)
+ apply (simp only: dvd_def ex_nat int_int_eq [symmetric] zmult_int [symmetric]
+ nat_0_le cong add: conj_cong)
apply (rule iffI)
apply iprover
apply (erule exE)
@@ -1255,7 +1253,7 @@
apply (case_tac "0 \<le> k")
apply iprover
apply (simp add: linorder_not_le)
- apply (drule mult_strict_left_mono_neg [OF iffD2 [OF of_nat_0_less_iff]])
+ apply (drule mult_strict_left_mono_neg [OF iffD2 [OF zero_less_int_conv]])
apply assumption
apply (simp add: mult_ac)
done
@@ -1284,24 +1282,24 @@
apply (auto simp add: dvd_def nat_abs_mult_distrib)
apply (auto simp add: nat_eq_iff abs_if split add: split_if_asm)
apply (rule_tac x = "-(int k)" in exI)
- apply auto
+ apply (auto simp add: int_mult)
done
lemma dvd_int_iff: "(z dvd int m) = (nat (abs z) dvd m)"
- apply (auto simp add: dvd_def abs_if)
+ apply (auto simp add: dvd_def abs_if int_mult)
apply (rule_tac [3] x = "nat k" in exI)
apply (rule_tac [2] x = "-(int k)" in exI)
apply (rule_tac x = "nat (-k)" in exI)
- apply (cut_tac [3] m = m in int_less_0_conv)
- apply (cut_tac m = m in int_less_0_conv)
+ apply (cut_tac [3] k = m in int_less_0_conv)
+ apply (cut_tac k = m in int_less_0_conv)
apply (auto simp add: zero_le_mult_iff mult_less_0_iff
nat_mult_distrib [symmetric] nat_eq_iff2)
done
lemma nat_dvd_iff: "(nat z dvd m) = (if 0 \<le> z then (z dvd int m) else m = 0)"
- apply (auto simp add: dvd_def)
+ apply (auto simp add: dvd_def int_mult)
apply (rule_tac x = "nat k" in exI)
- apply (cut_tac m = m in int_less_0_conv)
+ apply (cut_tac k = m in int_less_0_conv)
apply (auto simp add: zero_le_mult_iff mult_less_0_iff
nat_mult_distrib [symmetric] nat_eq_iff2)
done
@@ -1377,7 +1375,7 @@
apply (subst split_div, auto)
apply (subst split_zdiv, auto)
apply (rule_tac a="int (b * i) + int j" and b="int b" and r="int j" and r'=ja in IntDiv.unique_quotient)
-apply (auto simp add: IntDiv.quorem_def)
+apply (auto simp add: IntDiv.quorem_def of_nat_mult)
done
lemma zmod_int: "int (a mod b) = (int a) mod (int b)"
@@ -1385,7 +1383,7 @@
apply (subst split_zmod, auto)
apply (rule_tac a="int (b * i) + int j" and b="int b" and q="int i" and q'=ia
in unique_remainder)
-apply (auto simp add: IntDiv.quorem_def)
+apply (auto simp add: IntDiv.quorem_def of_nat_mult)
done
text{*Suggested by Matthias Daum*}