474 unfolding conditional_entropy_eq_ce_with_hypothesis[OF |
474 unfolding conditional_entropy_eq_ce_with_hypothesis[OF |
475 simple_function_finite simple_function_finite] using * by simp |
475 simple_function_finite simple_function_finite] using * by simp |
476 also have "\<dots> = -(\<Sum>obs\<in>t`OB`msgs. \<P>(t\<circ>OB) {obs} * ?Ht obs)" |
476 also have "\<dots> = -(\<Sum>obs\<in>t`OB`msgs. \<P>(t\<circ>OB) {obs} * ?Ht obs)" |
477 apply (subst SIGMA_image_vimage[symmetric, of "OB`msgs" t]) |
477 apply (subst SIGMA_image_vimage[symmetric, of "OB`msgs" t]) |
478 apply (subst setsum_reindex) |
478 apply (subst setsum_reindex) |
479 apply (fastsimp intro!: inj_onI) |
479 apply (fastforce intro!: inj_onI) |
480 apply simp |
480 apply simp |
481 apply (subst setsum_Sigma[symmetric, unfolded split_def]) |
481 apply (subst setsum_Sigma[symmetric, unfolded split_def]) |
482 using finite_space apply fastsimp |
482 using finite_space apply fastforce |
483 using finite_space apply fastsimp |
483 using finite_space apply fastforce |
484 apply (safe intro!: setsum_cong) |
484 apply (safe intro!: setsum_cong) |
485 using P_t_sum_P_O |
485 using P_t_sum_P_O |
486 by (simp add: setsum_divide_distrib[symmetric] field_simps ** |
486 by (simp add: setsum_divide_distrib[symmetric] field_simps ** |
487 setsum_right_distrib[symmetric] setsum_left_distrib[symmetric]) |
487 setsum_right_distrib[symmetric] setsum_left_distrib[symmetric]) |
488 also have "\<dots> = \<H>(fst | t\<circ>OB)" |
488 also have "\<dots> = \<H>(fst | t\<circ>OB)" |