src/HOL/Probability/Radon_Nikodym.thy
changeset 50244 de72bbe42190
parent 50021 d96a3f468203
child 51329 4a3c453f99a1
equal deleted inserted replaced
50243:0d97ef1d6de9 50244:de72bbe42190
   187     show ?thesis
   187     show ?thesis
   188     proof (safe intro!: bexI[of _ "space M - A n"])
   188     proof (safe intro!: bexI[of _ "space M - A n"])
   189       fix B assume "B \<in> sets M" "B \<subseteq> space M - A n"
   189       fix B assume "B \<in> sets M" "B \<subseteq> space M - A n"
   190       from B[OF this] show "-e < ?d B" .
   190       from B[OF this] show "-e < ?d B" .
   191     next
   191     next
   192       show "space M - A n \<in> sets M" by (rule compl_sets) fact
   192       show "space M - A n \<in> sets M" by (rule sets.compl_sets) fact
   193     next
   193     next
   194       show "?d (space M) \<le> ?d (space M - A n)"
   194       show "?d (space M) \<le> ?d (space M - A n)"
   195       proof (induct n)
   195       proof (induct n)
   196         fix n assume "?d (space M) \<le> ?d (space M - A n)"
   196         fix n assume "?d (space M) \<le> ?d (space M - A n)"
   197         also have "\<dots> \<le> ?d (space M - A (Suc n))"
   197         also have "\<dots> \<le> ?d (space M - A (Suc n))"
   198           using A_in_sets sets_into_space dA_mono[of n] finite_measure_compl M'.finite_measure_compl
   198           using A_in_sets sets.sets_into_space dA_mono[of n] finite_measure_compl M'.finite_measure_compl
   199           by (simp del: A_simps add: sets_eq sets_eq_imp_space_eq[OF sets_eq])
   199           by (simp del: A_simps add: sets_eq sets_eq_imp_space_eq[OF sets_eq])
   200         finally show "?d (space M) \<le> ?d (space M - A (Suc n))" .
   200         finally show "?d (space M) \<le> ?d (space M - A (Suc n))" .
   201       qed simp
   201       qed simp
   202     qed
   202     qed
   203   next
   203   next
   239     then have "finite_measure (density M (indicator S))" "0 < 1 / real (Suc n)"
   239     then have "finite_measure (density M (indicator S))" "0 < 1 / real (Suc n)"
   240          "finite_measure (density N (indicator S))" "sets (density N (indicator S)) = sets (density M (indicator S))"
   240          "finite_measure (density N (indicator S))" "sets (density N (indicator S)) = sets (density M (indicator S))"
   241       by (auto simp: finite_measure_restricted N.finite_measure_restricted sets_eq)
   241       by (auto simp: finite_measure_restricted N.finite_measure_restricted sets_eq)
   242     from finite_measure.Radon_Nikodym_aux_epsilon[OF this] guess X .. note X = this
   242     from finite_measure.Radon_Nikodym_aux_epsilon[OF this] guess X .. note X = this
   243     with S have "?P (S \<inter> X) S n"
   243     with S have "?P (S \<inter> X) S n"
   244       by (simp add: measure_restricted sets_eq Int) (metis inf_absorb2)
   244       by (simp add: measure_restricted sets_eq sets.Int) (metis inf_absorb2)
   245     hence "\<exists>A. ?P A S n" .. }
   245     hence "\<exists>A. ?P A S n" .. }
   246   note Ex_P = this
   246   note Ex_P = this
   247   def A \<equiv> "nat_rec (space M) (\<lambda>n A. SOME B. ?P B A n)"
   247   def A \<equiv> "nat_rec (space M) (\<lambda>n A. SOME B. ?P B A n)"
   248   have A_Suc: "\<And>n. A (Suc n) = (SOME B. ?P B (A n) n)" by (simp add: A_def)
   248   have A_Suc: "\<And>n. A (Suc n) = (SOME B. ?P B (A n) n)" by (simp add: A_def)
   249   have A_0[simp]: "A 0 = space M" unfolding A_def by simp
   249   have A_0[simp]: "A 0 = space M" unfolding A_def by simp
   307       have "?A \<in> sets M" using f g unfolding G_def by auto
   307       have "?A \<in> sets M" using f g unfolding G_def by auto
   308       fix A assume "A \<in> sets M"
   308       fix A assume "A \<in> sets M"
   309       hence sets: "?A \<inter> A \<in> sets M" "(space M - ?A) \<inter> A \<in> sets M" using `?A \<in> sets M` by auto
   309       hence sets: "?A \<inter> A \<in> sets M" "(space M - ?A) \<inter> A \<in> sets M" using `?A \<in> sets M` by auto
   310       hence sets': "?A \<inter> A \<in> sets N" "(space M - ?A) \<inter> A \<in> sets N" by (auto simp: sets_eq)
   310       hence sets': "?A \<inter> A \<in> sets N" "(space M - ?A) \<inter> A \<in> sets N" by (auto simp: sets_eq)
   311       have union: "((?A \<inter> A) \<union> ((space M - ?A) \<inter> A)) = A"
   311       have union: "((?A \<inter> A) \<union> ((space M - ?A) \<inter> A)) = A"
   312         using sets_into_space[OF `A \<in> sets M`] by auto
   312         using sets.sets_into_space[OF `A \<in> sets M`] by auto
   313       have "\<And>x. x \<in> space M \<Longrightarrow> max (g x) (f x) * indicator A x =
   313       have "\<And>x. x \<in> space M \<Longrightarrow> max (g x) (f x) * indicator A x =
   314         g x * indicator (?A \<inter> A) x + f x * indicator ((space M - ?A) \<inter> A) x"
   314         g x * indicator (?A \<inter> A) x + f x * indicator ((space M - ?A) \<inter> A) x"
   315         by (auto simp: indicator_def max_def)
   315         by (auto simp: indicator_def max_def)
   316       hence "(\<integral>\<^isup>+x. max (g x) (f x) * indicator A x \<partial>M) =
   316       hence "(\<integral>\<^isup>+x. max (g x) (f x) * indicator A x \<partial>M) =
   317         (\<integral>\<^isup>+x. g x * indicator (?A \<inter> A) x \<partial>M) +
   317         (\<integral>\<^isup>+x. g x * indicator (?A \<inter> A) x \<partial>M) +
   349   note SUP_in_G = this
   349   note SUP_in_G = this
   350   let ?y = "SUP g : G. integral\<^isup>P M g"
   350   let ?y = "SUP g : G. integral\<^isup>P M g"
   351   have y_le: "?y \<le> N (space M)" unfolding G_def
   351   have y_le: "?y \<le> N (space M)" unfolding G_def
   352   proof (safe intro!: SUP_least)
   352   proof (safe intro!: SUP_least)
   353     fix g assume "\<forall>A\<in>sets M. (\<integral>\<^isup>+x. g x * indicator A x \<partial>M) \<le> N A"
   353     fix g assume "\<forall>A\<in>sets M. (\<integral>\<^isup>+x. g x * indicator A x \<partial>M) \<le> N A"
   354     from this[THEN bspec, OF top] show "integral\<^isup>P M g \<le> N (space M)"
   354     from this[THEN bspec, OF sets.top] show "integral\<^isup>P M g \<le> N (space M)"
   355       by (simp cong: positive_integral_cong)
   355       by (simp cong: positive_integral_cong)
   356   qed
   356   qed
   357   from SUPR_countable_SUPR[OF `G \<noteq> {}`, of "integral\<^isup>P M"] guess ys .. note ys = this
   357   from SUPR_countable_SUPR[OF `G \<noteq> {}`, of "integral\<^isup>P M"] guess ys .. note ys = this
   358   then have "\<forall>n. \<exists>g. g\<in>G \<and> integral\<^isup>P M g = ys n"
   358   then have "\<forall>n. \<exists>g. g\<in>G \<and> integral\<^isup>P M g = ys n"
   359   proof safe
   359   proof safe
   505     then have "0 < emeasure M A0" using emeasure_nonneg[of M A0] by auto
   505     then have "0 < emeasure M A0" using emeasure_nonneg[of M A0] by auto
   506     hence "0 < b * emeasure M A0" using b by (auto simp: ereal_zero_less_0_iff)
   506     hence "0 < b * emeasure M A0" using b by (auto simp: ereal_zero_less_0_iff)
   507     with int_f_finite have "?y + 0 < integral\<^isup>P M f + b * emeasure M A0" unfolding int_f_eq_y
   507     with int_f_finite have "?y + 0 < integral\<^isup>P M f + b * emeasure M A0" unfolding int_f_eq_y
   508       using `f \<in> G`
   508       using `f \<in> G`
   509       by (intro ereal_add_strict_mono) (auto intro!: SUP_upper2 positive_integral_positive)
   509       by (intro ereal_add_strict_mono) (auto intro!: SUP_upper2 positive_integral_positive)
   510     also have "\<dots> = integral\<^isup>P M ?f0" using f0_eq[OF top] `A0 \<in> sets M` sets_into_space
   510     also have "\<dots> = integral\<^isup>P M ?f0" using f0_eq[OF sets.top] `A0 \<in> sets M` sets.sets_into_space
   511       by (simp cong: positive_integral_cong)
   511       by (simp cong: positive_integral_cong)
   512     finally have "?y < integral\<^isup>P M ?f0" by simp
   512     finally have "?y < integral\<^isup>P M ?f0" by simp
   513     moreover from `?f0 \<in> G` have "integral\<^isup>P M ?f0 \<le> ?y" by (auto intro!: SUP_upper)
   513     moreover from `?f0 \<in> G` have "integral\<^isup>P M ?f0 \<le> ?y" by (auto intro!: SUP_upper)
   514     ultimately show False by auto
   514     ultimately show False by auto
   515   qed
   515   qed
   534 proof -
   534 proof -
   535   let ?Q = "{Q\<in>sets M. N Q \<noteq> \<infinity>}"
   535   let ?Q = "{Q\<in>sets M. N Q \<noteq> \<infinity>}"
   536   let ?a = "SUP Q:?Q. emeasure M Q"
   536   let ?a = "SUP Q:?Q. emeasure M Q"
   537   have "{} \<in> ?Q" by auto
   537   have "{} \<in> ?Q" by auto
   538   then have Q_not_empty: "?Q \<noteq> {}" by blast
   538   then have Q_not_empty: "?Q \<noteq> {}" by blast
   539   have "?a \<le> emeasure M (space M)" using sets_into_space
   539   have "?a \<le> emeasure M (space M)" using sets.sets_into_space
   540     by (auto intro!: SUP_least emeasure_mono)
   540     by (auto intro!: SUP_least emeasure_mono)
   541   then have "?a \<noteq> \<infinity>" using finite_emeasure_space
   541   then have "?a \<noteq> \<infinity>" using finite_emeasure_space
   542     by auto
   542     by auto
   543   from SUPR_countable_SUPR[OF Q_not_empty, of "emeasure M"]
   543   from SUPR_countable_SUPR[OF Q_not_empty, of "emeasure M"]
   544   obtain Q'' where "range Q'' \<subseteq> emeasure M ` ?Q" and a: "?a = (SUP i::nat. Q'' i)"
   544   obtain Q'' where "range Q'' \<subseteq> emeasure M ` ?Q" and a: "?a = (SUP i::nat. Q'' i)"
   599             unfolding absolutely_continuous_def by auto
   599             unfolding absolutely_continuous_def by auto
   600           ultimately show ?thesis by simp
   600           ultimately show ?thesis by simp
   601         next
   601         next
   602           assume "emeasure M A \<noteq> 0" with * have "N A \<noteq> \<infinity>" using emeasure_nonneg[of M A] by auto
   602           assume "emeasure M A \<noteq> 0" with * have "N A \<noteq> \<infinity>" using emeasure_nonneg[of M A] by auto
   603           with A have "emeasure M ?O_0 + emeasure M A = emeasure M (?O_0 \<union> A)"
   603           with A have "emeasure M ?O_0 + emeasure M A = emeasure M (?O_0 \<union> A)"
   604             using Q' by (auto intro!: plus_emeasure countable_UN)
   604             using Q' by (auto intro!: plus_emeasure sets.countable_UN)
   605           also have "\<dots> = (SUP i. emeasure M (?O i \<union> A))"
   605           also have "\<dots> = (SUP i. emeasure M (?O i \<union> A))"
   606           proof (rule SUP_emeasure_incseq[of "\<lambda>i. ?O i \<union> A", symmetric, simplified])
   606           proof (rule SUP_emeasure_incseq[of "\<lambda>i. ?O i \<union> A", symmetric, simplified])
   607             show "range (\<lambda>i. ?O i \<union> A) \<subseteq> sets M"
   607             show "range (\<lambda>i. ?O i \<union> A) \<subseteq> sets M"
   608               using `N A \<noteq> \<infinity>` O_sets A by auto
   608               using `N A \<noteq> \<infinity>` O_sets A by auto
   609           qed (fastforce intro!: incseq_SucI)
   609           qed (fastforce intro!: incseq_SucI)
   710       have "(\<integral>\<^isup>+x. ?f x * indicator A x \<partial>M) = (\<integral>\<^isup>+x. (\<Sum>i. f i x * indicator (Q i \<inter> A) x) + \<infinity> * indicator (Q0 \<inter> A) x \<partial>M)"
   710       have "(\<integral>\<^isup>+x. ?f x * indicator A x \<partial>M) = (\<integral>\<^isup>+x. (\<Sum>i. f i x * indicator (Q i \<inter> A) x) + \<infinity> * indicator (Q0 \<inter> A) x \<partial>M)"
   711         using borel by (intro positive_integral_cong) (auto simp: indicator_def)
   711         using borel by (intro positive_integral_cong) (auto simp: indicator_def)
   712       also have "\<dots> = (\<integral>\<^isup>+x. (\<Sum>i. f i x * indicator (Q i \<inter> A) x) \<partial>M) + \<infinity> * emeasure M (Q0 \<inter> A)"
   712       also have "\<dots> = (\<integral>\<^isup>+x. (\<Sum>i. f i x * indicator (Q i \<inter> A) x) \<partial>M) + \<infinity> * emeasure M (Q0 \<inter> A)"
   713         using borel Qi Q0(1) `A \<in> sets M`
   713         using borel Qi Q0(1) `A \<in> sets M`
   714         by (subst positive_integral_add) (auto simp del: ereal_infty_mult
   714         by (subst positive_integral_add) (auto simp del: ereal_infty_mult
   715             simp add: positive_integral_cmult_indicator Int intro!: suminf_0_le)
   715             simp add: positive_integral_cmult_indicator sets.Int intro!: suminf_0_le)
   716       also have "\<dots> = (\<Sum>i. N (Q i \<inter> A)) + \<infinity> * emeasure M (Q0 \<inter> A)"
   716       also have "\<dots> = (\<Sum>i. N (Q i \<inter> A)) + \<infinity> * emeasure M (Q0 \<inter> A)"
   717         by (subst integral_eq[OF `A \<in> sets M`], subst positive_integral_suminf) auto
   717         by (subst integral_eq[OF `A \<in> sets M`], subst positive_integral_suminf) auto
   718       finally have "(\<integral>\<^isup>+x. ?f x * indicator A x \<partial>M) = (\<Sum>i. N (Q i \<inter> A)) + \<infinity> * emeasure M (Q0 \<inter> A)" .
   718       finally have "(\<integral>\<^isup>+x. ?f x * indicator A x \<partial>M) = (\<Sum>i. N (Q i \<inter> A)) + \<infinity> * emeasure M (Q0 \<inter> A)" .
   719       moreover have "(\<Sum>i. N (Q i \<inter> A)) = N ((\<Union>i. Q i) \<inter> A)"
   719       moreover have "(\<Sum>i. N (Q i \<inter> A)) = N ((\<Union>i. Q i) \<inter> A)"
   720         using Q Q_sets `A \<in> sets M`
   720         using Q Q_sets `A \<in> sets M`
   725         from in_Q0[OF this] show ?thesis by auto
   725         from in_Q0[OF this] show ?thesis by auto
   726       qed
   726       qed
   727       moreover have "Q0 \<inter> A \<in> sets M" "((\<Union>i. Q i) \<inter> A) \<in> sets M"
   727       moreover have "Q0 \<inter> A \<in> sets M" "((\<Union>i. Q i) \<inter> A) \<in> sets M"
   728         using Q_sets `A \<in> sets M` Q0(1) by auto
   728         using Q_sets `A \<in> sets M` Q0(1) by auto
   729       moreover have "((\<Union>i. Q i) \<inter> A) \<union> (Q0 \<inter> A) = A" "((\<Union>i. Q i) \<inter> A) \<inter> (Q0 \<inter> A) = {}"
   729       moreover have "((\<Union>i. Q i) \<inter> A) \<union> (Q0 \<inter> A) = A" "((\<Union>i. Q i) \<inter> A) \<inter> (Q0 \<inter> A) = {}"
   730         using `A \<in> sets M` sets_into_space Q0 by auto
   730         using `A \<in> sets M` sets.sets_into_space Q0 by auto
   731       ultimately have "N A = (\<integral>\<^isup>+x. ?f x * indicator A x \<partial>M)"
   731       ultimately have "N A = (\<integral>\<^isup>+x. ?f x * indicator A x \<partial>M)"
   732         using plus_emeasure[of "(\<Union>i. Q i) \<inter> A" N "Q0 \<inter> A"] by (simp add: sets_eq)
   732         using plus_emeasure[of "(\<Union>i. Q i) \<inter> A" N "Q0 \<inter> A"] by (simp add: sets_eq)
   733       with `A \<in> sets M` borel Q Q0(1) show "emeasure (density M ?f) A = N A"
   733       with `A \<in> sets M` borel Q Q0(1) show "emeasure (density M ?f) A = N A"
   734         by (auto simp: subset_eq emeasure_density)
   734         by (auto simp: subset_eq emeasure_density)
   735     qed (simp add: sets_eq)
   735     qed (simp add: sets_eq)
   753   have "absolutely_continuous ?MT N" "sets N = sets ?MT"
   753   have "absolutely_continuous ?MT N" "sets N = sets ?MT"
   754   proof (unfold absolutely_continuous_def, safe)
   754   proof (unfold absolutely_continuous_def, safe)
   755     fix A assume "A \<in> null_sets ?MT"
   755     fix A assume "A \<in> null_sets ?MT"
   756     with borel have "A \<in> sets M" "AE x in M. x \<in> A \<longrightarrow> h x \<le> 0"
   756     with borel have "A \<in> sets M" "AE x in M. x \<in> A \<longrightarrow> h x \<le> 0"
   757       by (auto simp add: null_sets_density_iff)
   757       by (auto simp add: null_sets_density_iff)
   758     with pos sets_into_space have "AE x in M. x \<notin> A"
   758     with pos sets.sets_into_space have "AE x in M. x \<notin> A"
   759       by (elim eventually_elim1) (auto simp: not_le[symmetric])
   759       by (elim eventually_elim1) (auto simp: not_le[symmetric])
   760     then have "A \<in> null_sets M"
   760     then have "A \<in> null_sets M"
   761       using `A \<in> sets M` by (simp add: AE_iff_null_sets)
   761       using `A \<in> sets M` by (simp add: AE_iff_null_sets)
   762     with ac show "A \<in> null_sets N"
   762     with ac show "A \<in> null_sets N"
   763       by (auto simp: absolutely_continuous_def)
   763       by (auto simp: absolutely_continuous_def)
   782 next
   782 next
   783   let ?P = "\<lambda>f A. \<integral>\<^isup>+ x. f x * indicator A x \<partial>M"
   783   let ?P = "\<lambda>f A. \<integral>\<^isup>+ x. f x * indicator A x \<partial>M"
   784   assume "density M f = density M g"
   784   assume "density M f = density M g"
   785   with borel have eq: "\<forall>A\<in>sets M. ?P f A = ?P g A"
   785   with borel have eq: "\<forall>A\<in>sets M. ?P f A = ?P g A"
   786     by (simp add: emeasure_density[symmetric])
   786     by (simp add: emeasure_density[symmetric])
   787   from this[THEN bspec, OF top] fin
   787   from this[THEN bspec, OF sets.top] fin
   788   have g_fin: "integral\<^isup>P M g \<noteq> \<infinity>" by (simp cong: positive_integral_cong)
   788   have g_fin: "integral\<^isup>P M g \<noteq> \<infinity>" by (simp cong: positive_integral_cong)
   789   { fix f g assume borel: "f \<in> borel_measurable M" "g \<in> borel_measurable M"
   789   { fix f g assume borel: "f \<in> borel_measurable M" "g \<in> borel_measurable M"
   790       and pos: "AE x in M. 0 \<le> f x" "AE x in M. 0 \<le> g x"
   790       and pos: "AE x in M. 0 \<le> f x" "AE x in M. 0 \<le> g x"
   791       and g_fin: "integral\<^isup>P M g \<noteq> \<infinity>" and eq: "\<forall>A\<in>sets M. ?P f A = ?P g A"
   791       and g_fin: "integral\<^isup>P M g \<noteq> \<infinity>" and eq: "\<forall>A\<in>sets M. ?P f A = ?P g A"
   792     let ?N = "{x\<in>space M. g x < f x}"
   792     let ?N = "{x\<in>space M. g x < f x}"
   896     by (intro finite_measureI) (simp cong: positive_integral_cong emeasure_density add: fin)
   896     by (intro finite_measureI) (simp cong: positive_integral_cong emeasure_density add: fin)
   897   let ?fM = "density M f"
   897   let ?fM = "density M f"
   898   let ?f'M = "density M f'"
   898   let ?f'M = "density M f'"
   899   { fix A assume "A \<in> sets M"
   899   { fix A assume "A \<in> sets M"
   900     then have "{x \<in> space M. h x * indicator A x \<noteq> 0} = A"
   900     then have "{x \<in> space M. h x * indicator A x \<noteq> 0} = A"
   901       using pos(1) sets_into_space by (force simp: indicator_def)
   901       using pos(1) sets.sets_into_space by (force simp: indicator_def)
   902     then have "(\<integral>\<^isup>+x. h x * indicator A x \<partial>M) = 0 \<longleftrightarrow> A \<in> null_sets M"
   902     then have "(\<integral>\<^isup>+x. h x * indicator A x \<partial>M) = 0 \<longleftrightarrow> A \<in> null_sets M"
   903       using h_borel `A \<in> sets M` h_nn by (subst positive_integral_0_iff) auto }
   903       using h_borel `A \<in> sets M` h_nn by (subst positive_integral_0_iff) auto }
   904   note h_null_sets = this
   904   note h_null_sets = this
   905   { fix A assume "A \<in> sets M"
   905   { fix A assume "A \<in> sets M"
   906     have "(\<integral>\<^isup>+x. f x * (h x * indicator A x) \<partial>M) = (\<integral>\<^isup>+x. h x * indicator A x \<partial>?fM)"
   906     have "(\<integral>\<^isup>+x. f x * (h x * indicator A x) \<partial>M) = (\<integral>\<^isup>+x. h x * indicator A x \<partial>?fM)"
   992   assume AE: "AE x in M. f x \<noteq> \<infinity>"
   992   assume AE: "AE x in M. f x \<noteq> \<infinity>"
   993   from sigma_finite guess Q .. note Q = this
   993   from sigma_finite guess Q .. note Q = this
   994   def A \<equiv> "\<lambda>i. f -` (case i of 0 \<Rightarrow> {\<infinity>} | Suc n \<Rightarrow> {.. ereal(of_nat (Suc n))}) \<inter> space M"
   994   def A \<equiv> "\<lambda>i. f -` (case i of 0 \<Rightarrow> {\<infinity>} | Suc n \<Rightarrow> {.. ereal(of_nat (Suc n))}) \<inter> space M"
   995   { fix i j have "A i \<inter> Q j \<in> sets M"
   995   { fix i j have "A i \<inter> Q j \<in> sets M"
   996     unfolding A_def using f Q
   996     unfolding A_def using f Q
   997     apply (rule_tac Int)
   997     apply (rule_tac sets.Int)
   998     by (cases i) (auto intro: measurable_sets[OF f(1)]) }
   998     by (cases i) (auto intro: measurable_sets[OF f(1)]) }
   999   note A_in_sets = this
   999   note A_in_sets = this
  1000   let ?A = "\<lambda>n. case prod_decode n of (i,j) \<Rightarrow> A i \<inter> Q j"
  1000   let ?A = "\<lambda>n. case prod_decode n of (i,j) \<Rightarrow> A i \<inter> Q j"
  1001   show "sigma_finite_measure ?N"
  1001   show "sigma_finite_measure ?N"
  1002   proof (default, intro exI conjI subsetI allI)
  1002   proof (default, intro exI conjI subsetI allI)
  1131 proof (rule RN_deriv_unique)
  1131 proof (rule RN_deriv_unique)
  1132   have [simp]: "sets N = sets M" by fact
  1132   have [simp]: "sets N = sets M" by fact
  1133   note sets_eq_imp_space_eq[OF N, simp]
  1133   note sets_eq_imp_space_eq[OF N, simp]
  1134   have measurable_N[simp]: "\<And>M'. measurable N M' = measurable M M'" by (auto simp: measurable_def)
  1134   have measurable_N[simp]: "\<And>M'. measurable N M' = measurable M M'" by (auto simp: measurable_def)
  1135   { fix A assume "A \<in> sets M"
  1135   { fix A assume "A \<in> sets M"
  1136     with inv T T' sets_into_space[OF this]
  1136     with inv T T' sets.sets_into_space[OF this]
  1137     have "T -` T' -` A \<inter> T -` space M' \<inter> space M = A"
  1137     have "T -` T' -` A \<inter> T -` space M' \<inter> space M = A"
  1138       by (auto simp: measurable_def) }
  1138       by (auto simp: measurable_def) }
  1139   note eq = this[simp]
  1139   note eq = this[simp]
  1140   { fix A assume "A \<in> sets M"
  1140   { fix A assume "A \<in> sets M"
  1141     with inv T T' sets_into_space[OF this]
  1141     with inv T T' sets.sets_into_space[OF this]
  1142     have "(T' \<circ> T) -` A \<inter> space M = A"
  1142     have "(T' \<circ> T) -` A \<inter> space M = A"
  1143       by (auto simp: measurable_def) }
  1143       by (auto simp: measurable_def) }
  1144   note eq2 = this[simp]
  1144   note eq2 = this[simp]
  1145   let ?M' = "distr M M' T" and ?N' = "distr N M' T"
  1145   let ?M' = "distr M M' T" and ?N' = "distr N M' T"
  1146   interpret M': sigma_finite_measure ?M'
  1146   interpret M': sigma_finite_measure ?M'
  1166     by (simp add: comp_def)
  1166     by (simp add: comp_def)
  1167   show "AE x in M. 0 \<le> RN_deriv ?M' ?N' (T x)" using M'.RN_deriv_nonneg[OF ac] by auto
  1167   show "AE x in M. 0 \<le> RN_deriv ?M' ?N' (T x)" using M'.RN_deriv_nonneg[OF ac] by auto
  1168 
  1168 
  1169   have "N = distr N M (T' \<circ> T)"
  1169   have "N = distr N M (T' \<circ> T)"
  1170     by (subst measure_of_of_measure[of N, symmetric])
  1170     by (subst measure_of_of_measure[of N, symmetric])
  1171        (auto simp add: distr_def sigma_sets_eq intro!: measure_of_eq space_closed)
  1171        (auto simp add: distr_def sets.sigma_sets_eq intro!: measure_of_eq sets.space_closed)
  1172   also have "\<dots> = distr (distr N M' T) M T'"
  1172   also have "\<dots> = distr (distr N M' T) M T'"
  1173     using T T' by (simp add: distr_distr)
  1173     using T T' by (simp add: distr_distr)
  1174   also have "\<dots> = distr (density (distr M M' T) (RN_deriv (distr M M' T) (distr N M' T))) M T'"
  1174   also have "\<dots> = distr (density (distr M M' T) (RN_deriv (distr M M' T) (distr N M' T))) M T'"
  1175     using ac by (simp add: M'.density_RN_deriv)
  1175     using ac by (simp add: M'.density_RN_deriv)
  1176   also have "\<dots> = density M (RN_deriv (distr M M' T) (distr N M' T) \<circ> T)"
  1176   also have "\<dots> = density M (RN_deriv (distr M M' T) (distr N M' T) \<circ> T)"