src/HOL/Probability/Bochner_Integration.thy
changeset 61169 4de9ff3ea29a
parent 60585 48fdff264eb2
child 61424 c3658c18b7bc
equal deleted inserted replaced
61168:dcdfb6355a05 61169:4de9ff3ea29a
  2547 lemma (in pair_sigma_finite) integrable_product_swap:
  2547 lemma (in pair_sigma_finite) integrable_product_swap:
  2548   fixes f :: "_ \<Rightarrow> _::{banach, second_countable_topology}"
  2548   fixes f :: "_ \<Rightarrow> _::{banach, second_countable_topology}"
  2549   assumes "integrable (M1 \<Otimes>\<^sub>M M2) f"
  2549   assumes "integrable (M1 \<Otimes>\<^sub>M M2) f"
  2550   shows "integrable (M2 \<Otimes>\<^sub>M M1) (\<lambda>(x,y). f (y,x))"
  2550   shows "integrable (M2 \<Otimes>\<^sub>M M1) (\<lambda>(x,y). f (y,x))"
  2551 proof -
  2551 proof -
  2552   interpret Q: pair_sigma_finite M2 M1 by default
  2552   interpret Q: pair_sigma_finite M2 M1 ..
  2553   have *: "(\<lambda>(x,y). f (y,x)) = (\<lambda>x. f (case x of (x,y)\<Rightarrow>(y,x)))" by (auto simp: fun_eq_iff)
  2553   have *: "(\<lambda>(x,y). f (y,x)) = (\<lambda>x. f (case x of (x,y)\<Rightarrow>(y,x)))" by (auto simp: fun_eq_iff)
  2554   show ?thesis unfolding *
  2554   show ?thesis unfolding *
  2555     by (rule integrable_distr[OF measurable_pair_swap'])
  2555     by (rule integrable_distr[OF measurable_pair_swap'])
  2556        (simp add: distr_pair_swap[symmetric] assms)
  2556        (simp add: distr_pair_swap[symmetric] assms)
  2557 qed
  2557 qed
  2558 
  2558 
  2559 lemma (in pair_sigma_finite) integrable_product_swap_iff:
  2559 lemma (in pair_sigma_finite) integrable_product_swap_iff:
  2560   fixes f :: "_ \<Rightarrow> _::{banach, second_countable_topology}"
  2560   fixes f :: "_ \<Rightarrow> _::{banach, second_countable_topology}"
  2561   shows "integrable (M2 \<Otimes>\<^sub>M M1) (\<lambda>(x,y). f (y,x)) \<longleftrightarrow> integrable (M1 \<Otimes>\<^sub>M M2) f"
  2561   shows "integrable (M2 \<Otimes>\<^sub>M M1) (\<lambda>(x,y). f (y,x)) \<longleftrightarrow> integrable (M1 \<Otimes>\<^sub>M M2) f"
  2562 proof -
  2562 proof -
  2563   interpret Q: pair_sigma_finite M2 M1 by default
  2563   interpret Q: pair_sigma_finite M2 M1 ..
  2564   from Q.integrable_product_swap[of "\<lambda>(x,y). f (y,x)"] integrable_product_swap[of f]
  2564   from Q.integrable_product_swap[of "\<lambda>(x,y). f (y,x)"] integrable_product_swap[of f]
  2565   show ?thesis by auto
  2565   show ?thesis by auto
  2566 qed
  2566 qed
  2567 
  2567 
  2568 lemma (in pair_sigma_finite) integral_product_swap:
  2568 lemma (in pair_sigma_finite) integral_product_swap:
  2749   assumes f[measurable]: "integrable (M1 \<Otimes>\<^sub>M M2) (split f)"
  2749   assumes f[measurable]: "integrable (M1 \<Otimes>\<^sub>M M2) (split f)"
  2750   shows AE_integrable_snd: "AE y in M2. integrable M1 (\<lambda>x. f x y)" (is "?AE")
  2750   shows AE_integrable_snd: "AE y in M2. integrable M1 (\<lambda>x. f x y)" (is "?AE")
  2751     and integrable_snd: "integrable M2 (\<lambda>y. \<integral>x. f x y \<partial>M1)" (is "?INT")
  2751     and integrable_snd: "integrable M2 (\<lambda>y. \<integral>x. f x y \<partial>M1)" (is "?INT")
  2752     and integral_snd: "(\<integral>y. (\<integral>x. f x y \<partial>M1) \<partial>M2) = integral\<^sup>L (M1 \<Otimes>\<^sub>M M2) (split f)" (is "?EQ")
  2752     and integral_snd: "(\<integral>y. (\<integral>x. f x y \<partial>M1) \<partial>M2) = integral\<^sup>L (M1 \<Otimes>\<^sub>M M2) (split f)" (is "?EQ")
  2753 proof -
  2753 proof -
  2754   interpret Q: pair_sigma_finite M2 M1 by default
  2754   interpret Q: pair_sigma_finite M2 M1 ..
  2755   have Q_int: "integrable (M2 \<Otimes>\<^sub>M M1) (\<lambda>(x, y). f y x)"
  2755   have Q_int: "integrable (M2 \<Otimes>\<^sub>M M1) (\<lambda>(x, y). f y x)"
  2756     using f unfolding integrable_product_swap_iff[symmetric] by simp
  2756     using f unfolding integrable_product_swap_iff[symmetric] by simp
  2757   show ?AE  using Q.AE_integrable_fst'[OF Q_int] by simp
  2757   show ?AE  using Q.AE_integrable_fst'[OF Q_int] by simp
  2758   show ?INT using Q.integrable_fst'[OF Q_int] by simp
  2758   show ?INT using Q.integrable_fst'[OF Q_int] by simp
  2759   show ?EQ using Q.integral_fst'[OF Q_int]
  2759   show ?EQ using Q.integral_fst'[OF Q_int]
  2778   fixes f :: "_ \<Rightarrow> _::{banach, second_countable_topology}"
  2778   fixes f :: "_ \<Rightarrow> _::{banach, second_countable_topology}"
  2779   assumes IJ[simp]: "I \<inter> J = {}" and fin: "finite I" "finite J"
  2779   assumes IJ[simp]: "I \<inter> J = {}" and fin: "finite I" "finite J"
  2780   and f: "integrable (Pi\<^sub>M (I \<union> J) M) f"
  2780   and f: "integrable (Pi\<^sub>M (I \<union> J) M) f"
  2781   shows "integral\<^sup>L (Pi\<^sub>M (I \<union> J) M) f = (\<integral>x. (\<integral>y. f (merge I J (x, y)) \<partial>Pi\<^sub>M J M) \<partial>Pi\<^sub>M I M)"
  2781   shows "integral\<^sup>L (Pi\<^sub>M (I \<union> J) M) f = (\<integral>x. (\<integral>y. f (merge I J (x, y)) \<partial>Pi\<^sub>M J M) \<partial>Pi\<^sub>M I M)"
  2782 proof -
  2782 proof -
  2783   interpret I: finite_product_sigma_finite M I by default fact
  2783   interpret I: finite_product_sigma_finite M I by standard fact
  2784   interpret J: finite_product_sigma_finite M J by default fact
  2784   interpret J: finite_product_sigma_finite M J by standard fact
  2785   have "finite (I \<union> J)" using fin by auto
  2785   have "finite (I \<union> J)" using fin by auto
  2786   interpret IJ: finite_product_sigma_finite M "I \<union> J" by default fact
  2786   interpret IJ: finite_product_sigma_finite M "I \<union> J" by standard fact
  2787   interpret P: pair_sigma_finite "Pi\<^sub>M I M" "Pi\<^sub>M J M" by default
  2787   interpret P: pair_sigma_finite "Pi\<^sub>M I M" "Pi\<^sub>M J M" ..
  2788   let ?M = "merge I J"
  2788   let ?M = "merge I J"
  2789   let ?f = "\<lambda>x. f (?M x)"
  2789   let ?f = "\<lambda>x. f (?M x)"
  2790   from f have f_borel: "f \<in> borel_measurable (Pi\<^sub>M (I \<union> J) M)"
  2790   from f have f_borel: "f \<in> borel_measurable (Pi\<^sub>M (I \<union> J) M)"
  2791     by auto
  2791     by auto
  2792   have P_borel: "(\<lambda>x. f (merge I J x)) \<in> borel_measurable (Pi\<^sub>M I M \<Otimes>\<^sub>M Pi\<^sub>M J M)"
  2792   have P_borel: "(\<lambda>x. f (merge I J x)) \<in> borel_measurable (Pi\<^sub>M I M \<Otimes>\<^sub>M Pi\<^sub>M J M)"
  2828 lemma (in product_sigma_finite) product_integrable_setprod:
  2828 lemma (in product_sigma_finite) product_integrable_setprod:
  2829   fixes f :: "'i \<Rightarrow> 'a \<Rightarrow> _::{real_normed_field,banach,second_countable_topology}"
  2829   fixes f :: "'i \<Rightarrow> 'a \<Rightarrow> _::{real_normed_field,banach,second_countable_topology}"
  2830   assumes [simp]: "finite I" and integrable: "\<And>i. i \<in> I \<Longrightarrow> integrable (M i) (f i)"
  2830   assumes [simp]: "finite I" and integrable: "\<And>i. i \<in> I \<Longrightarrow> integrable (M i) (f i)"
  2831   shows "integrable (Pi\<^sub>M I M) (\<lambda>x. (\<Prod>i\<in>I. f i (x i)))" (is "integrable _ ?f")
  2831   shows "integrable (Pi\<^sub>M I M) (\<lambda>x. (\<Prod>i\<in>I. f i (x i)))" (is "integrable _ ?f")
  2832 proof (unfold integrable_iff_bounded, intro conjI)
  2832 proof (unfold integrable_iff_bounded, intro conjI)
  2833   interpret finite_product_sigma_finite M I by default fact
  2833   interpret finite_product_sigma_finite M I by standard fact
  2834 
  2834 
  2835   show "?f \<in> borel_measurable (Pi\<^sub>M I M)"
  2835   show "?f \<in> borel_measurable (Pi\<^sub>M I M)"
  2836     using assms by simp
  2836     using assms by simp
  2837   have "(\<integral>\<^sup>+ x. ereal (norm (\<Prod>i\<in>I. f i (x i))) \<partial>Pi\<^sub>M I M) = 
  2837   have "(\<integral>\<^sup>+ x. ereal (norm (\<Prod>i\<in>I. f i (x i))) \<partial>Pi\<^sub>M I M) = 
  2838       (\<integral>\<^sup>+ x. (\<Prod>i\<in>I. ereal (norm (f i (x i)))) \<partial>Pi\<^sub>M I M)"
  2838       (\<integral>\<^sup>+ x. (\<Prod>i\<in>I. ereal (norm (f i (x i)))) \<partial>Pi\<^sub>M I M)"
  2857   case (insert i I)
  2857   case (insert i I)
  2858   then have iI: "finite (insert i I)" by auto
  2858   then have iI: "finite (insert i I)" by auto
  2859   then have prod: "\<And>J. J \<subseteq> insert i I \<Longrightarrow>
  2859   then have prod: "\<And>J. J \<subseteq> insert i I \<Longrightarrow>
  2860     integrable (Pi\<^sub>M J M) (\<lambda>x. (\<Prod>i\<in>J. f i (x i)))"
  2860     integrable (Pi\<^sub>M J M) (\<lambda>x. (\<Prod>i\<in>J. f i (x i)))"
  2861     by (intro product_integrable_setprod insert(4)) (auto intro: finite_subset)
  2861     by (intro product_integrable_setprod insert(4)) (auto intro: finite_subset)
  2862   interpret I: finite_product_sigma_finite M I by default fact
  2862   interpret I: finite_product_sigma_finite M I by standard fact
  2863   have *: "\<And>x y. (\<Prod>j\<in>I. f j (if j = i then y else x j)) = (\<Prod>j\<in>I. f j (x j))"
  2863   have *: "\<And>x y. (\<Prod>j\<in>I. f j (if j = i then y else x j)) = (\<Prod>j\<in>I. f j (x j))"
  2864     using `i \<notin> I` by (auto intro!: setprod.cong)
  2864     using `i \<notin> I` by (auto intro!: setprod.cong)
  2865   show ?case
  2865   show ?case
  2866     unfolding product_integral_insert[OF insert(1,2) prod[OF subset_refl]]
  2866     unfolding product_integral_insert[OF insert(1,2) prod[OF subset_refl]]
  2867     by (simp add: * insert prod subset_insertI)
  2867     by (simp add: * insert prod subset_insertI)