src/HOL/Number_Theory/Gauss.thy
changeset 67091 1393c2340eec
parent 67051 e7e54a0b9197
child 67118 ccab07d1196c
equal deleted inserted replaced
67090:0ec94bb9cec4 67091:1393c2340eec
   321     apply (drule prod.reindex)
   321     apply (drule prod.reindex)
   322     apply auto
   322     apply auto
   323     done
   323     done
   324   then have "\<forall>x \<in> E. [(p-x) mod p = - x](mod p)"
   324   then have "\<forall>x \<in> E. [(p-x) mod p = - x](mod p)"
   325     by (metis cong_def minus_mod_self1 mod_mod_trivial)
   325     by (metis cong_def minus_mod_self1 mod_mod_trivial)
   326   then have "[prod ((\<lambda>x. x mod p) o (op - p)) E = prod (uminus) E](mod p)"
   326   then have "[prod ((\<lambda>x. x mod p) \<circ> (op - p)) E = prod (uminus) E](mod p)"
   327     using finite_E p_ge_2 cong_prod [of E "(\<lambda>x. x mod p) o (op - p)" uminus p]
   327     using finite_E p_ge_2 cong_prod [of E "(\<lambda>x. x mod p) \<circ> (op - p)" uminus p]
   328     by auto
   328     by auto
   329   then have two: "[prod id F = prod (uminus) E](mod p)"
   329   then have two: "[prod id F = prod (uminus) E](mod p)"
   330     by (metis FE cong_cong_mod_int cong_refl cong_prod minus_mod_self1)
   330     by (metis FE cong_cong_mod_int cong_refl cong_prod minus_mod_self1)
   331   have "prod uminus E = (-1) ^ card E * prod id E"
   331   have "prod uminus E = (-1) ^ card E * prod id E"
   332     using finite_E by (induct set: finite) auto
   332     using finite_E by (induct set: finite) auto