diff -r b4552595b04e -r f6bb31879698 src/HOL/Analysis/Set_Integral.thy --- a/src/HOL/Analysis/Set_Integral.thy Tue Feb 16 17:12:02 2021 +0000 +++ b/src/HOL/Analysis/Set_Integral.thy Fri Feb 19 13:42:12 2021 +0100 @@ -1079,4 +1079,87 @@ qed qed + + +theorem integral_Markov_inequality': + fixes u :: "'a \ real" + assumes [measurable]: "set_integrable M A u" and "A \ sets M" + assumes "AE x in M. x \ A \ u x \ 0" and "0 < (c::real)" + shows "emeasure M {x\A. u x \ c} \ (1/c::real) * (\x\A. u x \M)" +proof - + have "(\x. u x * indicator A x) \ borel_measurable M" + using assms by (auto simp: set_integrable_def mult_ac) + hence "(\x. ennreal (u x * indicator A x)) \ borel_measurable M" + by measurable + also have "(\x. ennreal (u x * indicator A x)) = (\x. ennreal (u x) * indicator A x)" + by (intro ext) (auto simp: indicator_def) + finally have meas: "\ \ borel_measurable M" . + from assms(3) have AE: "AE x in M. 0 \ u x * indicator A x" + by eventually_elim (auto simp: indicator_def) + have nonneg: "set_lebesgue_integral M A u \ 0" + unfolding set_lebesgue_integral_def + by (intro Bochner_Integration.integral_nonneg_AE eventually_mono[OF AE]) (auto simp: mult_ac) + + have A: "A \ space M" + using \A \ sets M\ by (simp add: sets.sets_into_space) + have "{x \ A. u x \ c} = {x \ A. ennreal(1/c) * u x \ 1}" + using \c>0\ A by (auto simp: ennreal_mult'[symmetric]) + then have "emeasure M {x \ A. u x \ c} = emeasure M ({x \ A. ennreal(1/c) * u x \ 1})" + by simp + also have "... \ ennreal(1/c) * (\\<^sup>+ x. ennreal(u x) * indicator A x \M)" + by (intro nn_integral_Markov_inequality meas assms) + also have "(\\<^sup>+ x. ennreal(u x) * indicator A x \M) = ennreal (set_lebesgue_integral M A u)" + unfolding set_lebesgue_integral_def nn_integral_set_ennreal using assms AE + by (subst nn_integral_eq_integral) (simp_all add: mult_ac set_integrable_def) + finally show ?thesis + using \c > 0\ nonneg by (subst ennreal_mult) auto +qed + +theorem integral_Markov_inequality'_measure: + assumes [measurable]: "set_integrable M A u" and "A \ sets M" + and "AE x in M. x \ A \ 0 \ u x" "0 < (c::real)" + shows "measure M {x\A. u x \ c} \ (\x\A. u x \M) / c" +proof - + have nonneg: "set_lebesgue_integral M A u \ 0" + unfolding set_lebesgue_integral_def + by (intro Bochner_Integration.integral_nonneg_AE eventually_mono[OF assms(3)]) + (auto simp: mult_ac) + have le: "emeasure M {x\A. u x \ c} \ ennreal ((1/c) * (\x\A. u x \M))" + by (rule integral_Markov_inequality') (use assms in auto) + also have "\ < top" + by auto + finally have "ennreal (measure M {x\A. u x \ c}) = emeasure M {x\A. u x \ c}" + by (intro emeasure_eq_ennreal_measure [symmetric]) auto + also note le + finally show ?thesis using nonneg + by (subst (asm) ennreal_le_iff) + (auto intro!: divide_nonneg_pos Bochner_Integration.integral_nonneg_AE assms) +qed + +theorem%important (in finite_measure) Chernoff_ineq_ge: + assumes s: "s > 0" + assumes integrable: "set_integrable M A (\x. exp (s * f x))" and "A \ sets M" + shows "measure M {x\A. f x \ a} \ exp (-s * a) * (\x\A. exp (s * f x) \M)" +proof - + have "{x\A. f x \ a} = {x\A. exp (s * f x) \ exp (s * a)}" + using s by auto + also have "measure M \ \ set_lebesgue_integral M A (\x. exp (s * f x)) / exp (s * a)" + by (intro integral_Markov_inequality'_measure assms) auto + finally show ?thesis + by (simp add: exp_minus field_simps) +qed + +theorem%important (in finite_measure) Chernoff_ineq_le: + assumes s: "s > 0" + assumes integrable: "set_integrable M A (\x. exp (-s * f x))" and "A \ sets M" + shows "measure M {x\A. f x \ a} \ exp (s * a) * (\x\A. exp (-s * f x) \M)" +proof - + have "{x\A. f x \ a} = {x\A. exp (-s * f x) \ exp (-s * a)}" + using s by auto + also have "measure M \ \ set_lebesgue_integral M A (\x. exp (-s * f x)) / exp (-s * a)" + by (intro integral_Markov_inequality'_measure assms) auto + finally show ?thesis + by (simp add: exp_minus field_simps) +qed + end