src/HOL/GCD.thy
changeset 58834 773b378d9313
parent 58787 af9eb5e566dd
child 58889 5b7a9633cfa8
equal deleted inserted replaced
58833:09974789e483 58834:773b378d9313
   582   have dvdg: "?g dvd a" "?g dvd b" by simp_all
   582   have dvdg: "?g dvd a" "?g dvd b" by simp_all
   583   have dvdg': "?g' dvd ?a'" "?g' dvd ?b'" by simp_all
   583   have dvdg': "?g' dvd ?a'" "?g' dvd ?b'" by simp_all
   584   from dvdg dvdg' obtain ka kb ka' kb' where
   584   from dvdg dvdg' obtain ka kb ka' kb' where
   585       kab: "a = ?g * ka" "b = ?g * kb" "?a' = ?g' * ka'" "?b' = ?g' * kb'"
   585       kab: "a = ?g * ka" "b = ?g * kb" "?a' = ?g' * ka'" "?b' = ?g' * kb'"
   586     unfolding dvd_def by blast
   586     unfolding dvd_def by blast
   587   then have "?g * ?a' = (?g * ?g') * ka'" "?g * ?b' = (?g * ?g') * kb'"
   587   from this [symmetric] have "?g * ?a' = (?g * ?g') * ka'" "?g * ?b' = (?g * ?g') * kb'"
   588     by simp_all
   588     by (simp_all add: mult.assoc mult.left_commute [of "gcd a b"])
   589   then have dvdgg':"?g * ?g' dvd a" "?g* ?g' dvd b"
   589   then have dvdgg':"?g * ?g' dvd a" "?g* ?g' dvd b"
   590     by (auto simp add: dvd_mult_div_cancel [OF dvdg(1)]
   590     by (auto simp add: dvd_mult_div_cancel [OF dvdg(1)]
   591       dvd_mult_div_cancel [OF dvdg(2)] dvd_def)
   591       dvd_mult_div_cancel [OF dvdg(2)] dvd_def)
   592   have "?g \<noteq> 0" using nz by simp
   592   have "?g \<noteq> 0" using nz by simp
   593   then have gp: "?g > 0" by arith
   593   then have gp: "?g > 0" by arith