add lemma RN_deriv_vimage
authorhoelzl
Wed, 23 Feb 2011 11:40:17 +0100
changeset 41832 27cb9113b1a0
parent 41831 91a2b435dd7a
child 41833 563bea92b2c0
add lemma RN_deriv_vimage
src/HOL/Probability/Radon_Nikodym.thy
--- a/src/HOL/Probability/Radon_Nikodym.thy	Wed Feb 23 11:40:12 2011 +0100
+++ b/src/HOL/Probability/Radon_Nikodym.thy	Wed Feb 23 11:40:17 2011 +0100
@@ -74,7 +74,7 @@
 definition (in measure_space)
   "absolutely_continuous \<nu> = (\<forall>N\<in>null_sets. \<nu> N = (0 :: pextreal))"
 
-lemma (in sigma_finite_measure) absolutely_continuous_AE:
+lemma (in measure_space) absolutely_continuous_AE:
   assumes "measure_space M'" and [simp]: "sets M' = sets M" "space M' = space M"
     and "absolutely_continuous (measure M')" "AE x. P x"
   shows "measure_space.almost_everywhere M' P"
@@ -1113,6 +1113,76 @@
     unfolding eq[OF A, symmetric] RN_deriv(2)[OF \<nu> A, symmetric] ..
 qed
 
+lemma (in sigma_finite_measure) RN_deriv_vimage:
+  assumes T: "T \<in> measure_preserving M M'"
+    and T': "T' \<in> measure_preserving (M'\<lparr> measure := \<nu>' \<rparr>) (M\<lparr> measure := \<nu> \<rparr>)"
+    and inv: "\<And>x. x \<in> space M \<Longrightarrow> T' (T x) = x"
+  and \<nu>': "measure_space (M'\<lparr>measure := \<nu>'\<rparr>)" "measure_space.absolutely_continuous M' \<nu>'"
+  shows "AE x. RN_deriv M' \<nu>' (T x) = RN_deriv M \<nu> x"
+proof (rule RN_deriv_unique)
+  interpret \<nu>': measure_space "M'\<lparr>measure := \<nu>'\<rparr>" by fact
+  show "measure_space (M\<lparr> measure := \<nu>\<rparr>)"
+    by (rule \<nu>'.measure_space_vimage[OF _ T'], simp) default
+  interpret M': measure_space M'
+  proof (rule measure_space_vimage)
+    have "sigma_algebra (M'\<lparr> measure := \<nu>'\<rparr>)" by default
+    then show "sigma_algebra M'" by simp
+  qed fact
+  show "absolutely_continuous \<nu>" unfolding absolutely_continuous_def
+  proof safe
+    fix N assume N: "N \<in> sets M" and N_0: "\<mu> N = 0"
+    then have N': "T' -` N \<inter> space M' \<in> sets M'"
+      using T' by (auto simp: measurable_def measure_preserving_def)
+    have "T -` (T' -` N \<inter> space M') \<inter> space M = N"
+      using inv T N sets_into_space[OF N] by (auto simp: measurable_def measure_preserving_def)
+    then have "measure M' (T' -` N \<inter> space M') = 0"
+      using measure_preservingD[OF T N'] N_0 by auto
+    with \<nu>'(2) N' show "\<nu> N = 0" using measure_preservingD[OF T', of N] N
+      unfolding M'.absolutely_continuous_def measurable_def by auto
+  qed
+  interpret M': sigma_finite_measure M'
+  proof
+    from sigma_finite guess F .. note F = this
+    show "\<exists>A::nat \<Rightarrow> 'c set. range A \<subseteq> sets M' \<and> (\<Union>i. A i) = space M' \<and> (\<forall>i. M'.\<mu> (A i) \<noteq> \<omega>)"
+    proof (intro exI conjI allI)
+      show *: "range (\<lambda>i. T' -` F i \<inter> space M') \<subseteq> sets M'"
+        using F T' by (auto simp: measurable_def measure_preserving_def)
+      show "(\<Union>i. T' -` F i \<inter> space M') = space M'"
+        using F T' by (force simp: measurable_def measure_preserving_def)
+      fix i
+      have "T' -` F i \<inter> space M' \<in> sets M'" using * by auto
+      note measure_preservingD[OF T this, symmetric]
+      moreover
+      have Fi: "F i \<in> sets M" using F by auto
+      then have "T -` (T' -` F i \<inter> space M') \<inter> space M = F i"
+        using T inv sets_into_space[OF Fi]
+        by (auto simp: measurable_def measure_preserving_def)
+      ultimately show "measure M' (T' -` F i \<inter> space M') \<noteq> \<omega>"
+        using F by simp
+    qed
+  qed
+  have "(RN_deriv M' \<nu>') \<circ> T \<in> borel_measurable M"
+    by (intro measurable_comp[where b=M'] M'.RN_deriv(1) measure_preservingD2[OF T]) fact+
+  then show "(\<lambda>x. RN_deriv M' \<nu>' (T x)) \<in> borel_measurable M"
+    by (simp add: comp_def)
+  fix A let ?A = "T' -` A \<inter> space M'"
+  assume A: "A \<in> sets M"
+  then have A': "?A \<in> sets M'" using T' unfolding measurable_def measure_preserving_def
+    by auto
+  from A have "\<nu> A = \<nu>' ?A" using T'[THEN measure_preservingD] by simp
+  also have "\<dots> = \<integral>\<^isup>+ x. RN_deriv M' \<nu>' x * indicator ?A x \<partial>M'"
+    using A' by (rule M'.RN_deriv(2)[OF \<nu>'])
+  also have "\<dots> = \<integral>\<^isup>+ x. RN_deriv M' \<nu>' (T x) * indicator ?A (T x) \<partial>M"
+  proof (rule positive_integral_vimage)
+    show "sigma_algebra M'" by default
+    show "(\<lambda>x. RN_deriv M' \<nu>' x * indicator (T' -` A \<inter> space M') x) \<in> borel_measurable M'"
+      by (auto intro!: A' M'.RN_deriv(1)[OF \<nu>'])
+  qed fact
+  also have "\<dots> = \<integral>\<^isup>+ x. RN_deriv M' \<nu>' (T x) * indicator A x \<partial>M"
+    using T inv by (auto intro!: positive_integral_cong simp: measure_preserving_def measurable_def indicator_def)
+  finally show "\<nu> A = \<integral>\<^isup>+ x. RN_deriv M' \<nu>' (T x) * indicator A x \<partial>M" .
+qed
+
 lemma (in sigma_finite_measure) RN_deriv_finite:
   assumes sfm: "sigma_finite_measure (M\<lparr>measure := \<nu>\<rparr>)" and ac: "absolutely_continuous \<nu>"
   shows "AE x. RN_deriv M \<nu> x \<noteq> \<omega>"