src/HOL/Library/Polynomial_Factorial.thy
changeset 64267 b9a1486e79be
parent 64242 93c6f0da5c70
child 64591 240a39af9ec4
equal deleted inserted replaced
64265:8eb6365f5916 64267:b9a1486e79be
   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