src/HOL/NumberTheory/IntPrimes.thy
changeset 13517 42efec18f5b2
parent 13193 d5234c261813
child 13524 604d0f3622d6
--- a/src/HOL/NumberTheory/IntPrimes.thy	Fri Aug 23 07:34:20 2002 +0200
+++ b/src/HOL/NumberTheory/IntPrimes.thy	Fri Aug 23 07:41:05 2002 +0200
@@ -183,7 +183,7 @@
 lemma zdvd_zmod_imp_zdvd: "k dvd m mod n ==> k dvd n ==> k dvd (m::int)"
   apply (subgoal_tac "k dvd n * (m div n) + m mod n")
    apply (simp add: zmod_zdiv_equality [symmetric])
-  apply (simp add: zdvd_zadd zdvd_zmult2)
+  apply (simp only: zdvd_zadd zdvd_zmult2)
   done
 
 lemma zdvd_iff_zmod_eq_0: "(k dvd n) = (n mod (k::int) = 0)"
@@ -602,8 +602,7 @@
   apply (rule_tac x = "a mod m" in exI)
   apply (auto simp add: pos_mod_sign pos_mod_bound)
   apply (rule_tac x = "-(a div m)" in exI)
-  apply (cut_tac a = a and b = m in zmod_zdiv_equality)
-  apply auto
+  apply (simp add:zdiff_eq_eq eq_zdiff_eq zadd_commute)
   done
 
 lemma zcong_iff_lin: "([a = b] (mod m)) = (\<exists>k. b = a + m * k)"
@@ -624,13 +623,8 @@
   done
 
 lemma aux: "a - b = (m::int) * (a div m - b div m) + (a mod m - b mod m)"
-  apply (rule_tac "s" = "(m * (a div m) + a mod m) - (m * (b div m) + b mod m)"
-    in trans)
-   prefer 2
-   apply (simp add: zdiff_zmult_distrib2)
-  apply (rule aux)
-   apply (rule_tac [!] zmod_zdiv_equality)
-  done
+by(simp add: zdiff_zmult_distrib2 zadd_zdiff_eq eq_zdiff_eq zadd_ac)
+
 
 lemma zcong_zmod: "[a = b] (mod m) = [a mod m = b mod m] (mod m)"
   apply (unfold zcong_def)
@@ -685,9 +679,7 @@
    prefer 2
    apply (subst zcong_iff_lin)
    apply (rule_tac x = "k * (a div (m * k))" in exI)
-   apply (subst zadd_commute)
-   apply (subst zmult_assoc [symmetric])
-   apply (rule_tac zmod_zdiv_equality)
+   apply(simp add:zmult_assoc [symmetric])
   apply assumption
   done
 
@@ -756,11 +748,7 @@
     ==> (r' mod r) = (s' - (r' div r) * s) * m + (t' - (r' div r) * t) * (n::int)"
   apply (rule trans)
    apply (rule_tac [2] aux [symmetric])
-  apply simp
-  apply (subst eq_zdiff_eq)
-  apply (rule trans [symmetric])
-  apply (rule_tac b = "s * m + t * n" in zmod_zdiv_equality)
-  apply (simp add: zmult_commute)
+  apply (simp add: eq_zdiff_eq zmult_commute)
   done
 
 lemma order_le_neq_implies_less: "(x::'a::order) \<le> y ==> x \<noteq> y ==> x < y"