src/HOL/Probability/Measure.thy
changeset 41831 91a2b435dd7a
parent 41706 a207a858d1f6
child 41981 cdf7693bbe08
equal deleted inserted replaced
41830:719b0a517c33 41831:91a2b435dd7a
    13   "\<And>X. measure \<lparr> space = T, sets = A, \<dots> = algebra.more X \<rparr> = measure X"
    13   "\<And>X. measure \<lparr> space = T, sets = A, \<dots> = algebra.more X \<rparr> = measure X"
    14   unfolding measure_space.splits by simp
    14   unfolding measure_space.splits by simp
    15 
    15 
    16 lemma measure_sigma[simp]: "measure (sigma A) = measure A"
    16 lemma measure_sigma[simp]: "measure (sigma A) = measure A"
    17   unfolding sigma_def by simp
    17   unfolding sigma_def by simp
       
    18 
       
    19 lemma algebra_measure_update[simp]:
       
    20   "algebra (M'\<lparr>measure := m\<rparr>) \<longleftrightarrow> algebra M'"
       
    21   unfolding algebra_def by simp
       
    22 
       
    23 lemma sigma_algebra_measure_update[simp]:
       
    24   "sigma_algebra (M'\<lparr>measure := m\<rparr>) \<longleftrightarrow> sigma_algebra M'"
       
    25   unfolding sigma_algebra_def sigma_algebra_axioms_def by simp
       
    26 
       
    27 lemma finite_sigma_algebra_measure_update[simp]:
       
    28   "finite_sigma_algebra (M'\<lparr>measure := m\<rparr>) \<longleftrightarrow> finite_sigma_algebra M'"
       
    29   unfolding finite_sigma_algebra_def finite_sigma_algebra_axioms_def by simp
       
    30 
       
    31 lemma measurable_cancel_measure[simp]:
       
    32   "measurable M1 (M2\<lparr>measure := m2\<rparr>) = measurable M1 M2"
       
    33   "measurable (M2\<lparr>measure := m1\<rparr>) M1 = measurable M2 M1"
       
    34   unfolding measurable_def by auto
    18 
    35 
    19 lemma inj_on_image_eq_iff:
    36 lemma inj_on_image_eq_iff:
    20   assumes "inj_on f S"
    37   assumes "inj_on f S"
    21   assumes "A \<subseteq> S" "B \<subseteq> S"
    38   assumes "A \<subseteq> S" "B \<subseteq> S"
    22   shows "(f ` A = f ` B) \<longleftrightarrow> (A = B)"
    39   shows "(f ` A = f ` B) \<longleftrightarrow> (A = B)"
   622   then have "(\<lambda>i. \<mu> (A i \<inter> X)) \<up> \<mu> X" "(\<lambda>i. \<nu> (A i \<inter> X)) \<up> \<nu> X"
   639   then have "(\<lambda>i. \<mu> (A i \<inter> X)) \<up> \<mu> X" "(\<lambda>i. \<nu> (A i \<inter> X)) \<up> \<nu> X"
   623     using `X \<in> sets (sigma E)` A by (auto intro!: M.measure_up N.measure_up M.Int simp: subset_eq)
   640     using `X \<in> sets (sigma E)` A by (auto intro!: M.measure_up N.measure_up M.Int simp: subset_eq)
   624   ultimately show ?thesis by (simp add: isoton_def)
   641   ultimately show ?thesis by (simp add: isoton_def)
   625 qed
   642 qed
   626 
   643 
   627 lemma (in measure_space) measure_space_vimage:
       
   628   fixes M' :: "('c, 'd) measure_space_scheme"
       
   629   assumes T: "sigma_algebra M'" "T \<in> measurable M M'"
       
   630     and \<nu>: "\<And>A. A \<in> sets M' \<Longrightarrow> measure M' A = \<mu> (T -` A \<inter> space M)"
       
   631   shows "measure_space M'"
       
   632 proof -
       
   633   interpret M': sigma_algebra M' by fact
       
   634   show ?thesis
       
   635   proof
       
   636     show "measure M' {} = 0" using \<nu>[of "{}"] by simp
       
   637 
       
   638     show "countably_additive M' (measure M')"
       
   639     proof (intro countably_additiveI)
       
   640       fix A :: "nat \<Rightarrow> 'c set" assume "range A \<subseteq> sets M'" "disjoint_family A"
       
   641       then have A: "\<And>i. A i \<in> sets M'" "(\<Union>i. A i) \<in> sets M'" by auto
       
   642       then have *: "range (\<lambda>i. T -` (A i) \<inter> space M) \<subseteq> sets M"
       
   643         using `T \<in> measurable M M'` by (auto simp: measurable_def)
       
   644       moreover have "(\<Union>i. T -`  A i \<inter> space M) \<in> sets M"
       
   645         using * by blast
       
   646       moreover have **: "disjoint_family (\<lambda>i. T -` A i \<inter> space M)"
       
   647         using `disjoint_family A` by (auto simp: disjoint_family_on_def)
       
   648       ultimately show "(\<Sum>\<^isub>\<infinity> i. measure M' (A i)) = measure M' (\<Union>i. A i)"
       
   649         using measure_countably_additive[OF _ **] A
       
   650         by (auto simp: comp_def vimage_UN \<nu>)
       
   651     qed
       
   652   qed
       
   653 qed
       
   654 
       
   655 lemma measure_unique_Int_stable_vimage:
       
   656   fixes A :: "nat \<Rightarrow> 'a set"
       
   657   assumes E: "Int_stable E"
       
   658   and A: "range A \<subseteq> sets E" "A \<up> space E" "\<And>i. measure M (A i) \<noteq> \<omega>"
       
   659   and N: "measure_space N" "T \<in> measurable N M"
       
   660   and M: "measure_space M" "sets (sigma E) = sets M" "space E = space M"
       
   661   and eq: "\<And>X. X \<in> sets E \<Longrightarrow> measure M X = measure N (T -` X \<inter> space N)"
       
   662   assumes X: "X \<in> sets (sigma E)"
       
   663   shows "measure M X = measure N (T -` X \<inter> space N)"
       
   664 proof (rule measure_unique_Int_stable[OF E A(1,2) _ _ eq _ X])
       
   665   interpret M: measure_space M by fact
       
   666   interpret N: measure_space N by fact
       
   667   let "?T X" = "T -` X \<inter> space N"
       
   668   show "measure_space \<lparr>space = space E, sets = sets (sigma E), measure = measure M\<rparr>"
       
   669     by (rule M.measure_space_cong) (auto simp: M)
       
   670   show "measure_space \<lparr>space = space E, sets = sets (sigma E), measure = \<lambda>X. measure N (?T X)\<rparr>" (is "measure_space ?E")
       
   671   proof (rule N.measure_space_vimage)
       
   672     show "sigma_algebra ?E"
       
   673       by (rule M.sigma_algebra_cong) (auto simp: M)
       
   674     show "T \<in> measurable N ?E"
       
   675       using `T \<in> measurable N M` by (auto simp: M measurable_def)
       
   676   qed simp
       
   677   show "\<And>i. M.\<mu> (A i) \<noteq> \<omega>" by fact
       
   678 qed
       
   679 
       
   680 section "@{text \<mu>}-null sets"
   644 section "@{text \<mu>}-null sets"
   681 
   645 
   682 abbreviation (in measure_space) "null_sets \<equiv> {N\<in>sets M. \<mu> N = 0}"
   646 abbreviation (in measure_space) "null_sets \<equiv> {N\<in>sets M. \<mu> N = 0}"
   683 
   647 
   684 lemma (in measure_space) null_sets_Un[intro]:
   648 lemma (in measure_space) null_sets_Un[intro]:
   989       using F by (auto simp: setsum_\<omega>)
   953       using F by (auto simp: setsum_\<omega>)
   990     finally show "\<mu> (\<Union> i\<le>n. F i) \<noteq> \<omega>" by simp
   954     finally show "\<mu> (\<Union> i\<le>n. F i) \<noteq> \<omega>" by simp
   991   qed force+
   955   qed force+
   992 qed
   956 qed
   993 
   957 
       
   958 section {* Measure preserving *}
       
   959 
       
   960 definition "measure_preserving A B =
       
   961     {f \<in> measurable A B. (\<forall>y \<in> sets B. measure A (f -` y \<inter> space A) = measure B y)}"
       
   962 
       
   963 lemma measure_preservingI[intro?]:
       
   964   assumes "f \<in> measurable A B"
       
   965     and "\<And>y. y \<in> sets B \<Longrightarrow> measure A (f -` y \<inter> space A) = measure B y"
       
   966   shows "f \<in> measure_preserving A B"
       
   967   unfolding measure_preserving_def using assms by auto
       
   968 
       
   969 lemma (in measure_space) measure_space_vimage:
       
   970   fixes M' :: "('c, 'd) measure_space_scheme"
       
   971   assumes T: "sigma_algebra M'" "T \<in> measure_preserving M M'"
       
   972   shows "measure_space M'"
       
   973 proof -
       
   974   interpret M': sigma_algebra M' by fact
       
   975   show ?thesis
       
   976   proof
       
   977     show "measure M' {} = 0" using T by (force simp: measure_preserving_def)
       
   978 
       
   979     show "countably_additive M' (measure M')"
       
   980     proof (intro countably_additiveI)
       
   981       fix A :: "nat \<Rightarrow> 'c set" assume "range A \<subseteq> sets M'" "disjoint_family A"
       
   982       then have A: "\<And>i. A i \<in> sets M'" "(\<Union>i. A i) \<in> sets M'" by auto
       
   983       then have *: "range (\<lambda>i. T -` (A i) \<inter> space M) \<subseteq> sets M"
       
   984         using T by (auto simp: measurable_def measure_preserving_def)
       
   985       moreover have "(\<Union>i. T -`  A i \<inter> space M) \<in> sets M"
       
   986         using * by blast
       
   987       moreover have **: "disjoint_family (\<lambda>i. T -` A i \<inter> space M)"
       
   988         using `disjoint_family A` by (auto simp: disjoint_family_on_def)
       
   989       ultimately show "(\<Sum>\<^isub>\<infinity> i. measure M' (A i)) = measure M' (\<Union>i. A i)"
       
   990         using measure_countably_additive[OF _ **] A T
       
   991         by (auto simp: comp_def vimage_UN measure_preserving_def)
       
   992     qed
       
   993   qed
       
   994 qed
       
   995 
       
   996 lemma (in measure_space) almost_everywhere_vimage:
       
   997   assumes T: "sigma_algebra M'" "T \<in> measure_preserving M M'"
       
   998     and AE: "measure_space.almost_everywhere M' P"
       
   999   shows "AE x. P (T x)"
       
  1000 proof -
       
  1001   interpret M': measure_space M' using T by (rule measure_space_vimage)
       
  1002   from AE[THEN M'.AE_E] guess N .
       
  1003   then show ?thesis
       
  1004     unfolding almost_everywhere_def M'.almost_everywhere_def
       
  1005     using T(2) unfolding measurable_def measure_preserving_def
       
  1006     by (intro bexI[of _ "T -` N \<inter> space M"]) auto
       
  1007 qed
       
  1008 
       
  1009 lemma measure_unique_Int_stable_vimage:
       
  1010   fixes A :: "nat \<Rightarrow> 'a set"
       
  1011   assumes E: "Int_stable E"
       
  1012   and A: "range A \<subseteq> sets E" "A \<up> space E" "\<And>i. measure M (A i) \<noteq> \<omega>"
       
  1013   and N: "measure_space N" "T \<in> measurable N M"
       
  1014   and M: "measure_space M" "sets (sigma E) = sets M" "space E = space M"
       
  1015   and eq: "\<And>X. X \<in> sets E \<Longrightarrow> measure M X = measure N (T -` X \<inter> space N)"
       
  1016   assumes X: "X \<in> sets (sigma E)"
       
  1017   shows "measure M X = measure N (T -` X \<inter> space N)"
       
  1018 proof (rule measure_unique_Int_stable[OF E A(1,2) _ _ eq _ X])
       
  1019   interpret M: measure_space M by fact
       
  1020   interpret N: measure_space N by fact
       
  1021   let "?T X" = "T -` X \<inter> space N"
       
  1022   show "measure_space \<lparr>space = space E, sets = sets (sigma E), measure = measure M\<rparr>"
       
  1023     by (rule M.measure_space_cong) (auto simp: M)
       
  1024   show "measure_space \<lparr>space = space E, sets = sets (sigma E), measure = \<lambda>X. measure N (?T X)\<rparr>" (is "measure_space ?E")
       
  1025   proof (rule N.measure_space_vimage)
       
  1026     show "sigma_algebra ?E"
       
  1027       by (rule M.sigma_algebra_cong) (auto simp: M)
       
  1028     show "T \<in> measure_preserving N ?E"
       
  1029       using `T \<in> measurable N M` by (auto simp: M measurable_def measure_preserving_def)
       
  1030   qed
       
  1031   show "\<And>i. M.\<mu> (A i) \<noteq> \<omega>" by fact
       
  1032 qed
       
  1033 
       
  1034 lemma (in measure_space) measure_preserving_Int_stable:
       
  1035   fixes A :: "nat \<Rightarrow> 'a set"
       
  1036   assumes E: "Int_stable E" "range A \<subseteq> sets E" "A \<up> space E" "\<And>i. measure E (A i) \<noteq> \<omega>"
       
  1037   and N: "measure_space (sigma E)"
       
  1038   and T: "T \<in> measure_preserving M E"
       
  1039   shows "T \<in> measure_preserving M (sigma E)"
       
  1040 proof
       
  1041   interpret E: measure_space "sigma E" by fact
       
  1042   show "T \<in> measurable M (sigma E)"
       
  1043     using T E.sets_into_space
       
  1044     by (intro measurable_sigma) (auto simp: measure_preserving_def measurable_def)
       
  1045   fix X assume "X \<in> sets (sigma E)"
       
  1046   show "\<mu> (T -` X \<inter> space M) = E.\<mu> X"
       
  1047   proof (rule measure_unique_Int_stable_vimage[symmetric])
       
  1048     show "sets (sigma E) = sets (sigma E)" "space E = space (sigma E)"
       
  1049       "\<And>i. E.\<mu> (A i) \<noteq> \<omega>" using E by auto
       
  1050     show "measure_space M" by default
       
  1051   next
       
  1052     fix X assume "X \<in> sets E" then show "E.\<mu> X = \<mu> (T -` X \<inter> space M)"
       
  1053       using T unfolding measure_preserving_def by auto
       
  1054   qed fact+
       
  1055 qed
       
  1056 
   994 section "Real measure values"
  1057 section "Real measure values"
   995 
  1058 
   996 lemma (in measure_space) real_measure_Union:
  1059 lemma (in measure_space) real_measure_Union:
   997   assumes finite: "\<mu> A \<noteq> \<omega>" "\<mu> B \<noteq> \<omega>"
  1060   assumes finite: "\<mu> A \<noteq> \<omega>" "\<mu> B \<noteq> \<omega>"
   998   and measurable: "A \<in> sets M" "B \<in> sets M" "A \<inter> B = {}"
  1061   and measurable: "A \<in> sets M" "B \<in> sets M" "A \<inter> B = {}"
  1227   assumes "S \<in> sets M" "T \<in> sets M"
  1290   assumes "S \<in> sets M" "T \<in> sets M"
  1228   assumes T: "\<mu> T = \<mu> (space M)"
  1291   assumes T: "\<mu> T = \<mu> (space M)"
  1229   shows "\<mu> (S \<inter> T) = \<mu> S"
  1292   shows "\<mu> (S \<inter> T) = \<mu> S"
  1230   using measure_inter_full_set[OF assms(1,2) finite_measure assms(3)] assms
  1293   using measure_inter_full_set[OF assms(1,2) finite_measure assms(3)] assms
  1231   by auto
  1294   by auto
  1232 
       
  1233 section {* Measure preserving *}
       
  1234 
       
  1235 definition "measure_preserving A B =
       
  1236     {f \<in> measurable A B. (\<forall>y \<in> sets B. measure A (f -` y \<inter> space A) = measure B y)}"
       
  1237 
  1295 
  1238 lemma (in finite_measure) measure_preserving_lift:
  1296 lemma (in finite_measure) measure_preserving_lift:
  1239   fixes f :: "'a \<Rightarrow> 'c" and A :: "('c, 'd) measure_space_scheme"
  1297   fixes f :: "'a \<Rightarrow> 'c" and A :: "('c, 'd) measure_space_scheme"
  1240   assumes "algebra A" "finite_measure (sigma A)" (is "finite_measure ?sA")
  1298   assumes "algebra A" "finite_measure (sigma A)" (is "finite_measure ?sA")
  1241   assumes fmp: "f \<in> measure_preserving M A"
  1299   assumes fmp: "f \<in> measure_preserving M A"