equal
  deleted
  inserted
  replaced
  
    
    
   259   | 
   259   | 
   260 lemma cong_abs_int: "[(x::int) = y] (mod abs m) = [x = y] (mod m)"  | 
   260 lemma cong_abs_int: "[(x::int) = y] (mod abs m) = [x = y] (mod m)"  | 
   261   by (simp add: cong_altdef_int)  | 
   261   by (simp add: cong_altdef_int)  | 
   262   | 
   262   | 
   263 lemma cong_square_int:  | 
   263 lemma cong_square_int:  | 
   264    "\<lbrakk> prime (p::int); 0 < a; [a * a = 1] (mod p) \<rbrakk>  | 
   264   fixes a::int  | 
         | 
   265   shows "\<lbrakk> prime p; 0 < a; [a * a = 1] (mod p) \<rbrakk>  | 
   265     \<Longrightarrow> [a = 1] (mod p) \<or> [a = - 1] (mod p)"  | 
   266     \<Longrightarrow> [a = 1] (mod p) \<or> [a = - 1] (mod p)"  | 
   266   apply (simp only: cong_altdef_int)  | 
   267   apply (simp only: cong_altdef_int)  | 
   267   apply (subst prime_dvd_mult_eq_int [symmetric], assumption)  | 
   268   apply (subst prime_dvd_mult_eq_int [symmetric], assumption)  | 
   268   apply (auto simp add: field_simps)  | 
   269   apply (auto simp add: field_simps)  | 
   269   done  | 
   270   done  |