src/HOL/Probability/Product_Measure.thy
changeset 41706 a207a858d1f6
parent 41705 1100512e16d8
child 41831 91a2b435dd7a
equal deleted inserted replaced
41705:1100512e16d8 41706:a207a858d1f6
   732   show ?thesis
   732   show ?thesis
   733     unfolding * using assms by (rule sets_pair_sigma_algebra_swap)
   733     unfolding * using assms by (rule sets_pair_sigma_algebra_swap)
   734 qed
   734 qed
   735 
   735 
   736 lemma (in pair_sigma_finite) pair_measure_alt2:
   736 lemma (in pair_sigma_finite) pair_measure_alt2:
   737   assumes "A \<in> sets P"
   737   assumes A: "A \<in> sets P"
   738   shows "\<mu> A = (\<integral>\<^isup>+y. M1.\<mu> ((\<lambda>x. (x, y)) -` A) \<partial>M2)"
   738   shows "\<mu> A = (\<integral>\<^isup>+y. M1.\<mu> ((\<lambda>x. (x, y)) -` A) \<partial>M2)"
   739     (is "_ = ?\<nu> A")
   739     (is "_ = ?\<nu> A")
   740 proof -
   740 proof -
       
   741   interpret Q: pair_sigma_finite M2 M1 by default
   741   from sigma_finite_up_in_pair_measure_generator guess F :: "nat \<Rightarrow> ('a \<times> 'b) set" .. note F = this
   742   from sigma_finite_up_in_pair_measure_generator guess F :: "nat \<Rightarrow> ('a \<times> 'b) set" .. note F = this
   742   have [simp]: "\<And>m. \<lparr> space = space E, sets = sets (sigma E), measure = m \<rparr> = P\<lparr> measure := m \<rparr>"
   743   have [simp]: "\<And>m. \<lparr> space = space E, sets = sets (sigma E), measure = m \<rparr> = P\<lparr> measure := m \<rparr>"
   743     unfolding pair_measure_def by simp
   744     unfolding pair_measure_def by simp
   744   show ?thesis
   745 
   745   proof (rule measure_unique_Int_stable[where \<nu>="?\<nu>", OF Int_stable_pair_measure_generator], simp_all)
   746   have "\<mu> A = Q.\<mu> ((\<lambda>(y, x). (x, y)) -` A \<inter> space Q.P)"
   746     show "range F \<subseteq> sets E" "F \<up> space E" "\<And>i. \<mu> (F i) \<noteq> \<omega>" "A \<in> sets (sigma E)"
   747   proof (rule measure_unique_Int_stable_vimage[OF Int_stable_pair_measure_generator])
       
   748     show "measure_space P" "measure_space Q.P" by default
       
   749     show "(\<lambda>(y, x). (x, y)) \<in> measurable Q.P P" by (rule Q.pair_sigma_algebra_swap_measurable)
       
   750     show "sets (sigma E) = sets P" "space E = space P" "A \<in> sets (sigma E)"
       
   751       using assms unfolding pair_measure_def by auto
       
   752     show "range F \<subseteq> sets E" "F \<up> space E" "\<And>i. \<mu> (F i) \<noteq> \<omega>"
   747       using F `A \<in> sets P` by (auto simp: pair_measure_def)
   753       using F `A \<in> sets P` by (auto simp: pair_measure_def)
   748     show "measure_space P" by default
       
   749     interpret Q: pair_sigma_finite M2 M1 by default
       
   750     have P: "sigma_algebra (P\<lparr> measure := ?\<nu>\<rparr>)"
       
   751       by (intro sigma_algebra_cong) auto
       
   752     show "measure_space (P\<lparr> measure := ?\<nu>\<rparr>)"
       
   753       apply (rule Q.measure_space_vimage[OF P])
       
   754       apply (simp_all)
       
   755       apply (rule Q.pair_sigma_algebra_swap_measurable)
       
   756     proof -
       
   757       fix A assume "A \<in> sets P"
       
   758       from sets_swap[OF this]
       
   759       show "(\<integral>\<^isup>+ y. M1.\<mu> ((\<lambda>x. (x, y)) -` A) \<partial>M2) = Q.\<mu> ((\<lambda>(x, y). (y, x)) -` A \<inter> space (M2 \<Otimes>\<^isub>M M1))"
       
   760         using sets_into_space[OF `A \<in> sets P`]
       
   761         by (auto simp add: Q.pair_measure_alt space_pair_measure
       
   762                  intro!: M2.positive_integral_cong arg_cong[where f="M1.\<mu>"])
       
   763     qed
       
   764     fix X assume "X \<in> sets E"
   754     fix X assume "X \<in> sets E"
   765     then obtain A B where X: "X = A \<times> B" and AB: "A \<in> sets M1" "B \<in> sets M2"
   755     then obtain A B where X[simp]: "X = A \<times> B" and AB: "A \<in> sets M1" "B \<in> sets M2"
   766       unfolding pair_measure_def pair_measure_generator_def by auto
   756       unfolding pair_measure_def pair_measure_generator_def by auto
   767     show "\<mu> X = ?\<nu> X"
   757     then have "(\<lambda>(y, x). (x, y)) -` X \<inter> space Q.P = B \<times> A"
   768     proof -
   758       using M1.sets_into_space M2.sets_into_space by (auto simp: space_pair_measure)
   769       from AB have "?\<nu> (A \<times> B) = (\<integral>\<^isup>+y. M1.\<mu> A * indicator B y \<partial>M2)"
   759     then show "\<mu> X = Q.\<mu> ((\<lambda>(y, x). (x, y)) -` X \<inter> space Q.P)"
   770         by (auto intro!: M2.positive_integral_cong)
   760       using AB by (simp add: pair_measure_times Q.pair_measure_times ac_simps)
   771       with AB show ?thesis
   761   qed
   772         unfolding pair_measure_times[OF AB] X
   762   then show ?thesis
   773         by (simp add: M2.positive_integral_cmult_indicator ac_simps)
   763     using sets_into_space[OF A] Q.pair_measure_alt[OF sets_swap[OF A]]
   774     qed
   764     by (auto simp add: Q.pair_measure_alt space_pair_measure
   775   qed
   765              intro!: M2.positive_integral_cong arg_cong[where f="M1.\<mu>"])
   776 qed
   766 qed
   777 
       
   778 
   767 
   779 lemma pair_sigma_algebra_sigma:
   768 lemma pair_sigma_algebra_sigma:
   780   assumes 1: "S1 \<up> (space E1)" "range S1 \<subseteq> sets E1" and E1: "sets E1 \<subseteq> Pow (space E1)"
   769   assumes 1: "S1 \<up> (space E1)" "range S1 \<subseteq> sets E1" and E1: "sets E1 \<subseteq> Pow (space E1)"
   781   assumes 2: "S2 \<up> (space E2)" "range S2 \<subseteq> sets E2" and E2: "sets E2 \<subseteq> Pow (space E2)"
   770   assumes 2: "S2 \<up> (space E2)" "range S2 \<subseteq> sets E2" and E2: "sets E2 \<subseteq> Pow (space E2)"
   782   shows "sets (sigma (pair_measure_generator (sigma E1) (sigma E2))) = sets (sigma (pair_measure_generator E1 E2))"
   771   shows "sets (sigma (pair_measure_generator (sigma E1) (sigma E2))) = sets (sigma (pair_measure_generator E1 E2))"
  1557 qed
  1546 qed
  1558 
  1547 
  1559 lemma (in product_sigma_finite) measure_fold:
  1548 lemma (in product_sigma_finite) measure_fold:
  1560   assumes IJ[simp]: "I \<inter> J = {}" and fin: "finite I" "finite J"
  1549   assumes IJ[simp]: "I \<inter> J = {}" and fin: "finite I" "finite J"
  1561   assumes A: "A \<in> sets (Pi\<^isub>M (I \<union> J) M)"
  1550   assumes A: "A \<in> sets (Pi\<^isub>M (I \<union> J) M)"
  1562   shows "measure (Pi\<^isub>M I M \<Otimes>\<^isub>M Pi\<^isub>M J M) ((\<lambda>(x,y). merge I x J y) -` A \<inter> space (Pi\<^isub>M I M \<Otimes>\<^isub>M Pi\<^isub>M J M)) =
  1551   shows "measure (Pi\<^isub>M (I \<union> J) M) A =
  1563    measure (Pi\<^isub>M (I \<union> J) M) A"
  1552     measure (Pi\<^isub>M I M \<Otimes>\<^isub>M Pi\<^isub>M J M) ((\<lambda>(x,y). merge I x J y) -` A \<inter> space (Pi\<^isub>M I M \<Otimes>\<^isub>M Pi\<^isub>M J M))"
  1564 proof -
  1553 proof -
  1565   interpret I: finite_product_sigma_finite M I by default fact
  1554   interpret I: finite_product_sigma_finite M I by default fact
  1566   interpret J: finite_product_sigma_finite M J by default fact
  1555   interpret J: finite_product_sigma_finite M J by default fact
  1567   have "finite (I \<union> J)" using fin by auto
  1556   have "finite (I \<union> J)" using fin by auto
  1568   interpret IJ: finite_product_sigma_finite M "I \<union> J" by default fact
  1557   interpret IJ: finite_product_sigma_finite M "I \<union> J" by default fact
  1573     F: "\<And>i. i\<in> I \<union> J \<Longrightarrow> range (F i) \<subseteq> sets (M i)"
  1562     F: "\<And>i. i\<in> I \<union> J \<Longrightarrow> range (F i) \<subseteq> sets (M i)"
  1574        "(\<lambda>k. \<Pi>\<^isub>E i\<in>I \<union> J. F i k) \<up> space IJ.G"
  1563        "(\<lambda>k. \<Pi>\<^isub>E i\<in>I \<union> J. F i k) \<up> space IJ.G"
  1575        "\<And>k. \<forall>i\<in>I\<union>J. \<mu> i (F i k) \<noteq> \<omega>"
  1564        "\<And>k. \<forall>i\<in>I\<union>J. \<mu> i (F i k) \<noteq> \<omega>"
  1576     by auto
  1565     by auto
  1577   let ?F = "\<lambda>k. \<Pi>\<^isub>E i\<in>I \<union> J. F i k"
  1566   let ?F = "\<lambda>k. \<Pi>\<^isub>E i\<in>I \<union> J. F i k"
  1578   show "P.\<mu> (?X A) = IJ.\<mu> A"
  1567   show "IJ.\<mu> A = P.\<mu> (?X A)"
  1579   proof (rule measure_unique_Int_stable[where X=A])
  1568   proof (rule measure_unique_Int_stable_vimage)
  1580     show "A \<in> sets (sigma IJ.G)"
  1569     show "measure_space IJ.P" "measure_space P.P" by default
       
  1570     show "sets (sigma IJ.G) = sets IJ.P" "space IJ.G = space IJ.P" "A \<in> sets (sigma IJ.G)"
  1581       using A unfolding product_algebra_def by auto
  1571       using A unfolding product_algebra_def by auto
       
  1572   next
  1582     show "Int_stable IJ.G"
  1573     show "Int_stable IJ.G"
  1583       by (simp add: PiE_Int Int_stable_def product_algebra_def
  1574       by (simp add: PiE_Int Int_stable_def product_algebra_def
  1584                     product_algebra_generator_def)
  1575                     product_algebra_generator_def)
  1585           auto
  1576           auto
  1586     show "range ?F \<subseteq> sets IJ.G" using F
  1577     show "range ?F \<subseteq> sets IJ.G" using F
  1587       by (simp add: image_subset_iff product_algebra_def
  1578       by (simp add: image_subset_iff product_algebra_def
  1588                     product_algebra_generator_def)
  1579                     product_algebra_generator_def)
  1589     show "?F \<up> space IJ.G " using F(2) by simp
  1580     show "?F \<up> space IJ.G " using F(2) by simp
  1590     have "measure_space IJ.P" by fact
  1581     show "\<And>k. IJ.\<mu> (?F k) \<noteq> \<omega>"
  1591     also have "IJ.P = \<lparr> space = space IJ.G, sets = sets (sigma IJ.G), measure = IJ.\<mu> \<rparr>"
  1582       using `finite I` F
  1592       by (simp add: product_algebra_def)
  1583       by (subst IJ.measure_times) (auto simp add: setprod_\<omega>)
  1593     finally show "measure_space \<dots>" .
  1584     show "?g \<in> measurable P.P IJ.P"
  1594     let ?P = "\<lparr> space = space IJ.G, sets = sets (sigma IJ.G),
  1585       using IJ by (rule measurable_merge)
  1595                 measure = \<lambda>A. P.\<mu> (?X A)\<rparr>"
       
  1596     have *: "?P = (sigma IJ.G \<lparr> measure := \<lambda>A. P.\<mu> (?X A) \<rparr>)"
       
  1597       by auto
       
  1598     have "sigma_algebra (sigma IJ.G \<lparr> measure := \<lambda>A. P.\<mu> (?X A) \<rparr>)"
       
  1599       by (rule IJ.sigma_algebra_cong) (auto simp: product_algebra_def)
       
  1600     then show "measure_space ?P" unfolding *
       
  1601       using measurable_merge[OF `I \<inter> J = {}`]
       
  1602       by (auto intro!: P.measure_space_vimage simp add: product_algebra_def)
       
  1603   next
  1586   next
  1604     fix A assume "A \<in> sets IJ.G"
  1587     fix A assume "A \<in> sets IJ.G"
  1605     then obtain F where A[simp]: "A = Pi\<^isub>E (I \<union> J) F"
  1588     then obtain F where A: "A = Pi\<^isub>E (I \<union> J) F"
  1606       and F: "\<And>i. i \<in> I \<union> J \<Longrightarrow> F i \<in> sets (M i)"
  1589       and F: "\<And>i. i \<in> I \<union> J \<Longrightarrow> F i \<in> sets (M i)"
  1607       by (auto simp: product_algebra_generator_def)
  1590       by (auto simp: product_algebra_generator_def)
  1608     then have "?X A = (Pi\<^isub>E I F \<times> Pi\<^isub>E J F)"
  1591     then have X: "?X A = (Pi\<^isub>E I F \<times> Pi\<^isub>E J F)"
  1609       using sets_into_space by (auto simp: space_pair_measure) blast+
  1592       using sets_into_space by (auto simp: space_pair_measure) blast+
  1610     then have "P.\<mu> (?X A) = (\<Prod>i\<in>I. \<mu> i (F i)) * (\<Prod>i\<in>J. \<mu> i (F i))"
  1593     then have "P.\<mu> (?X A) = (\<Prod>i\<in>I. \<mu> i (F i)) * (\<Prod>i\<in>J. \<mu> i (F i))"
  1611       using `finite J` `finite I` F
  1594       using `finite J` `finite I` F
  1612       by (simp add: P.pair_measure_times I.measure_times J.measure_times)
  1595       by (simp add: P.pair_measure_times I.measure_times J.measure_times)
  1613     also have "\<dots> = (\<Prod>i\<in>I \<union> J. \<mu> i (F i))"
  1596     also have "\<dots> = (\<Prod>i\<in>I \<union> J. \<mu> i (F i))"
  1614       using `finite J` `finite I` `I \<inter> J = {}`  by (simp add: setprod_Un_one)
  1597       using `finite J` `finite I` `I \<inter> J = {}`  by (simp add: setprod_Un_one)
  1615     also have "\<dots> = IJ.\<mu> A"
  1598     also have "\<dots> = IJ.\<mu> A"
  1616       using `finite J` `finite I` F unfolding A
  1599       using `finite J` `finite I` F unfolding A
  1617       by (intro IJ.measure_times[symmetric]) auto
  1600       by (intro IJ.measure_times[symmetric]) auto
  1618     finally show "P.\<mu> (?X A) = IJ.\<mu> A" .
  1601     finally show "IJ.\<mu> A = P.\<mu> (?X A)" by (rule sym)
  1619   next
       
  1620     fix k
       
  1621     have k: "\<And>i. i \<in> I \<union> J \<Longrightarrow> F i k \<in> sets (M i)" using F by auto
       
  1622     then have "?X (?F k) = (\<Pi>\<^isub>E i\<in>I. F i k) \<times> (\<Pi>\<^isub>E i\<in>J. F i k)"
       
  1623       using sets_into_space by (auto simp: space_pair_measure) blast+
       
  1624     with k have "P.\<mu> (?X (?F k)) = (\<Prod>i\<in>I. \<mu> i (F i k)) * (\<Prod>i\<in>J. \<mu> i (F i k))"
       
  1625      by (simp add: P.pair_measure_times I.measure_times J.measure_times)
       
  1626     then show "P.\<mu> (?X (?F k)) \<noteq> \<omega>"
       
  1627       using `finite I` F by (simp add: setprod_\<omega>)
       
  1628   qed
  1602   qed
  1629 qed
  1603 qed
  1630 
  1604 
  1631 lemma (in product_sigma_finite) product_positive_integral_fold:
  1605 lemma (in product_sigma_finite) product_positive_integral_fold:
  1632   assumes IJ[simp]: "I \<inter> J = {}" and fin: "finite I" "finite J"
  1606   assumes IJ[simp]: "I \<inter> J = {}" and fin: "finite I" "finite J"
  1749   show ?thesis
  1723   show ?thesis
  1750   proof (subst P.integrable_fst_measurable(2)[of ?f, simplified])
  1724   proof (subst P.integrable_fst_measurable(2)[of ?f, simplified])
  1751     have 1: "sigma_algebra IJ.P" by default
  1725     have 1: "sigma_algebra IJ.P" by default
  1752     have 2: "?M \<in> measurable P.P IJ.P" using measurable_merge[OF IJ] .
  1726     have 2: "?M \<in> measurable P.P IJ.P" using measurable_merge[OF IJ] .
  1753     have 3: "\<And>A. A \<in> sets IJ.P \<Longrightarrow> IJ.\<mu> A = P.\<mu> (?M -` A \<inter> space P.P)"
  1727     have 3: "\<And>A. A \<in> sets IJ.P \<Longrightarrow> IJ.\<mu> A = P.\<mu> (?M -` A \<inter> space P.P)"
  1754       by (rule measure_fold[OF IJ fin, symmetric])
  1728       by (rule measure_fold[OF IJ fin])
  1755     have 4: "integrable (Pi\<^isub>M (I \<union> J) M) f" by fact
  1729     have 4: "integrable (Pi\<^isub>M (I \<union> J) M) f" by fact
  1756     show "integrable P.P ?f"
  1730     show "integrable P.P ?f"
  1757       by (rule P.integral_vimage[where f=f, OF 1 2 3 4])
  1731       by (rule P.integral_vimage[where f=f, OF 1 2 3 4])
  1758     show "integral\<^isup>L IJ.P f = integral\<^isup>L P.P ?f"
  1732     show "integral\<^isup>L IJ.P f = integral\<^isup>L P.P ?f"
  1759       by (rule P.integral_vimage[where f=f, OF 1 2 3 4])
  1733       by (rule P.integral_vimage[where f=f, OF 1 2 3 4])