src/HOL/Analysis/Gamma_Function.thy
changeset 67399 eab6ce8368fa
parent 67278 c60e3d615b8c
child 67976 75b94eb58c3d
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
  2036       finally show "?g n = ?h n" by (simp only: mult_ac)
  2036       finally show "?g n = ?h n" by (simp only: mult_ac)
  2037     qed
  2037     qed
  2038 
  2038 
  2039     moreover from z double_in_nonpos_Ints_imp[of z] have "2 * z \<notin> \<int>\<^sub>\<le>\<^sub>0" by auto
  2039     moreover from z double_in_nonpos_Ints_imp[of z] have "2 * z \<notin> \<int>\<^sub>\<le>\<^sub>0" by auto
  2040     hence "?g \<longlonglongrightarrow> ?powr 2 (2*z) * Gamma z * Gamma (z+1/2) / Gamma (2*z)"
  2040     hence "?g \<longlonglongrightarrow> ?powr 2 (2*z) * Gamma z * Gamma (z+1/2) / Gamma (2*z)"
  2041       using LIMSEQ_subseq_LIMSEQ[OF Gamma_series'_LIMSEQ, of "op*2" "2*z"]
  2041       using LIMSEQ_subseq_LIMSEQ[OF Gamma_series'_LIMSEQ, of "( * )2" "2*z"]
  2042       by (intro tendsto_intros Gamma_series'_LIMSEQ)
  2042       by (intro tendsto_intros Gamma_series'_LIMSEQ)
  2043          (simp_all add: o_def strict_mono_def Gamma_eq_zero_iff)
  2043          (simp_all add: o_def strict_mono_def Gamma_eq_zero_iff)
  2044     ultimately have "?h \<longlonglongrightarrow> ?powr 2 (2*z) * Gamma z * Gamma (z+1/2) / Gamma (2*z)"
  2044     ultimately have "?h \<longlonglongrightarrow> ?powr 2 (2*z) * Gamma z * Gamma (z+1/2) / Gamma (2*z)"
  2045       by (rule Lim_transform_eventually)
  2045       by (rule Lim_transform_eventually)
  2046   } note lim = this
  2046   } note lim = this
  3086   also have "\<dots> = (\<integral>\<^sup>+t. \<integral>\<^sup>+u. ennreal (indicator ({0..}\<times>{t..}) (t,u) * t powr (a - 1) * 
  3086   also have "\<dots> = (\<integral>\<^sup>+t. \<integral>\<^sup>+u. ennreal (indicator ({0..}\<times>{t..}) (t,u) * t powr (a - 1) * 
  3087                               (u - t) powr (b - 1) / exp u) \<partial>lborel \<partial>lborel)"
  3087                               (u - t) powr (b - 1) / exp u) \<partial>lborel \<partial>lborel)"
  3088   proof (rule nn_integral_cong, goal_cases)
  3088   proof (rule nn_integral_cong, goal_cases)
  3089     case (1 t)
  3089     case (1 t)
  3090     have "(\<integral>\<^sup>+u. ennreal (indicator ({0..}\<times>{0..}) (t,u) * t powr (a - 1) * 
  3090     have "(\<integral>\<^sup>+u. ennreal (indicator ({0..}\<times>{0..}) (t,u) * t powr (a - 1) * 
  3091                               u powr (b - 1) / exp (t + u)) \<partial>distr lborel borel (op + (-t))) =
  3091                               u powr (b - 1) / exp (t + u)) \<partial>distr lborel borel ((+) (-t))) =
  3092                (\<integral>\<^sup>+u. ennreal (indicator ({0..}\<times>{t..}) (t,u) * t powr (a - 1) * 
  3092                (\<integral>\<^sup>+u. ennreal (indicator ({0..}\<times>{t..}) (t,u) * t powr (a - 1) * 
  3093                               (u - t) powr (b - 1) / exp u) \<partial>lborel)"
  3093                               (u - t) powr (b - 1) / exp u) \<partial>lborel)"
  3094       by (subst nn_integral_distr) (auto intro!: nn_integral_cong simp: indicator_def)
  3094       by (subst nn_integral_distr) (auto intro!: nn_integral_cong simp: indicator_def)
  3095     thus ?case by (subst (asm) lborel_distr_plus)
  3095     thus ?case by (subst (asm) lborel_distr_plus)
  3096   qed
  3096   qed
  3114     show ?case
  3114     show ?case
  3115     proof (cases "u > 0")
  3115     proof (cases "u > 0")
  3116       case True
  3116       case True
  3117       have "(\<integral>\<^sup>+t. ennreal (indicator {0..u} t * t powr (a - 1) * (u - t) powr (b - 1)) \<partial>lborel) = 
  3117       have "(\<integral>\<^sup>+t. ennreal (indicator {0..u} t * t powr (a - 1) * (u - t) powr (b - 1)) \<partial>lborel) = 
  3118               (\<integral>\<^sup>+t. ennreal (indicator {0..1} t * (u * t) powr (a - 1) * (u - u * t) powr (b - 1)) 
  3118               (\<integral>\<^sup>+t. ennreal (indicator {0..1} t * (u * t) powr (a - 1) * (u - u * t) powr (b - 1)) 
  3119                 \<partial>distr lborel borel (op * (1 / u)))" (is "_ = nn_integral _ ?f")
  3119                 \<partial>distr lborel borel (( * ) (1 / u)))" (is "_ = nn_integral _ ?f")
  3120         using True
  3120         using True
  3121         by (subst nn_integral_distr) (auto simp: indicator_def field_simps intro!: nn_integral_cong)
  3121         by (subst nn_integral_distr) (auto simp: indicator_def field_simps intro!: nn_integral_cong)
  3122       also have "distr lborel borel (op * (1 / u)) = density lborel (\<lambda>_. u)"
  3122       also have "distr lborel borel (( * ) (1 / u)) = density lborel (\<lambda>_. u)"
  3123         using \<open>u > 0\<close> by (subst lborel_distr_mult) auto
  3123         using \<open>u > 0\<close> by (subst lborel_distr_mult) auto
  3124       also have "nn_integral \<dots> ?f = (\<integral>\<^sup>+x. ennreal (indicator {0..1} x * (u * (u * x) powr (a - 1) *
  3124       also have "nn_integral \<dots> ?f = (\<integral>\<^sup>+x. ennreal (indicator {0..1} x * (u * (u * x) powr (a - 1) *
  3125                                               (u * (1 - x)) powr (b - 1))) \<partial>lborel)" using \<open>u > 0\<close>
  3125                                               (u * (1 - x)) powr (b - 1))) \<partial>lborel)" using \<open>u > 0\<close>
  3126         by (subst nn_integral_density) (auto simp: ennreal_mult' [symmetric] algebra_simps)
  3126         by (subst nn_integral_density) (auto simp: ennreal_mult' [symmetric] algebra_simps)
  3127       also have "\<dots> = (\<integral>\<^sup>+x. ennreal (u powr (a + b - 1)) * 
  3127       also have "\<dots> = (\<integral>\<^sup>+x. ennreal (u powr (a + b - 1)) *