src/HOL/Probability/Lebesgue_Measure.thy
changeset 63540 f8652d0534fa
parent 63262 e497387de7af
child 63566 e5abbdee461a
equal deleted inserted replaced
63539:70d4d9e5707b 63540:f8652d0534fa
    73             using psubset.prems(2)[OF \<open>m\<in>S\<close>] \<open>l m < r m\<close> by auto
    73             using psubset.prems(2)[OF \<open>m\<in>S\<close>] \<open>l m < r m\<close> by auto
    74         next
    74         next
    75           fix i assume "i \<in> S - {m}"
    75           fix i assume "i \<in> S - {m}"
    76           then have i: "i \<in> S" "i \<noteq> m" by auto
    76           then have i: "i \<in> S" "i \<noteq> m" by auto
    77           { assume i': "l i < r i" "l i < r m"
    77           { assume i': "l i < r i" "l i < r m"
    78             moreover with \<open>finite S\<close> i m have "l m \<le> l i"
    78             with \<open>finite S\<close> i m have "l m \<le> l i"
    79               by auto
    79               by auto
    80             ultimately have "{l i <.. r i} \<inter> {l m <.. r m} \<noteq> {}"
    80             with i' have "{l i <.. r i} \<inter> {l m <.. r m} \<noteq> {}"
    81               by auto
    81               by auto
    82             then have False
    82             then have False
    83               using disjoint_family_onD[OF disj, of i m] i by auto }
    83               using disjoint_family_onD[OF disj, of i m] i by auto }
    84           then have "l i \<noteq> r i \<Longrightarrow> r m \<le> l i"
    84           then have "l i \<noteq> r i \<Longrightarrow> r m \<le> l i"
    85             unfolding not_less[symmetric] using l_r[of i] by auto
    85             unfolding not_less[symmetric] using l_r[of i] by auto
   850   fixes f::"'a::euclidean_space \<Rightarrow> real"
   850   fixes f::"'a::euclidean_space \<Rightarrow> real"
   851   assumes f: "f \<in> borel_measurable borel" "\<And>x. 0 \<le> f x" "(\<integral>\<^sup>+x. f x \<partial>lborel) = ennreal r" "0 \<le> r"
   851   assumes f: "f \<in> borel_measurable borel" "\<And>x. 0 \<le> f x" "(\<integral>\<^sup>+x. f x \<partial>lborel) = ennreal r" "0 \<le> r"
   852   shows "(f has_integral r) UNIV"
   852   shows "(f has_integral r) UNIV"
   853 using f proof (induct f arbitrary: r rule: borel_measurable_induct_real)
   853 using f proof (induct f arbitrary: r rule: borel_measurable_induct_real)
   854   case (set A)
   854   case (set A)
   855   moreover then have "((\<lambda>x. 1) has_integral measure lborel A) A"
   855   then have "((\<lambda>x. 1) has_integral measure lborel A) A"
   856     by (intro has_integral_measure_lborel) (auto simp: ennreal_indicator)
   856     by (intro has_integral_measure_lborel) (auto simp: ennreal_indicator)
   857   ultimately show ?case
   857   with set show ?case
   858     by (simp add: ennreal_indicator measure_def) (simp add: indicator_def)
   858     by (simp add: ennreal_indicator measure_def) (simp add: indicator_def)
   859 next
   859 next
   860   case (mult g c)
   860   case (mult g c)
   861   then have "ennreal c * (\<integral>\<^sup>+ x. g x \<partial>lborel) = ennreal r"
   861   then have "ennreal c * (\<integral>\<^sup>+ x. g x \<partial>lborel) = ennreal r"
   862     by (subst nn_integral_cmult[symmetric]) (auto simp: ennreal_mult)
   862     by (subst nn_integral_cmult[symmetric]) (auto simp: ennreal_mult)
   866        (auto split: if_split_asm simp: ennreal_mult_top ennreal_mult[symmetric])
   866        (auto split: if_split_asm simp: ennreal_mult_top ennreal_mult[symmetric])
   867   with mult show ?case
   867   with mult show ?case
   868     by (auto intro!: has_integral_cmult_real)
   868     by (auto intro!: has_integral_cmult_real)
   869 next
   869 next
   870   case (add g h)
   870   case (add g h)
   871   moreover
       
   872   then have "(\<integral>\<^sup>+ x. h x + g x \<partial>lborel) = (\<integral>\<^sup>+ x. h x \<partial>lborel) + (\<integral>\<^sup>+ x. g x \<partial>lborel)"
   871   then have "(\<integral>\<^sup>+ x. h x + g x \<partial>lborel) = (\<integral>\<^sup>+ x. h x \<partial>lborel) + (\<integral>\<^sup>+ x. g x \<partial>lborel)"
   873     by (simp add: nn_integral_add)
   872     by (simp add: nn_integral_add)
   874   with add obtain a b where "0 \<le> a" "0 \<le> b" "(\<integral>\<^sup>+ x. h x \<partial>lborel) = ennreal a" "(\<integral>\<^sup>+ x. g x \<partial>lborel) = ennreal b" "r = a + b"
   873   with add obtain a b where "0 \<le> a" "0 \<le> b" "(\<integral>\<^sup>+ x. h x \<partial>lborel) = ennreal a" "(\<integral>\<^sup>+ x. g x \<partial>lborel) = ennreal b" "r = a + b"
   875     by (cases "\<integral>\<^sup>+ x. h x \<partial>lborel" "\<integral>\<^sup>+ x. g x \<partial>lborel" rule: ennreal2_cases)
   874     by (cases "\<integral>\<^sup>+ x. h x \<partial>lborel" "\<integral>\<^sup>+ x. g x \<partial>lborel" rule: ennreal2_cases)
   876        (auto simp: add_top nn_integral_add top_add ennreal_plus[symmetric] simp del: ennreal_plus)
   875        (auto simp: add_top nn_integral_add top_add ennreal_plus[symmetric] simp del: ennreal_plus)
   877   ultimately show ?case
   876   with add show ?case
   878     by (auto intro!: has_integral_add)
   877     by (auto intro!: has_integral_add)
   879 next
   878 next
   880   case (seq U)
   879   case (seq U)
   881   note seq(1)[measurable] and f[measurable]
   880   note seq(1)[measurable] and f[measurable]
   882 
   881 
  1018 
  1017 
  1019 lemma has_integral_iff_emeasure_lborel:
  1018 lemma has_integral_iff_emeasure_lborel:
  1020   fixes A :: "'a::euclidean_space set"
  1019   fixes A :: "'a::euclidean_space set"
  1021   assumes A[measurable]: "A \<in> sets borel" and [simp]: "0 \<le> r"
  1020   assumes A[measurable]: "A \<in> sets borel" and [simp]: "0 \<le> r"
  1022   shows "((\<lambda>x. 1) has_integral r) A \<longleftrightarrow> emeasure lborel A = ennreal r"
  1021   shows "((\<lambda>x. 1) has_integral r) A \<longleftrightarrow> emeasure lborel A = ennreal r"
  1023 proof cases
  1022 proof (cases "emeasure lborel A = \<infinity>")
  1024   assume emeasure_A: "emeasure lborel A = \<infinity>"
  1023   case emeasure_A: True
  1025   have "\<not> (\<lambda>x. 1::real) integrable_on A"
  1024   have "\<not> (\<lambda>x. 1::real) integrable_on A"
  1026   proof
  1025   proof
  1027     assume int: "(\<lambda>x. 1::real) integrable_on A"
  1026     assume int: "(\<lambda>x. 1::real) integrable_on A"
  1028     then have "(indicator A::'a \<Rightarrow> real) integrable_on UNIV"
  1027     then have "(indicator A::'a \<Rightarrow> real) integrable_on UNIV"
  1029       unfolding indicator_def[abs_def] integrable_restrict_univ .
  1028       unfolding indicator_def[abs_def] integrable_restrict_univ .
  1033       by (simp add: ennreal_indicator)
  1032       by (simp add: ennreal_indicator)
  1034   qed
  1033   qed
  1035   with emeasure_A show ?thesis
  1034   with emeasure_A show ?thesis
  1036     by auto
  1035     by auto
  1037 next
  1036 next
  1038   assume "emeasure lborel A \<noteq> \<infinity>"
  1037   case False
  1039   moreover then have "((\<lambda>x. 1) has_integral measure lborel A) A"
  1038   then have "((\<lambda>x. 1) has_integral measure lborel A) A"
  1040     by (simp add: has_integral_measure_lborel less_top)
  1039     by (simp add: has_integral_measure_lborel less_top)
  1041   ultimately show ?thesis
  1040   with False show ?thesis
  1042     by (auto simp: emeasure_eq_ennreal_measure has_integral_unique)
  1041     by (auto simp: emeasure_eq_ennreal_measure has_integral_unique)
  1043 qed
  1042 qed
  1044 
  1043 
  1045 lemma has_integral_integral_real:
  1044 lemma has_integral_integral_real:
  1046   fixes f::"'a::euclidean_space \<Rightarrow> real"
  1045   fixes f::"'a::euclidean_space \<Rightarrow> real"