equal
deleted
inserted
replaced
1239 {assume "a ^ ((n - 1) div p) mod n = 0" |
1239 {assume "a ^ ((n - 1) div p) mod n = 0" |
1240 then obtain s where s: "a ^ ((n - 1) div p) = n*s" |
1240 then obtain s where s: "a ^ ((n - 1) div p) = n*s" |
1241 unfolding mod_eq_0_iff by blast |
1241 unfolding mod_eq_0_iff by blast |
1242 hence eq0: "(a^((n - 1) div p))^p = (n*s)^p" by simp |
1242 hence eq0: "(a^((n - 1) div p))^p = (n*s)^p" by simp |
1243 from qrn[symmetric] have qn1: "q dvd n - 1" unfolding dvd_def by auto |
1243 from qrn[symmetric] have qn1: "q dvd n - 1" unfolding dvd_def by auto |
1244 from dvd_trans[OF p(2) qn1] div_mod_equality'[of "n - 1" p] |
1244 with p(2) have npp: "(n - 1) div p * p = n - 1" |
1245 have npp: "(n - 1) div p * p = n - 1" by (simp add: dvd_eq_mod_eq_0) |
1245 by (auto intro: dvd_div_mult_self dvd_trans) |
1246 with eq0 have "a^ (n - 1) = (n*s)^p" |
1246 with eq0 have "a^ (n - 1) = (n*s)^p" |
1247 by (simp add: power_mult[symmetric]) |
1247 by (simp add: power_mult[symmetric]) |
1248 hence "1 = (n*s)^(Suc (p - 1)) mod n" using bqn p01 by simp |
1248 hence "1 = (n*s)^(Suc (p - 1)) mod n" using bqn p01 by simp |
1249 also have "\<dots> = 0" by (simp add: mult.assoc) |
1249 also have "\<dots> = 0" by (simp add: mult.assoc) |
1250 finally have False by simp } |
1250 finally have False by simp } |