src/HOL/Number_Theory/Cong.thy
changeset 59667 651ea265d568
parent 59010 ec2b4270a502
child 59816 034b13f4efae
--- a/src/HOL/Number_Theory/Cong.thy	Tue Mar 10 11:56:32 2015 +0100
+++ b/src/HOL/Number_Theory/Cong.thy	Tue Mar 10 15:20:40 2015 +0000
@@ -461,15 +461,7 @@
 
 lemma cong_to_1'_nat: "[(a::nat) = 1] (mod n) \<longleftrightarrow>
     a = 0 \<and> n = 1 \<or> (\<exists>m. a = 1 + m * n)"
-  apply (cases "n = 1")
-  apply auto [1]
-  apply (drule_tac x = "a - 1" in spec)
-  apply force
-  apply (cases "a = 0", simp add: cong_0_1_nat)
-  apply (rule iffI)
-  apply (metis cong_to_1_nat dvd_def monoid_mult_class.mult.right_neutral mult.commute mult_eq_if)
-  apply (metis cong_add_lcancel_0_nat cong_mult_self_nat)
-  done
+by (metis add.right_neutral cong_0_1_nat cong_iff_lin_nat cong_to_1_nat dvd_div_mult_self leI le_add_diff_inverse less_one mult_eq_if)
 
 lemma cong_le_nat: "(y::nat) <= x \<Longrightarrow> [x = y] (mod n) \<longleftrightarrow> (\<exists>q. x = q * n + y)"
   by (metis cong_altdef_nat Nat.le_imp_diff_is_add dvd_def mult.commute)
@@ -579,7 +571,7 @@
       [x = y] (mod (PROD i:A. m i))"
   apply (induct set: finite)
   apply auto
-  apply (metis coprime_cong_mult_nat gcd_semilattice_nat.inf_commute setprod_coprime_nat)
+  apply (metis One_nat_def coprime_cong_mult_nat gcd_nat.commute setprod_coprime_nat)
   done
 
 lemma cong_cong_setprod_coprime_int [rule_format]: "finite A \<Longrightarrow>
@@ -835,7 +827,7 @@
          [x = y] (mod (PROD i:A. m i))"
   apply (induct set: finite)
   apply auto
-  apply (metis coprime_cong_mult_nat mult.commute setprod_coprime_nat)
+  apply (metis One_nat_def coprime_cong_mult_nat gcd_nat.commute setprod_coprime_nat)
   done
 
 lemma chinese_remainder_unique_nat: