equal
deleted
inserted
replaced
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" |