src/HOL/GCD.thy
changeset 34222 e33ee7369ecb
parent 34221 3ae38d4b090c
child 34223 dce32a1e05fe
equal deleted inserted replaced
34221:3ae38d4b090c 34222:e33ee7369ecb
  1682 proof -
  1682 proof -
  1683   interpret fun_left_comm_idem "gcd::int\<Rightarrow>int\<Rightarrow>int" by (rule fun_left_comm_idem_gcd_int)
  1683   interpret fun_left_comm_idem "gcd::int\<Rightarrow>int\<Rightarrow>int" by (rule fun_left_comm_idem_gcd_int)
  1684   show ?thesis by(simp add: Gcd_def fold_set gcd_commute_int)
  1684   show ?thesis by(simp add: Gcd_def fold_set gcd_commute_int)
  1685 qed
  1685 qed
  1686 
  1686 
       
  1687 
       
  1688 lemma mult_inj_if_coprime_nat:
       
  1689   "inj_on f A \<Longrightarrow> inj_on g B \<Longrightarrow> ALL a:A. ALL b:B. coprime (f a) (g b)
       
  1690    \<Longrightarrow> inj_on (%(a,b). f a * g b::nat) (A \<times> B)"
       
  1691 apply(auto simp add:inj_on_def)
       
  1692 apply (metis coprime_dvd_mult_nat dvd.eq_iff gcd_lcm_lattice_nat.inf_sup_absorb
       
  1693      gcd_semilattice_nat.inf_le2 lcm_proj2_iff_nat nat_mult_1 prod_gcd_lcm_nat)
       
  1694 apply (metis coprime_dvd_mult_nat gcd_proj1_if_dvd_nat
       
  1695        gcd_semilattice_nat.inf_commute lcm_dvd1_nat nat_mult_1
       
  1696        nat_mult_commute prod_gcd_lcm_nat)
       
  1697 done
       
  1698 
       
  1699 text{* Nitpick: *}
       
  1700 
  1687 lemma gcd_eq_nitpick_gcd [nitpick_def]: "gcd x y \<equiv> Nitpick.nat_gcd x y"
  1701 lemma gcd_eq_nitpick_gcd [nitpick_def]: "gcd x y \<equiv> Nitpick.nat_gcd x y"
  1688 apply (rule eq_reflection)
  1702 apply (rule eq_reflection)
  1689 apply (induct x y rule: nat_gcd.induct)
  1703 apply (induct x y rule: nat_gcd.induct)
  1690 by (simp add: gcd_nat.simps Nitpick.nat_gcd.simps)
  1704 by (simp add: gcd_nat.simps Nitpick.nat_gcd.simps)
  1691 
  1705