src/HOL/GCD.thy
changeset 54437 0060957404c7
parent 54257 5c7a3b6b05a9
child 54489 03ff4d1e6784
equal deleted inserted replaced
54436:0e1c576bbc19 54437:0060957404c7
  1652  apply(erule (2) Lcm_in_lcm_closed_set_nat)
  1652  apply(erule (2) Lcm_in_lcm_closed_set_nat)
  1653 apply clarsimp
  1653 apply clarsimp
  1654 apply (metis Lcm0_iff dvd_Lcm_nat dvd_imp_le neq0_conv)
  1654 apply (metis Lcm0_iff dvd_Lcm_nat dvd_imp_le neq0_conv)
  1655 done
  1655 done
  1656 
  1656 
  1657 lemma Lcm_set_nat [code_unfold]:
  1657 lemma Lcm_set_nat [code, code_unfold]:
  1658   "Lcm (set ns) = fold lcm ns (1::nat)"
  1658   "Lcm (set ns) = fold lcm ns (1::nat)"
  1659   by (fact gcd_lcm_complete_lattice_nat.Sup_set_fold)
  1659   by (fact gcd_lcm_complete_lattice_nat.Sup_set_fold)
  1660 
  1660 
  1661 lemma Gcd_set_nat [code_unfold]:
  1661 lemma Gcd_set_nat [code, code_unfold]:
  1662   "Gcd (set ns) = fold gcd ns (0::nat)"
  1662   "Gcd (set ns) = fold gcd ns (0::nat)"
  1663   by (fact gcd_lcm_complete_lattice_nat.Inf_set_fold)
  1663   by (fact gcd_lcm_complete_lattice_nat.Inf_set_fold)
  1664 
  1664 
  1665 lemma mult_inj_if_coprime_nat:
  1665 lemma mult_inj_if_coprime_nat:
  1666   "inj_on f A \<Longrightarrow> inj_on g B \<Longrightarrow> ALL a:A. ALL b:B. coprime (f a) (g b)
  1666   "inj_on f A \<Longrightarrow> inj_on g B \<Longrightarrow> ALL a:A. ALL b:B. coprime (f a) (g b)
  1728 lemma dvd_Gcd_int[simp]:
  1728 lemma dvd_Gcd_int[simp]:
  1729   fixes M :: "int set"
  1729   fixes M :: "int set"
  1730   assumes "\<forall>m\<in>M. n dvd m" shows "n dvd Gcd M"
  1730   assumes "\<forall>m\<in>M. n dvd m" shows "n dvd Gcd M"
  1731   using assms by (simp add: Gcd_int_def dvd_int_iff)
  1731   using assms by (simp add: Gcd_int_def dvd_int_iff)
  1732 
  1732 
  1733 lemma Lcm_set_int [code_unfold]:
  1733 lemma Lcm_set_int [code, code_unfold]:
  1734   "Lcm (set xs) = fold lcm xs (1::int)"
  1734   "Lcm (set xs) = fold lcm xs (1::int)"
  1735   by (induct xs rule: rev_induct, simp_all add: lcm_commute_int)
  1735   by (induct xs rule: rev_induct, simp_all add: lcm_commute_int)
  1736 
  1736 
  1737 lemma Gcd_set_int [code_unfold]:
  1737 lemma Gcd_set_int [code, code_unfold]:
  1738   "Gcd (set xs) = fold gcd xs (0::int)"
  1738   "Gcd (set xs) = fold gcd xs (0::int)"
  1739   by (induct xs rule: rev_induct, simp_all add: gcd_commute_int)
  1739   by (induct xs rule: rev_induct, simp_all add: gcd_commute_int)
  1740 
  1740 
  1741 end
  1741 end
  1742 
  1742