equal
deleted
inserted
replaced
723 shows "gcd x y = |
723 shows "gcd x y = |
724 (\<Prod>p \<in> prime_factors x \<union> prime_factors y. p ^ min (multiplicity p x) (multiplicity p y))" |
724 (\<Prod>p \<in> prime_factors x \<union> prime_factors y. p ^ min (multiplicity p x) (multiplicity p y))" |
725 (is "_ = ?z") |
725 (is "_ = ?z") |
726 proof - |
726 proof - |
727 have [arith]: "?z > 0" |
727 have [arith]: "?z > 0" |
728 by (rule setprod_pos_nat) auto |
728 by auto |
729 have aux: "\<And>p. prime p \<Longrightarrow> multiplicity p ?z = min (multiplicity p x) (multiplicity p y)" |
729 have aux: "\<And>p. prime p \<Longrightarrow> multiplicity p ?z = min (multiplicity p x) (multiplicity p y)" |
730 apply (subst multiplicity_prod_prime_powers_nat) |
730 apply (subst multiplicity_prod_prime_powers_nat) |
731 apply auto |
731 apply auto |
732 done |
732 done |
733 have "?z dvd x" |
733 have "?z dvd x" |
757 shows "lcm (x::nat) y = |
757 shows "lcm (x::nat) y = |
758 (\<Prod>p \<in> prime_factors x \<union> prime_factors y. p ^ max (multiplicity p x) (multiplicity p y))" |
758 (\<Prod>p \<in> prime_factors x \<union> prime_factors y. p ^ max (multiplicity p x) (multiplicity p y))" |
759 (is "_ = ?z") |
759 (is "_ = ?z") |
760 proof - |
760 proof - |
761 have [arith]: "?z > 0" |
761 have [arith]: "?z > 0" |
762 by (rule setprod_pos_nat, auto) |
762 by auto |
763 have aux: "\<And>p. prime p \<Longrightarrow> multiplicity p ?z = max (multiplicity p x) (multiplicity p y)" |
763 have aux: "\<And>p. prime p \<Longrightarrow> multiplicity p ?z = max (multiplicity p x) (multiplicity p y)" |
764 apply (subst multiplicity_prod_prime_powers_nat) |
764 apply (subst multiplicity_prod_prime_powers_nat) |
765 apply auto |
765 apply auto |
766 done |
766 done |
767 have "x dvd ?z" |
767 have "x dvd ?z" |