src/HOL/Probability/Radon_Nikodym.thy
changeset 56993 e5366291d6aa
parent 56537 01caba82e1d2
child 56994 8d5e5ec1cac3
equal deleted inserted replaced
56992:d0e5225601d3 56993:e5366291d6aa
     3 *)
     3 *)
     4 
     4 
     5 header {*Radon-Nikod{\'y}m derivative*}
     5 header {*Radon-Nikod{\'y}m derivative*}
     6 
     6 
     7 theory Radon_Nikodym
     7 theory Radon_Nikodym
     8 imports Lebesgue_Integration
     8 imports Bochner_Integration
     9 begin
     9 begin
    10 
    10 
    11 definition "diff_measure M N =
    11 definition "diff_measure M N =
    12   measure_of (space M) (sets M) (\<lambda>A. emeasure M A - emeasure N A)"
    12   measure_of (space M) (sets M) (\<lambda>A. emeasure M A - emeasure N A)"
    13 
    13 
  1060   apply (auto simp: max_def intro!: measurable_If)
  1060   apply (auto simp: max_def intro!: measurable_If)
  1061   done
  1061   done
  1062 
  1062 
  1063 section "Radon-Nikodym derivative"
  1063 section "Radon-Nikodym derivative"
  1064 
  1064 
  1065 definition
  1065 definition RN_deriv :: "'a measure \<Rightarrow> 'a measure \<Rightarrow> 'a \<Rightarrow> ereal" where
  1066   "RN_deriv M N \<equiv> SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N"
  1066   "RN_deriv M N =
  1067 
  1067     (if \<exists>f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N
  1068 lemma
  1068        then SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N
       
  1069        else (\<lambda>_. 0))"
       
  1070 
       
  1071 lemma RN_derivI: 
       
  1072   assumes "f \<in> borel_measurable M" "\<And>x. 0 \<le> f x" "density M f = N"
       
  1073   shows "density M (RN_deriv M N) = N"
       
  1074 proof -
       
  1075   have "\<exists>f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N"
       
  1076     using assms by auto
       
  1077   moreover then have "density M (SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N) = N"
       
  1078     by (rule someI2_ex) auto
       
  1079   ultimately show ?thesis
       
  1080     by (auto simp: RN_deriv_def)
       
  1081 qed
       
  1082 
       
  1083 lemma 
       
  1084   shows borel_measurable_RN_deriv[measurable]: "RN_deriv M N \<in> borel_measurable M" (is ?m)
       
  1085     and RN_deriv_nonneg: "0 \<le> RN_deriv M N x" (is ?nn)
       
  1086 proof -
       
  1087   { assume ex: "\<exists>f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N"
       
  1088     have 1: "(SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N) \<in> borel_measurable M"
       
  1089       using ex by (rule someI2_ex) auto
       
  1090     moreover
       
  1091     have 2: "0 \<le> (SOME f. f \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> f x) \<and> density M f = N) x"
       
  1092       using ex by (rule someI2_ex) auto
       
  1093     note 1 2 }
       
  1094   from this show ?m ?nn
       
  1095     by (auto simp: RN_deriv_def)
       
  1096 qed
       
  1097 
       
  1098 lemma density_RN_deriv_density:
  1069   assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x"
  1099   assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x"
  1070   shows borel_measurable_RN_deriv_density: "RN_deriv M (density M f) \<in> borel_measurable M" (is ?borel)
  1100   shows "density M (RN_deriv M (density M f)) = density M f"
  1071     and density_RN_deriv_density: "density M (RN_deriv M (density M f)) = density M f" (is ?density)
  1101 proof (rule RN_derivI)
  1072     and RN_deriv_density_nonneg: "0 \<le> RN_deriv M (density M f) x" (is ?pos)
  1102   show "(\<lambda>x. max 0 (f x)) \<in> borel_measurable M" "\<And>x. 0 \<le> max 0 (f x)"
  1073 proof -
  1103     using f by auto
  1074   let ?f = "\<lambda>x. max 0 (f x)"
  1104   show "density M (\<lambda>x. max 0 (f x)) = density M f"
  1075   let ?P = "\<lambda>g. g \<in> borel_measurable M \<and> (\<forall>x. 0 \<le> g x) \<and> density M g = density M f"
  1105     using f by (intro density_cong) (auto simp: max_def)
  1076   from f have "?P ?f" using f by (auto intro!: density_cong simp: split: split_max)
  1106 qed
  1077   then have "?P (RN_deriv M (density M f))"
  1107 
  1078     unfolding RN_deriv_def by (rule someI[where P="?P"])
  1108 lemma (in sigma_finite_measure) density_RN_deriv:
  1079   then show ?borel ?density ?pos by auto
  1109   "absolutely_continuous M N \<Longrightarrow> sets N = sets M \<Longrightarrow> density M (RN_deriv M N) = N"
  1080 qed
  1110   by (metis RN_derivI Radon_Nikodym)
  1081 
       
  1082 lemma (in sigma_finite_measure) RN_deriv:
       
  1083   assumes "absolutely_continuous M N" "sets N = sets M"
       
  1084   shows borel_measurable_RN_deriv[measurable]: "RN_deriv M N \<in> borel_measurable M" (is ?borel)
       
  1085     and density_RN_deriv: "density M (RN_deriv M N) = N" (is ?density)
       
  1086     and RN_deriv_nonneg: "0 \<le> RN_deriv M N x" (is ?pos)
       
  1087 proof -
       
  1088   note Ex = Radon_Nikodym[OF assms, unfolded Bex_def]
       
  1089   from Ex show ?borel unfolding RN_deriv_def by (rule someI2_ex) simp
       
  1090   from Ex show ?density unfolding RN_deriv_def by (rule someI2_ex) simp
       
  1091   from Ex show ?pos unfolding RN_deriv_def by (rule someI2_ex) simp
       
  1092 qed
       
  1093 
  1111 
  1094 lemma (in sigma_finite_measure) RN_deriv_positive_integral:
  1112 lemma (in sigma_finite_measure) RN_deriv_positive_integral:
  1095   assumes N: "absolutely_continuous M N" "sets N = sets M"
  1113   assumes N: "absolutely_continuous M N" "sets N = sets M"
  1096     and f: "f \<in> borel_measurable M"
  1114     and f: "f \<in> borel_measurable M"
  1097   shows "integral\<^sup>P N f = (\<integral>\<^sup>+x. RN_deriv M N x * f x \<partial>M)"
  1115   shows "integral\<^sup>P N f = (\<integral>\<^sup>+x. RN_deriv M N x * f x \<partial>M)"
  1098 proof -
  1116 proof -
  1099   have "integral\<^sup>P N f = integral\<^sup>P (density M (RN_deriv M N)) f"
  1117   have "integral\<^sup>P N f = integral\<^sup>P (density M (RN_deriv M N)) f"
  1100     using N by (simp add: density_RN_deriv)
  1118     using N by (simp add: density_RN_deriv)
  1101   also have "\<dots> = (\<integral>\<^sup>+x. RN_deriv M N x * f x \<partial>M)"
  1119   also have "\<dots> = (\<integral>\<^sup>+x. RN_deriv M N x * f x \<partial>M)"
  1102     using RN_deriv(1,3)[OF N] f by (simp add: positive_integral_density)
  1120     using f by (simp add: positive_integral_density RN_deriv_nonneg)
  1103   finally show ?thesis by simp
  1121   finally show ?thesis by simp
  1104 qed
  1122 qed
  1105 
  1123 
  1106 lemma null_setsD_AE: "N \<in> null_sets M \<Longrightarrow> AE x in M. x \<notin> N"
  1124 lemma null_setsD_AE: "N \<in> null_sets M \<Longrightarrow> AE x in M. x \<notin> N"
  1107   using AE_iff_null_sets[of N M] by auto
  1125   using AE_iff_null_sets[of N M] by auto
  1109 lemma (in sigma_finite_measure) RN_deriv_unique:
  1127 lemma (in sigma_finite_measure) RN_deriv_unique:
  1110   assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x"
  1128   assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x"
  1111   and eq: "density M f = N"
  1129   and eq: "density M f = N"
  1112   shows "AE x in M. f x = RN_deriv M N x"
  1130   shows "AE x in M. f x = RN_deriv M N x"
  1113   unfolding eq[symmetric]
  1131   unfolding eq[symmetric]
  1114   by (intro density_unique_iff[THEN iffD1] f borel_measurable_RN_deriv_density
  1132   by (intro density_unique_iff[THEN iffD1] f borel_measurable_RN_deriv
  1115             RN_deriv_density_nonneg[THEN AE_I2] density_RN_deriv_density[symmetric])
  1133             RN_deriv_nonneg[THEN AE_I2] density_RN_deriv_density[symmetric])
  1116 
  1134 
  1117 lemma RN_deriv_unique_sigma_finite:
  1135 lemma RN_deriv_unique_sigma_finite:
  1118   assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x"
  1136   assumes f: "f \<in> borel_measurable M" "AE x in M. 0 \<le> f x"
  1119   and eq: "density M f = N" and fin: "sigma_finite_measure N"
  1137   and eq: "density M f = N" and fin: "sigma_finite_measure N"
  1120   shows "AE x in M. f x = RN_deriv M N x"
  1138   shows "AE x in M. f x = RN_deriv M N x"
  1121   using fin unfolding eq[symmetric]
  1139   using fin unfolding eq[symmetric]
  1122   by (intro sigma_finite_density_unique[THEN iffD1] f borel_measurable_RN_deriv_density
  1140   by (intro sigma_finite_density_unique[THEN iffD1] f borel_measurable_RN_deriv
  1123             RN_deriv_density_nonneg[THEN AE_I2] density_RN_deriv_density[symmetric])
  1141             RN_deriv_nonneg[THEN AE_I2] density_RN_deriv_density[symmetric])
  1124 
  1142 
  1125 lemma (in sigma_finite_measure) RN_deriv_distr:
  1143 lemma (in sigma_finite_measure) RN_deriv_distr:
  1126   fixes T :: "'a \<Rightarrow> 'b"
  1144   fixes T :: "'a \<Rightarrow> 'b"
  1127   assumes T: "T \<in> measurable M M'" and T': "T' \<in> measurable M' M"
  1145   assumes T: "T \<in> measurable M M'" and T': "T' \<in> measurable M' M"
  1128     and inv: "\<forall>x\<in>space M. T' (T x) = x"
  1146     and inv: "\<forall>x\<in>space M. T' (T x) = x"
  1163   qed
  1181   qed
  1164   have "(RN_deriv ?M' ?N') \<circ> T \<in> borel_measurable M"
  1182   have "(RN_deriv ?M' ?N') \<circ> T \<in> borel_measurable M"
  1165     using T ac by measurable
  1183     using T ac by measurable
  1166   then show "(\<lambda>x. RN_deriv ?M' ?N' (T x)) \<in> borel_measurable M"
  1184   then show "(\<lambda>x. RN_deriv ?M' ?N' (T x)) \<in> borel_measurable M"
  1167     by (simp add: comp_def)
  1185     by (simp add: comp_def)
  1168   show "AE x in M. 0 \<le> RN_deriv ?M' ?N' (T x)" using M'.RN_deriv_nonneg[OF ac] by auto
  1186   show "AE x in M. 0 \<le> RN_deriv ?M' ?N' (T x)" by (auto intro: RN_deriv_nonneg)
  1169 
  1187 
  1170   have "N = distr N M (T' \<circ> T)"
  1188   have "N = distr N M (T' \<circ> T)"
  1171     by (subst measure_of_of_measure[of N, symmetric])
  1189     by (subst measure_of_of_measure[of N, symmetric])
  1172        (auto simp add: distr_def sets.sigma_sets_eq intro!: measure_of_eq sets.space_closed)
  1190        (auto simp add: distr_def sets.sigma_sets_eq intro!: measure_of_eq sets.space_closed)
  1173   also have "\<dots> = distr (distr N M' T) M T'"
  1191   also have "\<dots> = distr (distr N M' T) M T'"
  1174     using T T' by (simp add: distr_distr)
  1192     using T T' by (simp add: distr_distr)
  1175   also have "\<dots> = distr (density (distr M M' T) (RN_deriv (distr M M' T) (distr N M' T))) M T'"
  1193   also have "\<dots> = distr (density (distr M M' T) (RN_deriv (distr M M' T) (distr N M' T))) M T'"
  1176     using ac by (simp add: M'.density_RN_deriv)
  1194     using ac by (simp add: M'.density_RN_deriv)
  1177   also have "\<dots> = density M (RN_deriv (distr M M' T) (distr N M' T) \<circ> T)"
  1195   also have "\<dots> = density M (RN_deriv (distr M M' T) (distr N M' T) \<circ> T)"
  1178     using M'.borel_measurable_RN_deriv[OF ac] by (simp add: distr_density_distr[OF T T', OF inv])
  1196     by (simp add: distr_density_distr[OF T T', OF inv])
  1179   finally show "density M (\<lambda>x. RN_deriv (distr M M' T) (distr N M' T) (T x)) = N"
  1197   finally show "density M (\<lambda>x. RN_deriv (distr M M' T) (distr N M' T) (T x)) = N"
  1180     by (simp add: comp_def)
  1198     by (simp add: comp_def)
  1181 qed
  1199 qed
  1182 
  1200 
  1183 lemma (in sigma_finite_measure) RN_deriv_finite:
  1201 lemma (in sigma_finite_measure) RN_deriv_finite:
  1184   assumes N: "sigma_finite_measure N" and ac: "absolutely_continuous M N" "sets N = sets M"
  1202   assumes N: "sigma_finite_measure N" and ac: "absolutely_continuous M N" "sets N = sets M"
  1185   shows "AE x in M. RN_deriv M N x \<noteq> \<infinity>"
  1203   shows "AE x in M. RN_deriv M N x \<noteq> \<infinity>"
  1186 proof -
  1204 proof -
  1187   interpret N: sigma_finite_measure N by fact
  1205   interpret N: sigma_finite_measure N by fact
  1188   from N show ?thesis
  1206   from N show ?thesis
  1189     using sigma_finite_iff_density_finite[OF RN_deriv(1)[OF ac]] RN_deriv(2,3)[OF ac] by simp
  1207     using sigma_finite_iff_density_finite[OF borel_measurable_RN_deriv, of N]
       
  1208       density_RN_deriv[OF ac]
       
  1209     by (simp add: RN_deriv_nonneg)
  1190 qed
  1210 qed
  1191 
  1211 
  1192 lemma (in sigma_finite_measure)
  1212 lemma (in sigma_finite_measure)
  1193   assumes N: "sigma_finite_measure N" and ac: "absolutely_continuous M N" "sets N = sets M"
  1213   assumes N: "sigma_finite_measure N" and ac: "absolutely_continuous M N" "sets N = sets M"
  1194     and f: "f \<in> borel_measurable M"
  1214     and f: "f \<in> borel_measurable M"
  1195   shows RN_deriv_integrable: "integrable N f \<longleftrightarrow>
  1215   shows RN_deriv_integrable: "integrable N f \<longleftrightarrow>
  1196       integrable M (\<lambda>x. real (RN_deriv M N x) * f x)" (is ?integrable)
  1216       integrable M (\<lambda>x. real (RN_deriv M N x) * f x)" (is ?integrable)
  1197     and RN_deriv_integral: "integral\<^sup>L N f =
  1217     and RN_deriv_integral: "integral\<^sup>L N f = (\<integral>x. real (RN_deriv M N x) * f x \<partial>M)" (is ?integral)
  1198       (\<integral>x. real (RN_deriv M N x) * f x \<partial>M)" (is ?integral)
       
  1199 proof -
  1218 proof -
  1200   note ac(2)[simp] and sets_eq_imp_space_eq[OF ac(2), simp]
  1219   note ac(2)[simp] and sets_eq_imp_space_eq[OF ac(2), simp]
  1201   interpret N: sigma_finite_measure N by fact
  1220   interpret N: sigma_finite_measure N by fact
  1202   have minus_cong: "\<And>A B A' B'::ereal. A = A' \<Longrightarrow> B = B' \<Longrightarrow> real A - real B = real A' - real B'" by simp
  1221 
  1203   have f': "(\<lambda>x. - f x) \<in> borel_measurable M" using f by auto
  1222   have eq: "density M (RN_deriv M N) = density M (\<lambda>x. real (RN_deriv M N x))"
  1204   have Nf: "f \<in> borel_measurable N" using f by (simp add: measurable_def)
  1223   proof (rule density_cong)
  1205   { fix f :: "'a \<Rightarrow> real"
  1224     from RN_deriv_finite[OF assms(1,2,3)]
  1206     { fix x assume *: "RN_deriv M N x \<noteq> \<infinity>"
  1225     show "AE x in M. RN_deriv M N x = ereal (real (RN_deriv M N x))"
  1207       have "ereal (real (RN_deriv M N x)) * ereal (f x) = ereal (real (RN_deriv M N x) * f x)"
  1226       by eventually_elim (insert RN_deriv_nonneg[of M N], auto simp: ereal_real)
  1208         by (simp add: mult_le_0_iff)
  1227   qed (insert ac, auto)
  1209       then have "RN_deriv M N x * ereal (f x) = ereal (real (RN_deriv M N x) * f x)"
  1228 
  1210         using RN_deriv(3)[OF ac] * by (auto simp add: ereal_real split: split_if_asm) }
  1229   show ?integrable
  1211     then have "(\<integral>\<^sup>+x. ereal (real (RN_deriv M N x) * f x) \<partial>M) = (\<integral>\<^sup>+x. RN_deriv M N x * ereal (f x) \<partial>M)"
  1230     apply (subst density_RN_deriv[OF ac, symmetric])
  1212               "(\<integral>\<^sup>+x. ereal (- (real (RN_deriv M N x) * f x)) \<partial>M) = (\<integral>\<^sup>+x. RN_deriv M N x * ereal (- f x) \<partial>M)"
  1231     unfolding eq
  1213       using RN_deriv_finite[OF N ac] unfolding ereal_mult_minus_right uminus_ereal.simps(1)[symmetric]
  1232     apply (intro integrable_real_density f AE_I2 real_of_ereal_pos RN_deriv_nonneg)
  1214       by (auto intro!: positive_integral_cong_AE) }
  1233     apply (insert ac, auto)
  1215   note * = this
  1234     done
  1216   show ?integral ?integrable
  1235 
  1217     unfolding lebesgue_integral_def integrable_def *
  1236   show ?integral
  1218     using Nf f RN_deriv(1)[OF ac]
  1237     apply (subst density_RN_deriv[OF ac, symmetric])
  1219     by (auto simp: RN_deriv_positive_integral[OF ac])
  1238     unfolding eq
       
  1239     apply (intro integral_real_density f AE_I2 real_of_ereal_pos RN_deriv_nonneg)
       
  1240     apply (insert ac, auto)
       
  1241     done
  1220 qed
  1242 qed
  1221 
  1243 
  1222 lemma (in sigma_finite_measure) real_RN_deriv:
  1244 lemma (in sigma_finite_measure) real_RN_deriv:
  1223   assumes "finite_measure N"
  1245   assumes "finite_measure N"
  1224   assumes ac: "absolutely_continuous M N" "sets N = sets M"
  1246   assumes ac: "absolutely_continuous M N" "sets N = sets M"
  1227     and "AE x in N. 0 < D x"
  1249     and "AE x in N. 0 < D x"
  1228     and "\<And>x. 0 \<le> D x"
  1250     and "\<And>x. 0 \<le> D x"
  1229 proof
  1251 proof
  1230   interpret N: finite_measure N by fact
  1252   interpret N: finite_measure N by fact
  1231   
  1253   
  1232   note RN = RN_deriv[OF ac]
  1254   note RN = borel_measurable_RN_deriv density_RN_deriv[OF ac] RN_deriv_nonneg[of M N]
  1233 
  1255 
  1234   let ?RN = "\<lambda>t. {x \<in> space M. RN_deriv M N x = t}"
  1256   let ?RN = "\<lambda>t. {x \<in> space M. RN_deriv M N x = t}"
  1235 
  1257 
  1236   show "(\<lambda>x. real (RN_deriv M N x)) \<in> borel_measurable M"
  1258   show "(\<lambda>x. real (RN_deriv M N x)) \<in> borel_measurable M"
  1237     using RN by auto
  1259     using RN by auto
  1275 lemma (in sigma_finite_measure) RN_deriv_singleton:
  1297 lemma (in sigma_finite_measure) RN_deriv_singleton:
  1276   assumes ac: "absolutely_continuous M N" "sets N = sets M"
  1298   assumes ac: "absolutely_continuous M N" "sets N = sets M"
  1277   and x: "{x} \<in> sets M"
  1299   and x: "{x} \<in> sets M"
  1278   shows "N {x} = RN_deriv M N x * emeasure M {x}"
  1300   shows "N {x} = RN_deriv M N x * emeasure M {x}"
  1279 proof -
  1301 proof -
  1280   note deriv = RN_deriv[OF ac]
  1302   from `{x} \<in> sets M`
  1281   from deriv(1,3) `{x} \<in> sets M`
       
  1282   have "density M (RN_deriv M N) {x} = (\<integral>\<^sup>+w. RN_deriv M N x * indicator {x} w \<partial>M)"
  1303   have "density M (RN_deriv M N) {x} = (\<integral>\<^sup>+w. RN_deriv M N x * indicator {x} w \<partial>M)"
  1283     by (auto simp: indicator_def emeasure_density intro!: positive_integral_cong)
  1304     by (auto simp: indicator_def emeasure_density intro!: positive_integral_cong)
  1284   with x deriv show ?thesis
  1305   with x density_RN_deriv[OF ac] RN_deriv_nonneg[of M N] show ?thesis
  1285     by (auto simp: positive_integral_cmult_indicator)
  1306     by (auto simp: positive_integral_cmult_indicator)
  1286 qed
  1307 qed
  1287 
  1308 
  1288 end
  1309 end