src/HOL/Number_Theory/Quadratic_Reciprocity.thy
changeset 68634 db0980691ef4
parent 68631 bc1369804692
child 68707 5b269897df9d
equal deleted inserted replaced
68633:ae4373f3d8d3 68634:db0980691ef4
   368     then have "x \<le> int p * (int q - 1) div 2 + (int p - 1) div 2"
   368     then have "x \<le> int p * (int q - 1) div 2 + (int p - 1) div 2"
   369       unfolding BuDuF_def using p_eq2 int_distrib(4) by auto
   369       unfolding BuDuF_def using p_eq2 int_distrib(4) by auto
   370     moreover from x have "(int p - 1) div 2 \<le> - 1 + x mod p"
   370     moreover from x have "(int p - 1) div 2 \<le> - 1 + x mod p"
   371       by (auto simp: BuDuF_def)
   371       by (auto simp: BuDuF_def)
   372     moreover have "int p * (int q - 1) div 2 = int p * ((int q - 1) div 2)"
   372     moreover have "int p * (int q - 1) div 2 = int p * ((int q - 1) div 2)"
   373       using div_mult1_eq odd_q by auto
   373       by (subst div_mult1_eq) (simp add: odd_q)
   374     then have "p * (int q - 1) div 2 = p * ((int q + 1) div 2 - 1)"
   374     then have "p * (int q - 1) div 2 = p * ((int q + 1) div 2 - 1)"
   375       by fastforce
   375       by fastforce
   376     ultimately have "x \<le> p * ((int q + 1) div 2 - 1) - 1 + x mod p"
   376     ultimately have "x \<le> p * ((int q + 1) div 2 - 1) - 1 + x mod p"
   377       by linarith
   377       by linarith
   378     then have "x div p < (int q + 1) div 2 - 1"
   378     then have "x div p < (int q + 1) div 2 - 1"