src/HOL/GCD.thy
changeset 34223 dce32a1e05fe
parent 34222 e33ee7369ecb
child 34915 7894c7dab132
equal deleted inserted replaced
34222:e33ee7369ecb 34223:dce32a1e05fe
  1687 
  1687 
  1688 lemma mult_inj_if_coprime_nat:
  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)
  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)"
  1690    \<Longrightarrow> inj_on (%(a,b). f a * g b::nat) (A \<times> B)"
  1691 apply(auto simp add:inj_on_def)
  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
  1692 apply (metis gcd_semilattice_nat.inf_commute coprime_dvd_mult_iff_nat
  1693      gcd_semilattice_nat.inf_le2 lcm_proj2_iff_nat nat_mult_1 prod_gcd_lcm_nat)
  1693              dvd.neq_le_trans dvd_triv_left)
  1694 apply (metis coprime_dvd_mult_nat gcd_proj1_if_dvd_nat
  1694 apply (metis gcd_semilattice_nat.inf_commute coprime_dvd_mult_iff_nat
  1695        gcd_semilattice_nat.inf_commute lcm_dvd1_nat nat_mult_1
  1695              dvd.neq_le_trans dvd_triv_right mult_commute)
  1696        nat_mult_commute prod_gcd_lcm_nat)
       
  1697 done
  1696 done
  1698 
  1697 
  1699 text{* Nitpick: *}
  1698 text{* Nitpick: *}
  1700 
  1699 
  1701 lemma gcd_eq_nitpick_gcd [nitpick_def]: "gcd x y \<equiv> Nitpick.nat_gcd x y"
  1700 lemma gcd_eq_nitpick_gcd [nitpick_def]: "gcd x y \<equiv> Nitpick.nat_gcd x y"