src/HOL/Probability/Measure_Space.thy
changeset 61609 77b453bd616f
parent 61359 e985b52c3eb3
child 61633 64e6d712af16
equal deleted inserted replaced
61553:933eb9e6a1cc 61609:77b453bd616f
   698   from plus_emeasure[OF sets this] show ?thesis by simp
   698   from plus_emeasure[OF sets this] show ?thesis by simp
   699 qed
   699 qed
   700 
   700 
   701 lemma emeasure_insert_ne:
   701 lemma emeasure_insert_ne:
   702   "A \<noteq> {} \<Longrightarrow> {x} \<in> sets M \<Longrightarrow> A \<in> sets M \<Longrightarrow> x \<notin> A \<Longrightarrow> emeasure M (insert x A) = emeasure M {x} + emeasure M A"
   702   "A \<noteq> {} \<Longrightarrow> {x} \<in> sets M \<Longrightarrow> A \<in> sets M \<Longrightarrow> x \<notin> A \<Longrightarrow> emeasure M (insert x A) = emeasure M {x} + emeasure M A"
   703   by (rule emeasure_insert) 
   703   by (rule emeasure_insert)
   704 
   704 
   705 lemma emeasure_eq_setsum_singleton:
   705 lemma emeasure_eq_setsum_singleton:
   706   assumes "finite S" "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M"
   706   assumes "finite S" "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M"
   707   shows "emeasure M S = (\<Sum>x\<in>S. emeasure M {x})"
   707   shows "emeasure M S = (\<Sum>x\<in>S. emeasure M {x})"
   708   using setsum_emeasure[of "\<lambda>x. {x}" S M] assms
   708   using setsum_emeasure[of "\<lambda>x. {x}" S M] assms
   875     using null_sets by auto
   875     using null_sets by auto
   876   with sets * show "A - B \<in> null_sets M" "A \<union> B \<in> null_sets M"
   876   with sets * show "A - B \<in> null_sets M" "A \<union> B \<in> null_sets M"
   877     by (auto intro!: antisym)
   877     by (auto intro!: antisym)
   878 qed
   878 qed
   879 
   879 
   880 lemma UN_from_nat_into: 
   880 lemma UN_from_nat_into:
   881   assumes I: "countable I" "I \<noteq> {}"
   881   assumes I: "countable I" "I \<noteq> {}"
   882   shows "(\<Union>i\<in>I. N i) = (\<Union>i. N (from_nat_into I i))"
   882   shows "(\<Union>i\<in>I. N i) = (\<Union>i. N (from_nat_into I i))"
   883 proof -
   883 proof -
   884   have "(\<Union>i\<in>I. N i) = \<Union>(N ` range (from_nat_into I))"
   884   have "(\<Union>i\<in>I. N i) = \<Union>(N ` range (from_nat_into I))"
   885     using I by simp
   885     using I by simp
  1098     by (intro null_sets_UN) auto
  1098     by (intro null_sets_UN) auto
  1099   ultimately show "AE x in M. \<forall>i. P i x"
  1099   ultimately show "AE x in M. \<forall>i. P i x"
  1100     unfolding eventually_ae_filter by auto
  1100     unfolding eventually_ae_filter by auto
  1101 qed auto
  1101 qed auto
  1102 
  1102 
  1103 lemma AE_ball_countable: 
  1103 lemma AE_ball_countable:
  1104   assumes [intro]: "countable X"
  1104   assumes [intro]: "countable X"
  1105   shows "(AE x in M. \<forall>y\<in>X. P x y) \<longleftrightarrow> (\<forall>y\<in>X. AE x in M. P x y)"
  1105   shows "(AE x in M. \<forall>y\<in>X. P x y) \<longleftrightarrow> (\<forall>y\<in>X. AE x in M. P x y)"
  1106 proof
  1106 proof
  1107   assume "\<forall>y\<in>X. AE x in M. P x y"
  1107   assume "\<forall>y\<in>X. AE x in M. P x y"
  1108   from this[unfolded eventually_ae_filter Bex_def, THEN bchoice]
  1108   from this[unfolded eventually_ae_filter Bex_def, THEN bchoice]
  1119     unfolding eventually_ae_filter by auto
  1119     unfolding eventually_ae_filter by auto
  1120 qed auto
  1120 qed auto
  1121 
  1121 
  1122 lemma AE_discrete_difference:
  1122 lemma AE_discrete_difference:
  1123   assumes X: "countable X"
  1123   assumes X: "countable X"
  1124   assumes null: "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0" 
  1124   assumes null: "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0"
  1125   assumes sets: "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M"
  1125   assumes sets: "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M"
  1126   shows "AE x in M. x \<notin> X"
  1126   shows "AE x in M. x \<notin> X"
  1127 proof -
  1127 proof -
  1128   have "(\<Union>x\<in>X. {x}) \<in> null_sets M"
  1128   have "(\<Union>x\<in>X. {x}) \<in> null_sets M"
  1129     using assms by (intro null_sets_UN') auto
  1129     using assms by (intro null_sets_UN') auto
  1205   show thesis
  1205   show thesis
  1206   proof cases
  1206   proof cases
  1207     assume "A = {}" with `(\<Union>A) = space M` show thesis
  1207     assume "A = {}" with `(\<Union>A) = space M` show thesis
  1208       by (intro that[of "\<lambda>_. {}"]) auto
  1208       by (intro that[of "\<lambda>_. {}"]) auto
  1209   next
  1209   next
  1210     assume "A \<noteq> {}" 
  1210     assume "A \<noteq> {}"
  1211     show thesis
  1211     show thesis
  1212     proof
  1212     proof
  1213       show "range (from_nat_into A) \<subseteq> sets M"
  1213       show "range (from_nat_into A) \<subseteq> sets M"
  1214         using `A \<noteq> {}` A by auto
  1214         using `A \<noteq> {}` A by auto
  1215       have "(\<Union>i. from_nat_into A i) = \<Union>A"
  1215       have "(\<Union>i. from_nat_into A i) = \<Union>A"
  1362 lemma measure_distr:
  1362 lemma measure_distr:
  1363   "f \<in> measurable M N \<Longrightarrow> S \<in> sets N \<Longrightarrow> measure (distr M N f) S = measure M (f -` S \<inter> space M)"
  1363   "f \<in> measurable M N \<Longrightarrow> S \<in> sets N \<Longrightarrow> measure (distr M N f) S = measure M (f -` S \<inter> space M)"
  1364   by (simp add: emeasure_distr measure_def)
  1364   by (simp add: emeasure_distr measure_def)
  1365 
  1365 
  1366 lemma distr_cong_AE:
  1366 lemma distr_cong_AE:
  1367   assumes 1: "M = K" "sets N = sets L" and 
  1367   assumes 1: "M = K" "sets N = sets L" and
  1368     2: "(AE x in M. f x = g x)" and "f \<in> measurable M N" and "g \<in> measurable K L"
  1368     2: "(AE x in M. f x = g x)" and "f \<in> measurable M N" and "g \<in> measurable K L"
  1369   shows "distr M N f = distr K L g"
  1369   shows "distr M N f = distr K L g"
  1370 proof (rule measure_eqI)
  1370 proof (rule measure_eqI)
  1371   fix A assume "A \<in> sets (distr M N f)"
  1371   fix A assume "A \<in> sets (distr M N f)"
  1372   with assms show "emeasure (distr M N f) A = emeasure (distr K L g) A"
  1372   with assms show "emeasure (distr M N f) A = emeasure (distr K L g) A"
  1711   have prob_some: "\<And> x. x \<in> s \<Longrightarrow> measure M {x} = measure M {SOME y. y \<in> s}" by blast
  1711   have prob_some: "\<And> x. x \<in> s \<Longrightarrow> measure M {x} = measure M {SOME y. y \<in> s}" by blast
  1712   have "measure M s = (\<Sum> x \<in> s. measure M {x})"
  1712   have "measure M s = (\<Sum> x \<in> s. measure M {x})"
  1713     using finite_measure_eq_setsum_singleton[OF s] by simp
  1713     using finite_measure_eq_setsum_singleton[OF s] by simp
  1714   also have "\<dots> = (\<Sum> x \<in> s. measure M {SOME y. y \<in> s})" using prob_some by auto
  1714   also have "\<dots> = (\<Sum> x \<in> s. measure M {SOME y. y \<in> s})" using prob_some by auto
  1715   also have "\<dots> = real (card s) * measure M {(SOME x. x \<in> s)}"
  1715   also have "\<dots> = real (card s) * measure M {(SOME x. x \<in> s)}"
  1716     using setsum_constant assms by (simp add: real_eq_of_nat)
  1716     using setsum_constant assms by simp
  1717   finally show ?thesis by simp
  1717   finally show ?thesis by simp
  1718 qed simp
  1718 qed simp
  1719 
  1719 
  1720 lemma (in finite_measure) measure_real_sum_image_fn:
  1720 lemma (in finite_measure) measure_real_sum_image_fn:
  1721   assumes "e \<in> sets M"
  1721   assumes "e \<in> sets M"
  1742   assumes "A \<in> sets M" "B \<in> sets M"
  1742   assumes "A \<in> sets M" "B \<in> sets M"
  1743   assumes "measure M A = measure M (space M)" "A \<inter> B = {}"
  1743   assumes "measure M A = measure M (space M)" "A \<inter> B = {}"
  1744   shows "measure M B = 0"
  1744   shows "measure M B = 0"
  1745   using measure_space_inter[of B A] assms by (auto simp: ac_simps)
  1745   using measure_space_inter[of B A] assms by (auto simp: ac_simps)
  1746 lemma (in finite_measure) finite_measure_distr:
  1746 lemma (in finite_measure) finite_measure_distr:
  1747   assumes f: "f \<in> measurable M M'" 
  1747   assumes f: "f \<in> measurable M M'"
  1748   shows "finite_measure (distr M M' f)"
  1748   shows "finite_measure (distr M M' f)"
  1749 proof (rule finite_measureI)
  1749 proof (rule finite_measureI)
  1750   have "f -` space M' \<inter> space M = space M" using f by (auto dest: measurable_space)
  1750   have "f -` space M' \<inter> space M = space M" using f by (auto dest: measurable_space)
  1751   with f show "emeasure (distr M M' f) (space (distr M M' f)) \<noteq> \<infinity>" by (auto simp: emeasure_distr)
  1751   with f show "emeasure (distr M M' f) (space (distr M M' f)) \<noteq> \<infinity>" by (auto simp: emeasure_distr)
  1752 qed
  1752 qed
  1793   have additive: "additive (Pow A) ?M"
  1793   have additive: "additive (Pow A) ?M"
  1794     by (auto simp: card_Un_disjoint additive_def)
  1794     by (auto simp: card_Un_disjoint additive_def)
  1795 
  1795 
  1796   interpret ring_of_sets A "Pow A"
  1796   interpret ring_of_sets A "Pow A"
  1797     by (rule ring_of_setsI) auto
  1797     by (rule ring_of_setsI) auto
  1798   show "countably_additive (Pow A) ?M" 
  1798   show "countably_additive (Pow A) ?M"
  1799     unfolding countably_additive_iff_continuous_from_below[OF positive additive]
  1799     unfolding countably_additive_iff_continuous_from_below[OF positive additive]
  1800   proof safe
  1800   proof safe
  1801     fix F :: "nat \<Rightarrow> 'a set" assume "incseq F"
  1801     fix F :: "nat \<Rightarrow> 'a set" assume "incseq F"
  1802     show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)"
  1802     show "(\<lambda>i. ?M (F i)) ----> ?M (\<Union>i. F i)"
  1803     proof cases
  1803     proof cases
  1842         by (rule range_inj_infinite)
  1842         by (rule range_inj_infinite)
  1843       have "infinite (Pow (\<Union>i. F i))"
  1843       have "infinite (Pow (\<Union>i. F i))"
  1844         by (rule infinite_super[OF _ 1]) auto
  1844         by (rule infinite_super[OF _ 1]) auto
  1845       then have "infinite (\<Union>i. F i)"
  1845       then have "infinite (\<Union>i. F i)"
  1846         by auto
  1846         by auto
  1847       
  1847 
  1848       ultimately show ?thesis by auto
  1848       ultimately show ?thesis by auto
  1849     qed
  1849     qed
  1850   qed
  1850   qed
  1851 qed
  1851 qed
  1852 
  1852 
  1973   with assms show ?thesis
  1973   with assms show ?thesis
  1974     unfolding eventually_ae_filter
  1974     unfolding eventually_ae_filter
  1975     by (auto simp add: space_restrict_space null_sets_def sets_restrict_space_iff
  1975     by (auto simp add: space_restrict_space null_sets_def sets_restrict_space_iff
  1976                        emeasure_restrict_space cong: conj_cong
  1976                        emeasure_restrict_space cong: conj_cong
  1977              intro!: ex_cong[where f="\<lambda>X. (\<Omega> \<inter> space M) \<inter> X"])
  1977              intro!: ex_cong[where f="\<lambda>X. (\<Omega> \<inter> space M) \<inter> X"])
  1978 qed  
  1978 qed
  1979 
  1979 
  1980 lemma restrict_restrict_space:
  1980 lemma restrict_restrict_space:
  1981   assumes "A \<inter> space M \<in> sets M" "B \<inter> space M \<in> sets M"
  1981   assumes "A \<inter> space M \<in> sets M" "B \<inter> space M \<in> sets M"
  1982   shows "restrict_space (restrict_space M A) B = restrict_space M (A \<inter> B)" (is "?l = ?r")
  1982   shows "restrict_space (restrict_space M A) B = restrict_space M (A \<inter> B)" (is "?l = ?r")
  1983 proof (rule measure_eqI[symmetric])
  1983 proof (rule measure_eqI[symmetric])
  2034   interpret finite_measure M by fact
  2034   interpret finite_measure M by fact
  2035   show ?thesis
  2035   show ?thesis
  2036     by(rule finite_measureI)(simp add: emeasure_restrict_space A space_restrict_space)
  2036     by(rule finite_measureI)(simp add: emeasure_restrict_space A space_restrict_space)
  2037 qed
  2037 qed
  2038 
  2038 
  2039 lemma restrict_distr: 
  2039 lemma restrict_distr:
  2040   assumes [measurable]: "f \<in> measurable M N"
  2040   assumes [measurable]: "f \<in> measurable M N"
  2041   assumes [simp]: "\<Omega> \<inter> space N \<in> sets N" and restrict: "f \<in> space M \<rightarrow> \<Omega>"
  2041   assumes [simp]: "\<Omega> \<inter> space N \<in> sets N" and restrict: "f \<in> space M \<rightarrow> \<Omega>"
  2042   shows "restrict_space (distr M N f) \<Omega> = distr M (restrict_space N \<Omega>) f"
  2042   shows "restrict_space (distr M N f) \<Omega> = distr M (restrict_space N \<Omega>) f"
  2043   (is "?l = ?r")
  2043   (is "?l = ?r")
  2044 proof (rule measure_eqI)
  2044 proof (rule measure_eqI)
  2051 
  2051 
  2052 lemma measure_eqI_restrict_generator:
  2052 lemma measure_eqI_restrict_generator:
  2053   assumes E: "Int_stable E" "E \<subseteq> Pow \<Omega>" "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X"
  2053   assumes E: "Int_stable E" "E \<subseteq> Pow \<Omega>" "\<And>X. X \<in> E \<Longrightarrow> emeasure M X = emeasure N X"
  2054   assumes sets_eq: "sets M = sets N" and \<Omega>: "\<Omega> \<in> sets M"
  2054   assumes sets_eq: "sets M = sets N" and \<Omega>: "\<Omega> \<in> sets M"
  2055   assumes "sets (restrict_space M \<Omega>) = sigma_sets \<Omega> E"
  2055   assumes "sets (restrict_space M \<Omega>) = sigma_sets \<Omega> E"
  2056   assumes "sets (restrict_space N \<Omega>) = sigma_sets \<Omega> E" 
  2056   assumes "sets (restrict_space N \<Omega>) = sigma_sets \<Omega> E"
  2057   assumes ae: "AE x in M. x \<in> \<Omega>" "AE x in N. x \<in> \<Omega>"
  2057   assumes ae: "AE x in M. x \<in> \<Omega>" "AE x in N. x \<in> \<Omega>"
  2058   assumes A: "countable A" "A \<noteq> {}" "A \<subseteq> E" "\<Union>A = \<Omega>" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>"
  2058   assumes A: "countable A" "A \<noteq> {}" "A \<subseteq> E" "\<Union>A = \<Omega>" "\<And>a. a \<in> A \<Longrightarrow> emeasure M a \<noteq> \<infinity>"
  2059   shows "M = N"
  2059   shows "M = N"
  2060 proof (rule measure_eqI)
  2060 proof (rule measure_eqI)
  2061   fix X assume X: "X \<in> sets M"
  2061   fix X assume X: "X \<in> sets M"
  2087 definition "null_measure M = sigma (space M) (sets M)"
  2087 definition "null_measure M = sigma (space M) (sets M)"
  2088 
  2088 
  2089 lemma space_null_measure[simp]: "space (null_measure M) = space M"
  2089 lemma space_null_measure[simp]: "space (null_measure M) = space M"
  2090   by (simp add: null_measure_def)
  2090   by (simp add: null_measure_def)
  2091 
  2091 
  2092 lemma sets_null_measure[simp, measurable_cong]: "sets (null_measure M) = sets M" 
  2092 lemma sets_null_measure[simp, measurable_cong]: "sets (null_measure M) = sets M"
  2093   by (simp add: null_measure_def)
  2093   by (simp add: null_measure_def)
  2094 
  2094 
  2095 lemma emeasure_null_measure[simp]: "emeasure (null_measure M) X = 0"
  2095 lemma emeasure_null_measure[simp]: "emeasure (null_measure M) X = 0"
  2096   by (cases "X \<in> sets M", rule emeasure_measure_of)
  2096   by (cases "X \<in> sets M", rule emeasure_measure_of)
  2097      (auto simp: positive_def countably_additive_def emeasure_notin_sets null_measure_def
  2097      (auto simp: positive_def countably_additive_def emeasure_notin_sets null_measure_def
  2174   shows space_Sup: "space (Sup A) = space a"
  2174   shows space_Sup: "space (Sup A) = space a"
  2175     and sets_Sup: "sets (Sup A) = sets a"
  2175     and sets_Sup: "sets (Sup A) = sets a"
  2176 proof -
  2176 proof -
  2177   have sets: "(SUP a:A. sets a) = sets a"
  2177   have sets: "(SUP a:A. sets a) = sets a"
  2178   proof (intro antisym SUP_least)
  2178   proof (intro antisym SUP_least)
  2179     fix a' show "a' \<in> A \<Longrightarrow> sets a' \<subseteq> sets a" 
  2179     fix a' show "a' \<in> A \<Longrightarrow> sets a' \<subseteq> sets a"
  2180       using a chainD[OF A, of a a'] by (auto elim!: less_eq_measure.cases)
  2180       using a chainD[OF A, of a a'] by (auto elim!: less_eq_measure.cases)
  2181   qed (insert \<open>a\<in>A\<close>, auto)
  2181   qed (insert \<open>a\<in>A\<close>, auto)
  2182   have space: "(SUP a:A. space a) = space a"
  2182   have space: "(SUP a:A. space a) = space a"
  2183   proof (intro antisym SUP_least)
  2183   proof (intro antisym SUP_least)
  2184     fix a' show "a' \<in> A \<Longrightarrow> space a' \<subseteq> space a" 
  2184     fix a' show "a' \<in> A \<Longrightarrow> space a' \<subseteq> space a"
  2185       using a chainD[OF A, of a a'] by (intro sets_le_imp_space_le) (auto elim!: less_eq_measure.cases)
  2185       using a chainD[OF A, of a a'] by (intro sets_le_imp_space_le) (auto elim!: less_eq_measure.cases)
  2186   qed (insert \<open>a\<in>A\<close>, auto)
  2186   qed (insert \<open>a\<in>A\<close>, auto)
  2187   show "space (Sup A) = space a"
  2187   show "space (Sup A) = space a"
  2188     unfolding Sup_measure_def sets space sets.space_measure_of_eq ..
  2188     unfolding Sup_measure_def sets space sets.space_measure_of_eq ..
  2189   show "sets (Sup A) = sets a"
  2189   show "sets (Sup A) = sets a"