equal
deleted
inserted
replaced
661 |
661 |
662 lemma fract_poly_diff [simp]: |
662 lemma fract_poly_diff [simp]: |
663 "fract_poly (p - q) = fract_poly p - fract_poly q" |
663 "fract_poly (p - q) = fract_poly p - fract_poly q" |
664 by (intro poly_eqI) (simp_all add: coeff_map_poly) |
664 by (intro poly_eqI) (simp_all add: coeff_map_poly) |
665 |
665 |
666 lemma to_fract_setsum [simp]: "to_fract (setsum f A) = setsum (\<lambda>x. to_fract (f x)) A" |
666 lemma to_fract_sum [simp]: "to_fract (sum f A) = sum (\<lambda>x. to_fract (f x)) A" |
667 by (cases "finite A", induction A rule: finite_induct) simp_all |
667 by (cases "finite A", induction A rule: finite_induct) simp_all |
668 |
668 |
669 lemma fract_poly_mult [simp]: |
669 lemma fract_poly_mult [simp]: |
670 "fract_poly (p * q) = fract_poly p * fract_poly q" |
670 "fract_poly (p * q) = fract_poly p * fract_poly q" |
671 by (intro poly_eqI) (simp_all add: coeff_map_poly coeff_mult) |
671 by (intro poly_eqI) (simp_all add: coeff_map_poly coeff_mult) |
849 by (simp add: coeff_mult) |
849 by (simp add: coeff_mult) |
850 also have "{..i+m} = insert i ?A" by auto |
850 also have "{..i+m} = insert i ?A" by auto |
851 also have "(\<Sum>k\<in>\<dots>. coeff a k * coeff b (i + m - k)) = |
851 also have "(\<Sum>k\<in>\<dots>. coeff a k * coeff b (i + m - k)) = |
852 coeff a i * coeff b m + (\<Sum>k\<in>?A. coeff a k * coeff b (i + m - k))" |
852 coeff a i * coeff b m + (\<Sum>k\<in>?A. coeff a k * coeff b (i + m - k))" |
853 (is "_ = _ + ?S") |
853 (is "_ = _ + ?S") |
854 by (subst setsum.insert) simp_all |
854 by (subst sum.insert) simp_all |
855 finally have eq: "c dvd coeff a i * coeff b m + ?S" . |
855 finally have eq: "c dvd coeff a i * coeff b m + ?S" . |
856 moreover have "c dvd ?S" |
856 moreover have "c dvd ?S" |
857 proof (rule dvd_setsum) |
857 proof (rule dvd_sum) |
858 fix k assume k: "k \<in> {..i+m} - {i}" |
858 fix k assume k: "k \<in> {..i+m} - {i}" |
859 show "c dvd coeff a k * coeff b (i + m - k)" |
859 show "c dvd coeff a k * coeff b (i + m - k)" |
860 proof (cases "k < i") |
860 proof (cases "k < i") |
861 case False |
861 case False |
862 with k have "c dvd coeff a k" by (intro descend.IH) simp |
862 with k have "c dvd coeff a k" by (intro descend.IH) simp |