src/HOL/Old_Number_Theory/Pocklington.thy
changeset 64243 aee949f6642d
parent 64242 93c6f0da5c70
child 64272 f76b6dda2e56
equal deleted inserted replaced
64242:93c6f0da5c70 64243:aee949f6642d
  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 }