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