# HG changeset patch # User hoelzl # Date 1458126482 -3600 # Node ID 2d73385aa5f35b7a171756c38664a31517163678 # Parent 59ceeb6f3079528fe4f4371d19f3ef18e199cb79 add measurability rules for ennreal diff -r 59ceeb6f3079 -r 2d73385aa5f3 src/HOL/Probability/Borel_Space.thy --- a/src/HOL/Probability/Borel_Space.thy Wed Mar 16 11:49:56 2016 +0100 +++ b/src/HOL/Probability/Borel_Space.thy Wed Mar 16 12:08:02 2016 +0100 @@ -1678,6 +1678,58 @@ shows "(\x. (\i. f i x)) \ borel_measurable M" unfolding suminf_def sums_def[abs_def] lim_def[symmetric] by simp +subsection "Borel space on the extended non-negative reals" + +text \ @{type ennreal} is a topological monoid, so no rules for plus are required, also all order + statements are usually done on type classes. \ + +lemma measurable_enn2ereal[measurable]: "enn2ereal \ borel \\<^sub>M borel" + by (intro borel_measurable_continuous_on1 continuous_on_enn2ereal) + +lemma measurable_e2ennreal[measurable]: "e2ennreal \ borel \\<^sub>M borel" + by (intro borel_measurable_continuous_on1 continuous_on_e2ennreal) + +definition [simp]: "is_borel f M \ f \ borel_measurable M" + +lemma is_borel_transfer[transfer_rule]: "rel_fun (rel_fun op = pcr_ennreal) op = is_borel is_borel" + unfolding is_borel_def[abs_def] +proof (safe intro!: rel_funI ext dest!: rel_fun_eq_pcr_ennreal[THEN iffD1]) + fix f and M :: "'a measure" + show "f \ borel_measurable M" if f: "enn2ereal \ f \ borel_measurable M" + using measurable_compose[OF f measurable_e2ennreal] by simp +qed simp + +lemma measurable_ennreal[measurable]: "ennreal \ borel \\<^sub>M borel" + unfolding is_borel_def[symmetric] by transfer simp + +lemma borel_measurable_times_ennreal[measurable (raw)]: + fixes f g :: "'a \ ennreal" + shows "f \ M \\<^sub>M borel \ g \ M \\<^sub>M borel \ (\x. f x * g x) \ M \\<^sub>M borel" + unfolding is_borel_def[symmetric] by transfer simp + +lemma borel_measurable_inverse_ennreal[measurable (raw)]: + fixes f :: "'a \ ennreal" + shows "f \ M \\<^sub>M borel \ (\x. inverse (f x)) \ M \\<^sub>M borel" + unfolding is_borel_def[symmetric] by transfer simp + +lemma borel_measurable_divide_ennreal[measurable (raw)]: + fixes f :: "'a \ ennreal" + shows "f \ M \\<^sub>M borel \ g \ M \\<^sub>M borel \ (\x. f x / g x) \ M \\<^sub>M borel" + unfolding divide_ennreal_def by simp + +lemma borel_measurable_minus_ennreal[measurable (raw)]: + fixes f :: "'a \ ennreal" + shows "f \ M \\<^sub>M borel \ g \ M \\<^sub>M borel \ (\x. f x - g x) \ M \\<^sub>M borel" + unfolding is_borel_def[symmetric] by transfer simp + +lemma borel_measurable_setprod_ennreal[measurable (raw)]: + fixes f :: "'c \ 'a \ ennreal" + assumes "\i. i \ S \ f i \ borel_measurable M" + shows "(\x. \i\S. f i x) \ borel_measurable M" + using assms by (induction S rule: infinite_finite_induct) auto + +hide_const (open) is_borel + subsection \LIMSEQ is borel measurable\ lemma borel_measurable_LIMSEQ_real: