100 (simp_all add: of_nat_Suc field_simps) |
100 (simp_all add: of_nat_Suc field_simps) |
101 finally show ?case . |
101 finally show ?case . |
102 qed |
102 qed |
103 qed auto |
103 qed auto |
104 also have "\<dots> = ennreal (1 - (\<Sum>n\<le>k. (a^n * exp (-a)) / fact n))" |
104 also have "\<dots> = ennreal (1 - (\<Sum>n\<le>k. (a^n * exp (-a)) / fact n))" |
105 by (auto simp: power_0_left if_distrib[where f="\<lambda>x. x / a" for a] setsum.If_cases) |
105 by (auto simp: power_0_left if_distrib[where f="\<lambda>x. x / a" for a] sum.If_cases) |
106 also have "\<dots> = ennreal ((1 - (\<Sum>n\<le>k. (a^n * exp (-a)) / fact n)) * fact k) * ennreal (inverse (fact k))" |
106 also have "\<dots> = ennreal ((1 - (\<Sum>n\<le>k. (a^n * exp (-a)) / fact n)) * fact k) * ennreal (inverse (fact k))" |
107 by (subst ennreal_mult''[symmetric]) (auto intro!: arg_cong[where f=ennreal]) |
107 by (subst ennreal_mult''[symmetric]) (auto intro!: arg_cong[where f=ennreal]) |
108 finally show ?thesis |
108 finally show ?thesis |
109 by (auto simp add: mult_right_ennreal_cancel le_less) |
109 by (auto simp add: mult_right_ennreal_cancel le_less) |
110 qed |
110 qed |
147 unfolding erlang_CDF_def |
147 unfolding erlang_CDF_def |
148 proof (clarsimp simp: not_less) |
148 proof (clarsimp simp: not_less) |
149 assume "0 \<le> x" |
149 assume "0 \<le> x" |
150 have "(\<Sum>n\<le>k. (l * x) ^ n * exp (- (l * x)) / fact n) = |
150 have "(\<Sum>n\<le>k. (l * x) ^ n * exp (- (l * x)) / fact n) = |
151 exp (- (l * x)) * (\<Sum>n\<le>k. (l * x) ^ n / fact n)" |
151 exp (- (l * x)) * (\<Sum>n\<le>k. (l * x) ^ n / fact n)" |
152 unfolding setsum_distrib_left by (intro setsum.cong) (auto simp: field_simps) |
152 unfolding sum_distrib_left by (intro sum.cong) (auto simp: field_simps) |
153 also have "\<dots> = (\<Sum>n\<le>k. (l * x) ^ n / fact n) / exp (l * x)" |
153 also have "\<dots> = (\<Sum>n\<le>k. (l * x) ^ n / fact n) / exp (l * x)" |
154 by (simp add: exp_minus field_simps) |
154 by (simp add: exp_minus field_simps) |
155 also have "\<dots> \<le> 1" |
155 also have "\<dots> \<le> 1" |
156 proof (subst divide_le_eq_1_pos) |
156 proof (subst divide_le_eq_1_pos) |
157 show "(\<Sum>n\<le>k. (l * x) ^ n / fact n) \<le> exp (l * x)" |
157 show "(\<Sum>n\<le>k. (l * x) ^ n / fact n) \<le> exp (l * x)" |
158 using \<open>0 < l\<close> \<open>0 \<le> x\<close> summable_exp_generic[of "l * x"] |
158 using \<open>0 < l\<close> \<open>0 \<le> x\<close> summable_exp_generic[of "l * x"] |
159 by (auto simp: exp_def divide_inverse ac_simps intro!: setsum_le_suminf) |
159 by (auto simp: exp_def divide_inverse ac_simps intro!: sum_le_suminf) |
160 qed simp |
160 qed simp |
161 finally show "(\<Sum>n\<le>k. (l * x) ^ n * exp (- (l * x)) / fact n) \<le> 1" . |
161 finally show "(\<Sum>n\<le>k. (l * x) ^ n * exp (- (l * x)) / fact n) \<le> 1" . |
162 qed |
162 qed |
163 |
163 |
164 lemma nn_integral_erlang_density: |
164 lemma nn_integral_erlang_density: |
555 apply (subst convolution_erlang_density[symmetric, OF \<open>0<l\<close>]) |
555 apply (subst convolution_erlang_density[symmetric, OF \<open>0<l\<close>]) |
556 apply (intro distributed_convolution) |
556 apply (intro distributed_convolution) |
557 apply auto |
557 apply auto |
558 done |
558 done |
559 |
559 |
560 lemma (in prob_space) erlang_distributed_setsum: |
560 lemma (in prob_space) erlang_distributed_sum: |
561 assumes finI : "finite I" |
561 assumes finI : "finite I" |
562 assumes A: "I \<noteq> {}" |
562 assumes A: "I \<noteq> {}" |
563 assumes [simp, arith]: "0 < l" |
563 assumes [simp, arith]: "0 < l" |
564 assumes expX: "\<And>i. i \<in> I \<Longrightarrow> distributed M lborel (X i) (erlang_density (k i) l)" |
564 assumes expX: "\<And>i. i \<in> I \<Longrightarrow> distributed M lborel (X i) (erlang_density (k i) l)" |
565 assumes ind: "indep_vars (\<lambda>i. borel) X I" |
565 assumes ind: "indep_vars (\<lambda>i. borel) X I" |
568 proof (induct rule: finite_ne_induct) |
568 proof (induct rule: finite_ne_induct) |
569 case (singleton i) then show ?case by auto |
569 case (singleton i) then show ?case by auto |
570 next |
570 next |
571 case (insert i I) |
571 case (insert i I) |
572 then have "distributed M lborel (\<lambda>x. (X i x) + (\<Sum>i\<in> I. X i x)) (erlang_density (Suc (k i) + Suc ((\<Sum>i\<in>I. Suc (k i)) - 1) - 1) l)" |
572 then have "distributed M lborel (\<lambda>x. (X i x) + (\<Sum>i\<in> I. X i x)) (erlang_density (Suc (k i) + Suc ((\<Sum>i\<in>I. Suc (k i)) - 1) - 1) l)" |
573 by(intro sum_indep_erlang indep_vars_setsum) (auto intro!: indep_vars_subset) |
573 by(intro sum_indep_erlang indep_vars_sum) (auto intro!: indep_vars_subset) |
574 also have "(\<lambda>x. (X i x) + (\<Sum>i\<in> I. X i x)) = (\<lambda>x. \<Sum>i\<in>insert i I. X i x)" |
574 also have "(\<lambda>x. (X i x) + (\<Sum>i\<in> I. X i x)) = (\<lambda>x. \<Sum>i\<in>insert i I. X i x)" |
575 using insert by auto |
575 using insert by auto |
576 also have "Suc(k i) + Suc ((\<Sum>i\<in>I. Suc (k i)) - 1) - 1 = (\<Sum>i\<in>insert i I. Suc (k i)) - 1" |
576 also have "Suc(k i) + Suc ((\<Sum>i\<in>I. Suc (k i)) - 1) - 1 = (\<Sum>i\<in>insert i I. Suc (k i)) - 1" |
577 using insert by (auto intro!: Suc_pred simp: ac_simps) |
577 using insert by (auto intro!: Suc_pred simp: ac_simps) |
578 finally show ?case by fast |
578 finally show ?case by fast |
579 qed |
579 qed |
580 |
580 |
581 lemma (in prob_space) exponential_distributed_setsum: |
581 lemma (in prob_space) exponential_distributed_sum: |
582 assumes finI: "finite I" |
582 assumes finI: "finite I" |
583 assumes A: "I \<noteq> {}" |
583 assumes A: "I \<noteq> {}" |
584 assumes l: "0 < l" |
584 assumes l: "0 < l" |
585 assumes expX: "\<And>i. i \<in> I \<Longrightarrow> distributed M lborel (X i) (exponential_density l)" |
585 assumes expX: "\<And>i. i \<in> I \<Longrightarrow> distributed M lborel (X i) (exponential_density l)" |
586 assumes ind: "indep_vars (\<lambda>i. borel) X I" |
586 assumes ind: "indep_vars (\<lambda>i. borel) X I" |
587 shows "distributed M lborel (\<lambda>x. \<Sum>i\<in>I. X i x) (erlang_density ((card I) - 1) l)" |
587 shows "distributed M lborel (\<lambda>x. \<Sum>i\<in>I. X i x) (erlang_density ((card I) - 1) l)" |
588 using erlang_distributed_setsum[OF assms] by simp |
588 using erlang_distributed_sum[OF assms] by simp |
589 |
589 |
590 lemma (in information_space) entropy_exponential: |
590 lemma (in information_space) entropy_exponential: |
591 assumes l[simp, arith]: "0 < l" |
591 assumes l[simp, arith]: "0 < l" |
592 assumes D: "distributed M lborel X (exponential_density l)" |
592 assumes D: "distributed M lborel X (exponential_density l)" |
593 shows "entropy b lborel X = log b (exp 1 / l)" |
593 shows "entropy b lborel X = log b (exp 1 / l)" |
1246 lemma conv_std_normal_density: |
1246 lemma conv_std_normal_density: |
1247 "(\<lambda>x. \<integral>\<^sup>+y. ennreal (std_normal_density (x - y) * std_normal_density y) \<partial>lborel) = |
1247 "(\<lambda>x. \<integral>\<^sup>+y. ennreal (std_normal_density (x - y) * std_normal_density y) \<partial>lborel) = |
1248 (normal_density 0 (sqrt 2))" |
1248 (normal_density 0 (sqrt 2))" |
1249 by (subst conv_normal_density_zero_mean) simp_all |
1249 by (subst conv_normal_density_zero_mean) simp_all |
1250 |
1250 |
1251 lemma (in prob_space) sum_indep_normal: |
1251 lemma (in prob_space) add_indep_normal: |
1252 assumes indep: "indep_var borel X borel Y" |
1252 assumes indep: "indep_var borel X borel Y" |
1253 assumes pos_var[arith]: "0 < \<sigma>" "0 < \<tau>" |
1253 assumes pos_var[arith]: "0 < \<sigma>" "0 < \<tau>" |
1254 assumes normalX[simp]: "distributed M lborel X (normal_density \<mu> \<sigma>)" |
1254 assumes normalX[simp]: "distributed M lborel X (normal_density \<mu> \<sigma>)" |
1255 assumes normalY[simp]: "distributed M lborel Y (normal_density \<nu> \<tau>)" |
1255 assumes normalY[simp]: "distributed M lborel Y (normal_density \<nu> \<tau>)" |
1256 shows "distributed M lborel (\<lambda>x. X x + Y x) (normal_density (\<mu> + \<nu>) (sqrt (\<sigma>\<^sup>2 + \<tau>\<^sup>2)))" |
1256 shows "distributed M lborel (\<lambda>x. X x + Y x) (normal_density (\<mu> + \<nu>) (sqrt (\<sigma>\<^sup>2 + \<tau>\<^sup>2)))" |
1291 have "distributed M lborel (\<lambda>x. 0 + - 1 * Y x) (\<lambda>x. ennreal (normal_density (0 + - 1 * \<nu>) (\<bar>- 1\<bar> * \<tau>) x))" |
1291 have "distributed M lborel (\<lambda>x. 0 + - 1 * Y x) (\<lambda>x. ennreal (normal_density (0 + - 1 * \<nu>) (\<bar>- 1\<bar> * \<tau>) x))" |
1292 by(rule normal_density_affine, auto) |
1292 by(rule normal_density_affine, auto) |
1293 then have [simp]:"distributed M lborel (\<lambda>x. - Y x) (\<lambda>x. ennreal (normal_density (- \<nu>) \<tau> x))" by simp |
1293 then have [simp]:"distributed M lborel (\<lambda>x. - Y x) (\<lambda>x. ennreal (normal_density (- \<nu>) \<tau> x))" by simp |
1294 |
1294 |
1295 have "distributed M lborel (\<lambda>x. X x + (- Y x)) (normal_density (\<mu> + - \<nu>) (sqrt (\<sigma>\<^sup>2 + \<tau>\<^sup>2)))" |
1295 have "distributed M lborel (\<lambda>x. X x + (- Y x)) (normal_density (\<mu> + - \<nu>) (sqrt (\<sigma>\<^sup>2 + \<tau>\<^sup>2)))" |
1296 apply (rule sum_indep_normal) |
1296 apply (rule add_indep_normal) |
1297 apply (rule indep_var_compose[unfolded comp_def, of borel _ borel _ "\<lambda>x. x" _ "\<lambda>x. - x"]) |
1297 apply (rule indep_var_compose[unfolded comp_def, of borel _ borel _ "\<lambda>x. x" _ "\<lambda>x. - x"]) |
1298 apply simp_all |
1298 apply simp_all |
1299 done |
1299 done |
1300 then show ?thesis by simp |
1300 then show ?thesis by simp |
1301 qed |
1301 qed |
1302 |
1302 |
1303 lemma (in prob_space) setsum_indep_normal: |
1303 lemma (in prob_space) sum_indep_normal: |
1304 assumes "finite I" "I \<noteq> {}" "indep_vars (\<lambda>i. borel) X I" |
1304 assumes "finite I" "I \<noteq> {}" "indep_vars (\<lambda>i. borel) X I" |
1305 assumes "\<And>i. i \<in> I \<Longrightarrow> 0 < \<sigma> i" |
1305 assumes "\<And>i. i \<in> I \<Longrightarrow> 0 < \<sigma> i" |
1306 assumes normal: "\<And>i. i \<in> I \<Longrightarrow> distributed M lborel (X i) (normal_density (\<mu> i) (\<sigma> i))" |
1306 assumes normal: "\<And>i. i \<in> I \<Longrightarrow> distributed M lborel (X i) (normal_density (\<mu> i) (\<sigma> i))" |
1307 shows "distributed M lborel (\<lambda>x. \<Sum>i\<in>I. X i x) (normal_density (\<Sum>i\<in>I. \<mu> i) (sqrt (\<Sum>i\<in>I. (\<sigma> i)\<^sup>2)))" |
1307 shows "distributed M lborel (\<lambda>x. \<Sum>i\<in>I. X i x) (normal_density (\<Sum>i\<in>I. \<mu> i) (sqrt (\<Sum>i\<in>I. (\<sigma> i)\<^sup>2)))" |
1308 using assms |
1308 using assms |
1309 proof (induct I rule: finite_ne_induct) |
1309 proof (induct I rule: finite_ne_induct) |
1310 case (singleton i) then show ?case by (simp add : abs_of_pos) |
1310 case (singleton i) then show ?case by (simp add : abs_of_pos) |
1311 next |
1311 next |
1312 case (insert i I) |
1312 case (insert i I) |
1313 then have 1: "distributed M lborel (\<lambda>x. (X i x) + (\<Sum>i\<in>I. X i x)) |
1313 then have 1: "distributed M lborel (\<lambda>x. (X i x) + (\<Sum>i\<in>I. X i x)) |
1314 (normal_density (\<mu> i + setsum \<mu> I) (sqrt ((\<sigma> i)\<^sup>2 + (sqrt (\<Sum>i\<in>I. (\<sigma> i)\<^sup>2))\<^sup>2)))" |
1314 (normal_density (\<mu> i + sum \<mu> I) (sqrt ((\<sigma> i)\<^sup>2 + (sqrt (\<Sum>i\<in>I. (\<sigma> i)\<^sup>2))\<^sup>2)))" |
1315 apply (intro sum_indep_normal indep_vars_setsum insert real_sqrt_gt_zero) |
1315 apply (intro add_indep_normal indep_vars_sum insert real_sqrt_gt_zero) |
1316 apply (auto intro: indep_vars_subset intro!: setsum_pos) |
1316 apply (auto intro: indep_vars_subset intro!: sum_pos) |
1317 apply fastforce |
1317 apply fastforce |
1318 done |
1318 done |
1319 have 2: "(\<lambda>x. (X i x)+ (\<Sum>i\<in>I. X i x)) = (\<lambda>x. (\<Sum>j\<in>insert i I. X j x))" |
1319 have 2: "(\<lambda>x. (X i x)+ (\<Sum>i\<in>I. X i x)) = (\<lambda>x. (\<Sum>j\<in>insert i I. X j x))" |
1320 "\<mu> i + setsum \<mu> I = setsum \<mu> (insert i I)" |
1320 "\<mu> i + sum \<mu> I = sum \<mu> (insert i I)" |
1321 using insert by auto |
1321 using insert by auto |
1322 |
1322 |
1323 have 3: "(sqrt ((\<sigma> i)\<^sup>2 + (sqrt (\<Sum>i\<in>I. (\<sigma> i)\<^sup>2))\<^sup>2)) = (sqrt (\<Sum>i\<in>insert i I. (\<sigma> i)\<^sup>2))" |
1323 have 3: "(sqrt ((\<sigma> i)\<^sup>2 + (sqrt (\<Sum>i\<in>I. (\<sigma> i)\<^sup>2))\<^sup>2)) = (sqrt (\<Sum>i\<in>insert i I. (\<sigma> i)\<^sup>2))" |
1324 using insert by (simp add: setsum_nonneg) |
1324 using insert by (simp add: sum_nonneg) |
1325 |
1325 |
1326 show ?case using 1 2 3 by simp |
1326 show ?case using 1 2 3 by simp |
1327 qed |
1327 qed |
1328 |
1328 |
1329 lemma (in prob_space) standard_normal_distributed_expectation: |
1329 lemma (in prob_space) standard_normal_distributed_expectation: |