src/HOL/Transcendental.thy
changeset 72211 a6cbf8ce979e
parent 71959 ee2c7f0dd1be
child 72219 0f38c96a0a74
equal deleted inserted replaced
72210:b7d6b9e71f88 72211:a6cbf8ce979e
  1419   then have times_S: "\<And>x n. x * S x n = real (Suc n) *\<^sub>R S x (Suc n)"
  1419   then have times_S: "\<And>x n. x * S x n = real (Suc n) *\<^sub>R S x (Suc n)"
  1420     by simp
  1420     by simp
  1421   have S_comm: "\<And>n. S x n * y = y * S x n"
  1421   have S_comm: "\<And>n. S x n * y = y * S x n"
  1422     by (simp add: power_commuting_commutes comm S_def)
  1422     by (simp add: power_commuting_commutes comm S_def)
  1423 
  1423 
  1424   have "real (Suc n) *\<^sub>R S (x + y) (Suc n) = (x + y) * S (x + y) n"
  1424   have "real (Suc n) *\<^sub>R S (x + y) (Suc n) = (x + y) * (\<Sum>i\<le>n. S x i * S y (n - i))"
  1425     by (simp only: times_S)
  1425     by (metis Suc.hyps times_S)
  1426   also have "\<dots> = (x + y) * (\<Sum>i\<le>n. S x i * S y (n - i))"
       
  1427     by (simp only: Suc)
       
  1428   also have "\<dots> = x * (\<Sum>i\<le>n. S x i * S y (n - i)) + y * (\<Sum>i\<le>n. S x i * S y (n - i))"
  1426   also have "\<dots> = x * (\<Sum>i\<le>n. S x i * S y (n - i)) + y * (\<Sum>i\<le>n. S x i * S y (n - i))"
  1429     by (rule distrib_right)
  1427     by (rule distrib_right)
  1430   also have "\<dots> = (\<Sum>i\<le>n. x * S x i * S y (n - i)) + (\<Sum>i\<le>n. S x i * y * S y (n - i))"
  1428   also have "\<dots> = (\<Sum>i\<le>n. x * S x i * S y (n - i)) + (\<Sum>i\<le>n. S x i * y * S y (n - i))"
  1431     by (simp add: sum_distrib_left ac_simps S_comm)
  1429     by (simp add: sum_distrib_left ac_simps S_comm)
  1432   also have "\<dots> = (\<Sum>i\<le>n. x * S x i * S y (n - i)) + (\<Sum>i\<le>n. S x i * (y * S y (n - i)))"
  1430   also have "\<dots> = (\<Sum>i\<le>n. x * S x i * S y (n - i)) + (\<Sum>i\<le>n. S x i * (y * S y (n - i)))"
  1433     by (simp add: ac_simps)
  1431     by (simp add: ac_simps)
  1434   also have "\<dots> = (\<Sum>i\<le>n. real (Suc i) *\<^sub>R (S x (Suc i) * S y (n - i))) +
  1432   also have "\<dots> = (\<Sum>i\<le>n. real (Suc i) *\<^sub>R (S x (Suc i) * S y (n - i))) 
  1435       (\<Sum>i\<le>n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i)))"
  1433                 + (\<Sum>i\<le>n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i)))"
  1436     by (simp add: times_S Suc_diff_le)
  1434     by (simp add: times_S Suc_diff_le)
  1437   also have "(\<Sum>i\<le>n. real (Suc i) *\<^sub>R (S x (Suc i) * S y (n - i))) =
  1435   also have "(\<Sum>i\<le>n. real (Suc i) *\<^sub>R (S x (Suc i) * S y (n - i)))
  1438       (\<Sum>i\<le>Suc n. real i *\<^sub>R (S x i * S y (Suc n - i)))"
  1436            = (\<Sum>i\<le>Suc n. real i *\<^sub>R (S x i * S y (Suc n - i)))"
  1439     by (subst sum.atMost_Suc_shift) simp
  1437     by (subst sum.atMost_Suc_shift) simp
  1440   also have "(\<Sum>i\<le>n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i))) =
  1438   also have "(\<Sum>i\<le>n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i)))
  1441       (\<Sum>i\<le>Suc n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i)))"
  1439            = (\<Sum>i\<le>Suc n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i)))"
  1442     by simp
  1440     by simp
  1443   also have "(\<Sum>i\<le>Suc n. real i *\<^sub>R (S x i * S y (Suc n - i))) +
  1441   also have "(\<Sum>i\<le>Suc n. real i *\<^sub>R (S x i * S y (Suc n - i)))
  1444         (\<Sum>i\<le>Suc n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i))) =
  1442            + (\<Sum>i\<le>Suc n. real (Suc n - i) *\<^sub>R (S x i * S y (Suc n - i))) 
  1445       (\<Sum>i\<le>Suc n. real (Suc n) *\<^sub>R (S x i * S y (Suc n - i)))"
  1443            = (\<Sum>i\<le>Suc n. real (Suc n) *\<^sub>R (S x i * S y (Suc n - i)))"
  1446     by (simp only: sum.distrib [symmetric] scaleR_left_distrib [symmetric]
  1444     by (simp flip: sum.distrib scaleR_add_left of_nat_add) 
  1447         of_nat_add [symmetric]) simp
       
  1448   also have "\<dots> = real (Suc n) *\<^sub>R (\<Sum>i\<le>Suc n. S x i * S y (Suc n - i))"
  1445   also have "\<dots> = real (Suc n) *\<^sub>R (\<Sum>i\<le>Suc n. S x i * S y (Suc n - i))"
  1449     by (simp only: scaleR_right.sum)
  1446     by (simp only: scaleR_right.sum)
  1450   finally show "S (x + y) (Suc n) = (\<Sum>i\<le>Suc n. S x i * S y (Suc n - i))"
  1447   finally show "S (x + y) (Suc n) = (\<Sum>i\<le>Suc n. S x i * S y (Suc n - i))"
  1451     by (simp del: sum.cl_ivl_Suc)
  1448     by (simp del: sum.cl_ivl_Suc)
  1452 qed
  1449 qed