equal
deleted
inserted
replaced
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" |