src/HOL/Number_Theory/Primes.thy
changeset 33946 fcc20072df9a
parent 33718 06e9aff51d17
child 35644 d20cf282342e
equal deleted inserted replaced
33945:8493ed132fed 33946:fcc20072df9a
   358     also note pab
   358     also note pab
   359     finally have pab': "p dvd a * b".
   359     finally have pab': "p dvd a * b".
   360     from prime_dvd_mult_nat[OF p pab']
   360     from prime_dvd_mult_nat[OF p pab']
   361     have "p dvd a \<or> p dvd b" .
   361     have "p dvd a \<or> p dvd b" .
   362     moreover
   362     moreover
   363     {assume pa: "p dvd a"
   363     { assume pa: "p dvd a"
   364       have pnba: "p^n dvd b*a" using pab by (simp add: mult_commute)
       
   365       from coprime_common_divisor_nat [OF ab, OF pa] p have "\<not> p dvd b" by auto
   364       from coprime_common_divisor_nat [OF ab, OF pa] p have "\<not> p dvd b" by auto
   366       with p have "coprime b p"
   365       with p have "coprime b p"
   367         by (subst gcd_commute_nat, intro prime_imp_coprime_nat)
   366         by (subst gcd_commute_nat, intro prime_imp_coprime_nat)
   368       hence pnb: "coprime (p^n) b"
   367       hence pnb: "coprime (p^n) b"
   369         by (subst gcd_commute_nat, rule coprime_exp_nat)
   368         by (subst gcd_commute_nat, rule coprime_exp_nat)
   370       from coprime_divprod_nat[OF pnba pnb] have ?thesis by blast }
   369       from coprime_dvd_mult_nat[OF pnb pab] have ?thesis by blast }
   371     moreover
   370     moreover
   372     {assume pb: "p dvd b"
   371     { assume pb: "p dvd b"
   373       have pnba: "p^n dvd b*a" using pab by (simp add: mult_commute)
   372       have pnba: "p^n dvd b*a" using pab by (simp add: mult_commute)
   374       from coprime_common_divisor_nat [OF ab, of p] pb p have "\<not> p dvd a"
   373       from coprime_common_divisor_nat [OF ab, of p] pb p have "\<not> p dvd a"
   375         by auto
   374         by auto
   376       with p have "coprime a p"
   375       with p have "coprime a p"
   377         by (subst gcd_commute_nat, intro prime_imp_coprime_nat)
   376         by (subst gcd_commute_nat, intro prime_imp_coprime_nat)
   378       hence pna: "coprime (p^n) a"
   377       hence pna: "coprime (p^n) a"
   379         by (subst gcd_commute_nat, rule coprime_exp_nat)
   378         by (subst gcd_commute_nat, rule coprime_exp_nat)
   380       from coprime_divprod_nat[OF pab pna] have ?thesis by blast }
   379       from coprime_dvd_mult_nat[OF pna pnba] have ?thesis by blast }
   381     ultimately have ?thesis by blast}
   380     ultimately have ?thesis by blast}
   382   ultimately show ?thesis by blast
   381   ultimately show ?thesis by blast
   383 qed
   382 qed
   384 
   383 
   385 subsection {* Infinitely many primes *}
   384 subsection {* Infinitely many primes *}