src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy
changeset 67974 3f352a91b45a
parent 67970 8c012a49293a
child 67979 53323937ee25
equal deleted inserted replaced
67971:e9f66b35d636 67974:3f352a91b45a
   837 "LBINT x:A. f" == "CONST set_lebesgue_integral CONST lborel A (\<lambda>x. f)"
   837 "LBINT x:A. f" == "CONST set_lebesgue_integral CONST lborel A (\<lambda>x. f)"
   838 
   838 
   839 lemma set_integral_reflect:
   839 lemma set_integral_reflect:
   840   fixes S and f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}"
   840   fixes S and f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}"
   841   shows "(LBINT x : S. f x) = (LBINT x : {x. - x \<in> S}. f (- x))"
   841   shows "(LBINT x : S. f x) = (LBINT x : {x. - x \<in> S}. f (- x))"
       
   842   unfolding set_lebesgue_integral_def
   842   by (subst lborel_integral_real_affine[where c="-1" and t=0])
   843   by (subst lborel_integral_real_affine[where c="-1" and t=0])
   843      (auto intro!: Bochner_Integration.integral_cong split: split_indicator)
   844      (auto intro!: Bochner_Integration.integral_cong split: split_indicator)
   844 
   845 
   845 lemma borel_integrable_atLeastAtMost':
   846 lemma borel_integrable_atLeastAtMost':
   846   fixes f :: "real \<Rightarrow> 'a::{banach, second_countable_topology}"
   847   fixes f :: "real \<Rightarrow> 'a::{banach, second_countable_topology}"
   847   assumes f: "continuous_on {a..b} f"
   848   assumes f: "continuous_on {a..b} f"
   848   shows "set_integrable lborel {a..b} f" (is "integrable _ ?f")
   849   shows "set_integrable lborel {a..b} f" 
       
   850   unfolding set_integrable_def
   849   by (intro borel_integrable_compact compact_Icc f)
   851   by (intro borel_integrable_compact compact_Icc f)
   850 
   852 
   851 lemma integral_FTC_atLeastAtMost:
   853 lemma integral_FTC_atLeastAtMost:
   852   fixes f :: "real \<Rightarrow> 'a :: euclidean_space"
   854   fixes f :: "real \<Rightarrow> 'a :: euclidean_space"
   853   assumes "a \<le> b"
   855   assumes "a \<le> b"
   855     and f: "continuous_on {a .. b} f"
   857     and f: "continuous_on {a .. b} f"
   856   shows "integral\<^sup>L lborel (\<lambda>x. indicator {a .. b} x *\<^sub>R f x) = F b - F a"
   858   shows "integral\<^sup>L lborel (\<lambda>x. indicator {a .. b} x *\<^sub>R f x) = F b - F a"
   857 proof -
   859 proof -
   858   let ?f = "\<lambda>x. indicator {a .. b} x *\<^sub>R f x"
   860   let ?f = "\<lambda>x. indicator {a .. b} x *\<^sub>R f x"
   859   have "(?f has_integral (\<integral>x. ?f x \<partial>lborel)) UNIV"
   861   have "(?f has_integral (\<integral>x. ?f x \<partial>lborel)) UNIV"
   860     using borel_integrable_atLeastAtMost'[OF f] by (rule has_integral_integral_lborel)
   862     using borel_integrable_atLeastAtMost'[OF f]
       
   863     unfolding set_integrable_def by (rule has_integral_integral_lborel)
   861   moreover
   864   moreover
   862   have "(f has_integral F b - F a) {a .. b}"
   865   have "(f has_integral F b - F a) {a .. b}"
   863     by (intro fundamental_theorem_of_calculus ballI assms) auto
   866     by (intro fundamental_theorem_of_calculus ballI assms) auto
   864   then have "(?f has_integral F b - F a) {a .. b}"
   867   then have "(?f has_integral F b - F a) {a .. b}"
   865     by (subst has_integral_cong[where g=f]) auto
   868     by (subst has_integral_cong[where g=f]) auto
   874   assumes "set_integrable lborel S f"
   877   assumes "set_integrable lborel S f"
   875   shows "f integrable_on S" "LINT x : S | lborel. f x = integral S f"
   878   shows "f integrable_on S" "LINT x : S | lborel. f x = integral S f"
   876 proof -
   879 proof -
   877   let ?f = "\<lambda>x. indicator S x *\<^sub>R f x"
   880   let ?f = "\<lambda>x. indicator S x *\<^sub>R f x"
   878   have "(?f has_integral LINT x : S | lborel. f x) UNIV"
   881   have "(?f has_integral LINT x : S | lborel. f x) UNIV"
   879     by (rule has_integral_integral_lborel) fact
   882     using assms has_integral_integral_lborel 
       
   883     unfolding set_integrable_def set_lebesgue_integral_def by blast
   880   hence 1: "(f has_integral (set_lebesgue_integral lborel S f)) S"
   884   hence 1: "(f has_integral (set_lebesgue_integral lborel S f)) S"
   881     apply (subst has_integral_restrict_UNIV [symmetric])
   885     apply (subst has_integral_restrict_UNIV [symmetric])
   882     apply (rule has_integral_eq)
   886     apply (rule has_integral_eq)
   883     by auto
   887     by auto
   884   thus "f integrable_on S"
   888   thus "f integrable_on S"
   891 
   895 
   892 lemma has_integral_set_lebesgue:
   896 lemma has_integral_set_lebesgue:
   893   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   897   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   894   assumes f: "set_integrable lebesgue S f"
   898   assumes f: "set_integrable lebesgue S f"
   895   shows "(f has_integral (LINT x:S|lebesgue. f x)) S"
   899   shows "(f has_integral (LINT x:S|lebesgue. f x)) S"
   896   using has_integral_integral_lebesgue[OF f]
   900   using has_integral_integral_lebesgue f 
   897   by (simp_all add: indicator_def if_distrib[of "\<lambda>x. x *\<^sub>R f _"] has_integral_restrict_UNIV cong: if_cong)
   901   by (fastforce simp add: set_integrable_def set_lebesgue_integral_def indicator_def if_distrib[of "\<lambda>x. x *\<^sub>R f _"] cong: if_cong)
   898 
   902 
   899 lemma set_lebesgue_integral_eq_integral:
   903 lemma set_lebesgue_integral_eq_integral:
   900   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   904   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   901   assumes f: "set_integrable lebesgue S f"
   905   assumes f: "set_integrable lebesgue S f"
   902   shows "f integrable_on S" "LINT x:S | lebesgue. f x = integral S f"
   906   shows "f integrable_on S" "LINT x:S | lebesgue. f x = integral S f"
   913   where "f absolutely_integrable_on s \<equiv> set_integrable lebesgue s f"
   917   where "f absolutely_integrable_on s \<equiv> set_integrable lebesgue s f"
   914 
   918 
   915 
   919 
   916 lemma absolutely_integrable_on_def:
   920 lemma absolutely_integrable_on_def:
   917   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   921   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   918   shows "f absolutely_integrable_on s \<longleftrightarrow> f integrable_on s \<and> (\<lambda>x. norm (f x)) integrable_on s"
   922   shows "f absolutely_integrable_on S \<longleftrightarrow> f integrable_on S \<and> (\<lambda>x. norm (f x)) integrable_on S"
   919 proof safe
   923 proof safe
   920   assume f: "f absolutely_integrable_on s"
   924   assume f: "f absolutely_integrable_on S"
   921   then have nf: "integrable lebesgue (\<lambda>x. norm (indicator s x *\<^sub>R f x))"
   925   then have nf: "integrable lebesgue (\<lambda>x. norm (indicator S x *\<^sub>R f x))"
   922     by (intro integrable_norm)
   926     using integrable_norm set_integrable_def by blast
   923   note integrable_on_lebesgue[OF f] integrable_on_lebesgue[OF nf]
   927   show "f integrable_on S"
   924   moreover have
   928     by (rule set_lebesgue_integral_eq_integral[OF f])
   925     "(\<lambda>x. indicator s x *\<^sub>R f x) = (\<lambda>x. if x \<in> s then f x else 0)"
   929   have "(\<lambda>x. norm (indicator S x *\<^sub>R f x)) = (\<lambda>x. if x \<in> S then norm (f x) else 0)"
   926     "(\<lambda>x. norm (indicator s x *\<^sub>R f x)) = (\<lambda>x. if x \<in> s then norm (f x) else 0)"
       
   927     by auto
   930     by auto
   928   ultimately show "f integrable_on s" "(\<lambda>x. norm (f x)) integrable_on s"
   931   with integrable_on_lebesgue[OF nf] show "(\<lambda>x. norm (f x)) integrable_on S"
   929     by (simp_all add: integrable_restrict_UNIV)
   932     by (simp add: integrable_restrict_UNIV)
   930 next
   933 next
   931   assume f: "f integrable_on s" and nf: "(\<lambda>x. norm (f x)) integrable_on s"
   934   assume f: "f integrable_on S" and nf: "(\<lambda>x. norm (f x)) integrable_on S"
   932   show "f absolutely_integrable_on s"
   935   show "f absolutely_integrable_on S"
       
   936     unfolding set_integrable_def
   933   proof (rule integrableI_bounded)
   937   proof (rule integrableI_bounded)
   934     show "(\<lambda>x. indicator s x *\<^sub>R f x) \<in> borel_measurable lebesgue"
   938     show "(\<lambda>x. indicator S x *\<^sub>R f x) \<in> borel_measurable lebesgue"
   935       using f has_integral_implies_lebesgue_measurable[of f _ s] by (auto simp: integrable_on_def)
   939       using f has_integral_implies_lebesgue_measurable[of f _ S] by (auto simp: integrable_on_def)
   936     show "(\<integral>\<^sup>+ x. ennreal (norm (indicator s x *\<^sub>R f x)) \<partial>lebesgue) < \<infinity>"
   940     show "(\<integral>\<^sup>+ x. ennreal (norm (indicator S x *\<^sub>R f x)) \<partial>lebesgue) < \<infinity>"
   937       using nf nn_integral_has_integral_lebesgue[of "\<lambda>x. norm (f x)" _ s]
   941       using nf nn_integral_has_integral_lebesgue[of "\<lambda>x. norm (f x)" _ S]
   938       by (auto simp: integrable_on_def nn_integral_completion)
   942       by (auto simp: integrable_on_def nn_integral_completion)
   939   qed
   943   qed
   940 qed
   944 qed
   941   
   945   
   942 lemma absolutely_integrable_on_null [intro]:
   946 lemma absolutely_integrable_on_null [intro]:
   949   shows "f absolutely_integrable_on box a b \<longleftrightarrow>
   953   shows "f absolutely_integrable_on box a b \<longleftrightarrow>
   950          f absolutely_integrable_on cbox a b"
   954          f absolutely_integrable_on cbox a b"
   951   by (auto simp: integrable_on_open_interval absolutely_integrable_on_def)
   955   by (auto simp: integrable_on_open_interval absolutely_integrable_on_def)
   952 
   956 
   953 lemma absolutely_integrable_restrict_UNIV:
   957 lemma absolutely_integrable_restrict_UNIV:
   954   "(\<lambda>x. if x \<in> s then f x else 0) absolutely_integrable_on UNIV \<longleftrightarrow> f absolutely_integrable_on s"
   958   "(\<lambda>x. if x \<in> S then f x else 0) absolutely_integrable_on UNIV \<longleftrightarrow> f absolutely_integrable_on S"
       
   959     unfolding set_integrable_def
   955   by (intro arg_cong2[where f=integrable]) auto
   960   by (intro arg_cong2[where f=integrable]) auto
   956 
   961 
   957 lemma absolutely_integrable_onI:
   962 lemma absolutely_integrable_onI:
   958   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   963   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
   959   shows "f integrable_on s \<Longrightarrow> (\<lambda>x. norm (f x)) integrable_on s \<Longrightarrow> f absolutely_integrable_on s"
   964   shows "f integrable_on S \<Longrightarrow> (\<lambda>x. norm (f x)) integrable_on S \<Longrightarrow> f absolutely_integrable_on S"
   960   unfolding absolutely_integrable_on_def by auto
   965   unfolding absolutely_integrable_on_def by auto
   961 
   966 
   962 lemma nonnegative_absolutely_integrable_1:
   967 lemma nonnegative_absolutely_integrable_1:
   963   fixes f :: "'a :: euclidean_space \<Rightarrow> real"
   968   fixes f :: "'a :: euclidean_space \<Rightarrow> real"
   964   assumes f: "f integrable_on A" and "\<And>x. x \<in> A \<Longrightarrow> 0 \<le> f x"
   969   assumes f: "f integrable_on A" and "\<And>x. x \<in> A \<Longrightarrow> 0 \<le> f x"
   982     unfolding absolutely_integrable_on_def by auto
   987     unfolding absolutely_integrable_on_def by auto
   983 qed
   988 qed
   984 
   989 
   985 lemma lmeasurable_iff_integrable_on: "S \<in> lmeasurable \<longleftrightarrow> (\<lambda>x. 1::real) integrable_on S"
   990 lemma lmeasurable_iff_integrable_on: "S \<in> lmeasurable \<longleftrightarrow> (\<lambda>x. 1::real) integrable_on S"
   986   by (subst absolutely_integrable_on_iff_nonneg[symmetric])
   991   by (subst absolutely_integrable_on_iff_nonneg[symmetric])
   987      (simp_all add: lmeasurable_iff_integrable)
   992      (simp_all add: lmeasurable_iff_integrable set_integrable_def)
   988 
   993 
   989 lemma lmeasure_integral_UNIV: "S \<in> lmeasurable \<Longrightarrow> measure lebesgue S = integral UNIV (indicator S)"
   994 lemma lmeasure_integral_UNIV: "S \<in> lmeasurable \<Longrightarrow> measure lebesgue S = integral UNIV (indicator S)"
   990   by (simp add: lmeasurable_iff_has_integral integral_unique)
   995   by (simp add: lmeasurable_iff_has_integral integral_unique)
   991 
   996 
   992 lemma lmeasure_integral: "S \<in> lmeasurable \<Longrightarrow> measure lebesgue S = integral S (\<lambda>x. 1::real)"
   997 lemma lmeasure_integral: "S \<in> lmeasurable \<Longrightarrow> measure lebesgue S = integral S (\<lambda>x. 1::real)"
  1530 qed
  1535 qed
  1531 
  1536 
  1532 lemma set_integral_norm_bound:
  1537 lemma set_integral_norm_bound:
  1533   fixes f :: "_ \<Rightarrow> 'a :: {banach, second_countable_topology}"
  1538   fixes f :: "_ \<Rightarrow> 'a :: {banach, second_countable_topology}"
  1534   shows "set_integrable M k f \<Longrightarrow> norm (LINT x:k|M. f x) \<le> LINT x:k|M. norm (f x)"
  1539   shows "set_integrable M k f \<Longrightarrow> norm (LINT x:k|M. f x) \<le> LINT x:k|M. norm (f x)"
  1535   using integral_norm_bound[of M "\<lambda>x. indicator k x *\<^sub>R f x"] by simp
  1540   using integral_norm_bound[of M "\<lambda>x. indicator k x *\<^sub>R f x"] by (simp add: set_lebesgue_integral_def)
       
  1541 
  1536 
  1542 
  1537 lemma set_integral_finite_UN_AE:
  1543 lemma set_integral_finite_UN_AE:
  1538   fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}"
  1544   fixes f :: "_ \<Rightarrow> _ :: {banach, second_countable_topology}"
  1539   assumes "finite I"
  1545   assumes "finite I"
  1540     and ae: "\<And>i j. i \<in> I \<Longrightarrow> j \<in> I \<Longrightarrow> AE x in M. (x \<in> A i \<and> x \<in> A j) \<longrightarrow> i = j"
  1546     and ae: "\<And>i j. i \<in> I \<Longrightarrow> j \<in> I \<Longrightarrow> AE x in M. (x \<in> A i \<and> x \<in> A j) \<longrightarrow> i = j"
  1555   then have "AE x\<in>A i in M. \<forall>xa\<in>I'. x \<notin> A xa "
  1561   then have "AE x\<in>A i in M. \<forall>xa\<in>I'. x \<notin> A xa "
  1556     by auto
  1562     by auto
  1557   with insert.hyps insert.IH[symmetric]
  1563   with insert.hyps insert.IH[symmetric]
  1558   show ?case
  1564   show ?case
  1559     by (auto intro!: set_integral_Un_AE sets.finite_UN f set_integrable_UN)
  1565     by (auto intro!: set_integral_Un_AE sets.finite_UN f set_integrable_UN)
  1560 qed simp
  1566 qed (simp add: set_lebesgue_integral_def)
  1561 
  1567 
  1562 lemma set_integrable_norm:
  1568 lemma set_integrable_norm:
  1563   fixes f :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}"
  1569   fixes f :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}"
  1564   assumes f: "set_integrable M k f" shows "set_integrable M k (\<lambda>x. norm (f x))"
  1570   assumes f: "set_integrable M k f" shows "set_integrable M k (\<lambda>x. norm (f x))"
  1565   using integrable_norm[OF f] by simp
  1571   using integrable_norm f by (force simp add: set_integrable_def)
  1566 
  1572  
  1567 lemma absolutely_integrable_bounded_variation:
  1573 lemma absolutely_integrable_bounded_variation:
  1568   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
  1574   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
  1569   assumes f: "f absolutely_integrable_on UNIV"
  1575   assumes f: "f absolutely_integrable_on UNIV"
  1570   obtains B where "\<forall>d. d division_of (\<Union>d) \<longrightarrow> sum (\<lambda>k. norm (integral k f)) d \<le> B"
  1576   obtains B where "\<forall>d. d division_of (\<Union>d) \<longrightarrow> sum (\<lambda>k. norm (integral k f)) d \<le> B"
  1571 proof (rule that[of "integral UNIV (\<lambda>x. norm (f x))"]; safe)
  1577 proof (rule that[of "integral UNIV (\<lambda>x. norm (f x))"]; safe)
  2118 lemma absolutely_integrable_linear:
  2124 lemma absolutely_integrable_linear:
  2119   fixes f :: "'m::euclidean_space \<Rightarrow> 'n::euclidean_space"
  2125   fixes f :: "'m::euclidean_space \<Rightarrow> 'n::euclidean_space"
  2120     and h :: "'n::euclidean_space \<Rightarrow> 'p::euclidean_space"
  2126     and h :: "'n::euclidean_space \<Rightarrow> 'p::euclidean_space"
  2121   shows "f absolutely_integrable_on s \<Longrightarrow> bounded_linear h \<Longrightarrow> (h \<circ> f) absolutely_integrable_on s"
  2127   shows "f absolutely_integrable_on s \<Longrightarrow> bounded_linear h \<Longrightarrow> (h \<circ> f) absolutely_integrable_on s"
  2122   using integrable_bounded_linear[of h lebesgue "\<lambda>x. indicator s x *\<^sub>R f x"]
  2128   using integrable_bounded_linear[of h lebesgue "\<lambda>x. indicator s x *\<^sub>R f x"]
  2123   by (simp add: linear_simps[of h])
  2129   by (simp add: linear_simps[of h] set_integrable_def)
       
  2130 
       
  2131 lemma absolutely_integrable_zero [simp]: "(\<lambda>x. 0) absolutely_integrable_on S"
       
  2132     by (simp add: set_integrable_def)
  2124 
  2133 
  2125 lemma absolutely_integrable_sum:
  2134 lemma absolutely_integrable_sum:
  2126   fixes f :: "'a \<Rightarrow> 'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2135   fixes f :: "'a \<Rightarrow> 'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2127   assumes "finite t" and "\<And>a. a \<in> t \<Longrightarrow> (f a) absolutely_integrable_on s"
  2136   assumes "finite T" and "\<And>a. a \<in> T \<Longrightarrow> (f a) absolutely_integrable_on S"
  2128   shows "(\<lambda>x. sum (\<lambda>a. f a x) t) absolutely_integrable_on s"
  2137   shows "(\<lambda>x. sum (\<lambda>a. f a x) T) absolutely_integrable_on S"
  2129   using assms(1,2) by induct auto
  2138   using assms by induction auto
  2130 
  2139 
  2131 lemma absolutely_integrable_integrable_bound:
  2140 lemma absolutely_integrable_integrable_bound:
  2132   fixes f :: "'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2141   fixes f :: "'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2133   assumes le: "\<forall>x\<in>s. norm (f x) \<le> g x" and f: "f integrable_on s" and g: "g integrable_on s"
  2142   assumes le: "\<And>x. x\<in>S \<Longrightarrow> norm (f x) \<le> g x" and f: "f integrable_on S" and g: "g integrable_on S"
  2134   shows "f absolutely_integrable_on s"
  2143   shows "f absolutely_integrable_on S"
       
  2144     unfolding set_integrable_def
  2135 proof (rule Bochner_Integration.integrable_bound)
  2145 proof (rule Bochner_Integration.integrable_bound)
  2136   show "g absolutely_integrable_on s"
  2146   have "g absolutely_integrable_on S"
  2137     unfolding absolutely_integrable_on_def
  2147     unfolding absolutely_integrable_on_def
  2138   proof
  2148   proof
  2139     show "(\<lambda>x. norm (g x)) integrable_on s"
  2149     show "(\<lambda>x. norm (g x)) integrable_on S"
  2140       using le norm_ge_zero[of "f _"]
  2150       using le norm_ge_zero[of "f _"]
  2141       by (intro integrable_spike_finite[OF _ _ g, of "{}"])
  2151       by (intro integrable_spike_finite[OF _ _ g, of "{}"])
  2142          (auto intro!: abs_of_nonneg intro: order_trans simp del: norm_ge_zero)
  2152          (auto intro!: abs_of_nonneg intro: order_trans simp del: norm_ge_zero)
  2143   qed fact
  2153   qed fact
  2144   show "set_borel_measurable lebesgue s f"
  2154   then show "integrable lebesgue (\<lambda>x. indicat_real S x *\<^sub>R g x)"
       
  2155     by (simp add: set_integrable_def)
       
  2156   show "(\<lambda>x. indicat_real S x *\<^sub>R f x) \<in> borel_measurable lebesgue"
  2145     using f by (auto intro: has_integral_implies_lebesgue_measurable simp: integrable_on_def)
  2157     using f by (auto intro: has_integral_implies_lebesgue_measurable simp: integrable_on_def)
  2146 qed (use le in \<open>auto intro!: always_eventually split: split_indicator\<close>)
  2158 qed (use le in \<open>force intro!: always_eventually split: split_indicator\<close>)
  2147 
  2159 
  2148 subsection \<open>Componentwise\<close>
  2160 subsection \<open>Componentwise\<close>
  2149 
  2161 
  2150 proposition absolutely_integrable_componentwise_iff:
  2162 proposition absolutely_integrable_componentwise_iff:
  2151   shows "f absolutely_integrable_on A \<longleftrightarrow> (\<forall>b\<in>Basis. (\<lambda>x. f x \<bullet> b) absolutely_integrable_on A)"
  2163   shows "f absolutely_integrable_on A \<longleftrightarrow> (\<forall>b\<in>Basis. (\<lambda>x. f x \<bullet> b) absolutely_integrable_on A)"
  2173     by (simp add:  integrable_componentwise_iff [symmetric] ball_conj_distrib * cong: conj_cong)
  2185     by (simp add:  integrable_componentwise_iff [symmetric] ball_conj_distrib * cong: conj_cong)
  2174 qed
  2186 qed
  2175 
  2187 
  2176 lemma absolutely_integrable_componentwise:
  2188 lemma absolutely_integrable_componentwise:
  2177   shows "(\<And>b. b \<in> Basis \<Longrightarrow> (\<lambda>x. f x \<bullet> b) absolutely_integrable_on A) \<Longrightarrow> f absolutely_integrable_on A"
  2189   shows "(\<And>b. b \<in> Basis \<Longrightarrow> (\<lambda>x. f x \<bullet> b) absolutely_integrable_on A) \<Longrightarrow> f absolutely_integrable_on A"
  2178   by (simp add: absolutely_integrable_componentwise_iff)
  2190   using absolutely_integrable_componentwise_iff by blast
  2179 
  2191 
  2180 lemma absolutely_integrable_component:
  2192 lemma absolutely_integrable_component:
  2181   "f absolutely_integrable_on A \<Longrightarrow> (\<lambda>x. f x \<bullet> (b :: 'b :: euclidean_space)) absolutely_integrable_on A"
  2193   "f absolutely_integrable_on A \<Longrightarrow> (\<lambda>x. f x \<bullet> (b :: 'b :: euclidean_space)) absolutely_integrable_on A"
  2182   by (drule absolutely_integrable_linear[OF _ bounded_linear_inner_left[of b]]) (simp add: o_def)
  2194   by (drule absolutely_integrable_linear[OF _ bounded_linear_inner_left[of b]]) (simp add: o_def)
  2183 
  2195 
  2188   shows "(\<lambda>x. c *\<^sub>R f x) absolutely_integrable_on S"
  2200   shows "(\<lambda>x. c *\<^sub>R f x) absolutely_integrable_on S"
  2189 proof -
  2201 proof -
  2190   have "(\<lambda>x. c *\<^sub>R x) o f absolutely_integrable_on S"
  2202   have "(\<lambda>x. c *\<^sub>R x) o f absolutely_integrable_on S"
  2191     apply (rule absolutely_integrable_linear [OF assms])
  2203     apply (rule absolutely_integrable_linear [OF assms])
  2192     by (simp add: bounded_linear_scaleR_right)
  2204     by (simp add: bounded_linear_scaleR_right)
  2193   then show ?thesis by simp
  2205   then show ?thesis
       
  2206     using assms by blast
  2194 qed
  2207 qed
  2195 
  2208 
  2196 lemma absolutely_integrable_scaleR_right:
  2209 lemma absolutely_integrable_scaleR_right:
  2197   assumes "f absolutely_integrable_on S"
  2210   assumes "f absolutely_integrable_on S"
  2198   shows "(\<lambda>x. f x *\<^sub>R c) absolutely_integrable_on S"
  2211   shows "(\<lambda>x. f x *\<^sub>R c) absolutely_integrable_on S"
  2200 
  2213 
  2201 lemma absolutely_integrable_norm:
  2214 lemma absolutely_integrable_norm:
  2202   fixes f :: "'a :: euclidean_space \<Rightarrow> 'b :: euclidean_space"
  2215   fixes f :: "'a :: euclidean_space \<Rightarrow> 'b :: euclidean_space"
  2203   assumes "f absolutely_integrable_on S"
  2216   assumes "f absolutely_integrable_on S"
  2204   shows "(norm o f) absolutely_integrable_on S"
  2217   shows "(norm o f) absolutely_integrable_on S"
  2205   using assms unfolding absolutely_integrable_on_def by auto
  2218   using assms by (simp add: absolutely_integrable_on_def o_def)
  2206     
  2219     
  2207 lemma absolutely_integrable_abs:
  2220 lemma absolutely_integrable_abs:
  2208   fixes f :: "'a :: euclidean_space \<Rightarrow> 'b :: euclidean_space"
  2221   fixes f :: "'a :: euclidean_space \<Rightarrow> 'b :: euclidean_space"
  2209   assumes "f absolutely_integrable_on S"
  2222   assumes "f absolutely_integrable_on S"
  2210   shows "(\<lambda>x. \<Sum>i\<in>Basis. \<bar>f x \<bullet> i\<bar> *\<^sub>R i) absolutely_integrable_on S"
  2223   shows "(\<lambda>x. \<Sum>i\<in>Basis. \<bar>f x \<bullet> i\<bar> *\<^sub>R i) absolutely_integrable_on S"
  2403 
  2416 
  2404 subsection \<open>Dominated convergence\<close>
  2417 subsection \<open>Dominated convergence\<close>
  2405 
  2418 
  2406 lemma dominated_convergence:
  2419 lemma dominated_convergence:
  2407   fixes f :: "nat \<Rightarrow> 'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2420   fixes f :: "nat \<Rightarrow> 'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2408   assumes f: "\<And>k. (f k) integrable_on s" and h: "h integrable_on s"
  2421   assumes f: "\<And>k. (f k) integrable_on S" and h: "h integrable_on S"
  2409     and le: "\<And>k. \<forall>x \<in> s. norm (f k x) \<le> h x"
  2422     and le: "\<And>k x. x \<in> S \<Longrightarrow> norm (f k x) \<le> h x"
  2410     and conv: "\<forall>x \<in> s. (\<lambda>k. f k x) \<longlonglongrightarrow> g x"
  2423     and conv: "\<forall>x \<in> S. (\<lambda>k. f k x) \<longlonglongrightarrow> g x"
  2411   shows "g integrable_on s" "(\<lambda>k. integral s (f k)) \<longlonglongrightarrow> integral s g"
  2424   shows "g integrable_on S" "(\<lambda>k. integral S (f k)) \<longlonglongrightarrow> integral S g"
  2412 proof -
  2425 proof -
  2413   have 3: "h absolutely_integrable_on s"
  2426   have 3: "h absolutely_integrable_on S"
  2414     unfolding absolutely_integrable_on_def
  2427     unfolding absolutely_integrable_on_def
  2415   proof
  2428   proof
  2416     show "(\<lambda>x. norm (h x)) integrable_on s"
  2429     show "(\<lambda>x. norm (h x)) integrable_on S"
  2417     proof (intro integrable_spike_finite[OF _ _ h, of "{}"] ballI)
  2430     proof (intro integrable_spike_finite[OF _ _ h, of "{}"] ballI)
  2418       fix x assume "x \<in> s - {}" then show "norm (h x) = h x"
  2431       fix x assume "x \<in> S - {}" then show "norm (h x) = h x"
  2419         by (metis Diff_empty abs_of_nonneg bot_set_def le norm_ge_zero order_trans real_norm_def)
  2432         by (metis Diff_empty abs_of_nonneg bot_set_def le norm_ge_zero order_trans real_norm_def)
  2420     qed auto
  2433     qed auto
  2421   qed fact
  2434   qed fact
  2422   have 2: "set_borel_measurable lebesgue s (f k)" for k
  2435   have 2: "set_borel_measurable lebesgue S (f k)" for k
       
  2436     unfolding set_borel_measurable_def
  2423     using f by (auto intro: has_integral_implies_lebesgue_measurable simp: integrable_on_def)
  2437     using f by (auto intro: has_integral_implies_lebesgue_measurable simp: integrable_on_def)
  2424   then have 1: "set_borel_measurable lebesgue s g"
  2438   then have 1: "set_borel_measurable lebesgue S g"
       
  2439     unfolding set_borel_measurable_def
  2425     by (rule borel_measurable_LIMSEQ_metric) (use conv in \<open>auto split: split_indicator\<close>)
  2440     by (rule borel_measurable_LIMSEQ_metric) (use conv in \<open>auto split: split_indicator\<close>)
  2426   have 4: "AE x in lebesgue. (\<lambda>i. indicator s x *\<^sub>R f i x) \<longlonglongrightarrow> indicator s x *\<^sub>R g x"
  2441   have 4: "AE x in lebesgue. (\<lambda>i. indicator S x *\<^sub>R f i x) \<longlonglongrightarrow> indicator S x *\<^sub>R g x"
  2427     "AE x in lebesgue. norm (indicator s x *\<^sub>R f k x) \<le> indicator s x *\<^sub>R h x" for k
  2442     "AE x in lebesgue. norm (indicator S x *\<^sub>R f k x) \<le> indicator S x *\<^sub>R h x" for k
  2428     using conv le by (auto intro!: always_eventually split: split_indicator)
  2443     using conv le by (auto intro!: always_eventually split: split_indicator)
  2429 
  2444   have g: "g absolutely_integrable_on S"
  2430   have g: "g absolutely_integrable_on s"
  2445     using 1 2 3 4 unfolding set_borel_measurable_def set_integrable_def    
  2431     using 1 2 3 4 by (rule integrable_dominated_convergence)
  2446     by (rule integrable_dominated_convergence)
  2432   then show "g integrable_on s"
  2447   then show "g integrable_on S"
  2433     by (auto simp: absolutely_integrable_on_def)
  2448     by (auto simp: absolutely_integrable_on_def)
  2434   have "(\<lambda>k. (LINT x:s|lebesgue. f k x)) \<longlonglongrightarrow> (LINT x:s|lebesgue. g x)"
  2449   have "(\<lambda>k. (LINT x:S|lebesgue. f k x)) \<longlonglongrightarrow> (LINT x:S|lebesgue. g x)"
  2435     using 1 2 3 4 by (rule integral_dominated_convergence)
  2450     unfolding set_borel_measurable_def set_lebesgue_integral_def
  2436   then show "(\<lambda>k. integral s (f k)) \<longlonglongrightarrow> integral s g"
  2451     using 1 2 3 4 unfolding set_borel_measurable_def set_lebesgue_integral_def set_integrable_def
       
  2452     by (rule integral_dominated_convergence)
       
  2453   then show "(\<lambda>k. integral S (f k)) \<longlonglongrightarrow> integral S g"
  2437     using g absolutely_integrable_integrable_bound[OF le f h]
  2454     using g absolutely_integrable_integrable_bound[OF le f h]
  2438     by (subst (asm) (1 2) set_lebesgue_integral_eq_integral) auto
  2455     by (subst (asm) (1 2) set_lebesgue_integral_eq_integral) auto
  2439 qed
  2456 qed
  2440 
  2457 
  2441 lemma has_integral_dominated_convergence:
  2458 lemma has_integral_dominated_convergence:
  2442   fixes f :: "nat \<Rightarrow> 'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2459   fixes f :: "nat \<Rightarrow> 'n::euclidean_space \<Rightarrow> 'm::euclidean_space"
  2443   assumes "\<And>k. (f k has_integral y k) s" "h integrable_on s"
  2460   assumes "\<And>k. (f k has_integral y k) S" "h integrable_on S"
  2444     "\<And>k. \<forall>x\<in>s. norm (f k x) \<le> h x" "\<forall>x\<in>s. (\<lambda>k. f k x) \<longlonglongrightarrow> g x"
  2461     "\<And>k. \<forall>x\<in>S. norm (f k x) \<le> h x" "\<forall>x\<in>S. (\<lambda>k. f k x) \<longlonglongrightarrow> g x"
  2445     and x: "y \<longlonglongrightarrow> x"
  2462     and x: "y \<longlonglongrightarrow> x"
  2446   shows "(g has_integral x) s"
  2463   shows "(g has_integral x) S"
  2447 proof -
  2464 proof -
  2448   have int_f: "\<And>k. (f k) integrable_on s"
  2465   have int_f: "\<And>k. (f k) integrable_on S"
  2449     using assms by (auto simp: integrable_on_def)
  2466     using assms by (auto simp: integrable_on_def)
  2450   have "(g has_integral (integral s g)) s"
  2467   have "(g has_integral (integral S g)) S"
  2451     by (intro integrable_integral dominated_convergence[OF int_f assms(2)]) fact+
  2468     by (metis assms(2-4) dominated_convergence(1) has_integral_integral int_f)
  2452   moreover have "integral s g = x"
  2469   moreover have "integral S g = x"
  2453   proof (rule LIMSEQ_unique)
  2470   proof (rule LIMSEQ_unique)
  2454     show "(\<lambda>i. integral s (f i)) \<longlonglongrightarrow> x"
  2471     show "(\<lambda>i. integral S (f i)) \<longlonglongrightarrow> x"
  2455       using integral_unique[OF assms(1)] x by simp
  2472       using integral_unique[OF assms(1)] x by simp
  2456     show "(\<lambda>i. integral s (f i)) \<longlonglongrightarrow> integral s g"
  2473     show "(\<lambda>i. integral S (f i)) \<longlonglongrightarrow> integral S g"
  2457       by (intro dominated_convergence[OF int_f assms(2)]) fact+
  2474       by (metis assms(2) assms(3) assms(4) dominated_convergence(2) int_f)
  2458   qed
  2475   qed
  2459   ultimately show ?thesis
  2476   ultimately show ?thesis
  2460     by simp
  2477     by simp
  2461 qed
  2478 qed
  2462 
  2479 
  2718     using nonneg
  2735     using nonneg
  2719     by (intro absolutely_integrable_onI intl integrable_eq[OF intl]) simp
  2736     by (intro absolutely_integrable_onI intl integrable_eq[OF intl]) simp
  2720   then have "integral (closure S) f = set_lebesgue_integral lebesgue (closure S) f"
  2737   then have "integral (closure S) f = set_lebesgue_integral lebesgue (closure S) f"
  2721     by (intro set_lebesgue_integral_eq_integral(2)[symmetric])
  2738     by (intro set_lebesgue_integral_eq_integral(2)[symmetric])
  2722   also have "\<dots> = 0 \<longleftrightarrow> (AE x in lebesgue. indicator (closure S) x *\<^sub>R f x = 0)"
  2739   also have "\<dots> = 0 \<longleftrightarrow> (AE x in lebesgue. indicator (closure S) x *\<^sub>R f x = 0)"
  2723     by (rule integral_nonneg_eq_0_iff_AE[OF af]) (use nonneg in \<open>auto simp: indicator_def\<close>)
  2740     unfolding set_lebesgue_integral_def
       
  2741   proof (rule integral_nonneg_eq_0_iff_AE)
       
  2742     show "integrable lebesgue (\<lambda>x. indicat_real (closure S) x *\<^sub>R f x)"
       
  2743       by (metis af set_integrable_def)
       
  2744   qed (use nonneg in \<open>auto simp: indicator_def\<close>)
  2724   also have "\<dots> \<longleftrightarrow> (AE x in lebesgue. x \<in> {x. x \<in> closure S \<longrightarrow> f x = 0})"
  2745   also have "\<dots> \<longleftrightarrow> (AE x in lebesgue. x \<in> {x. x \<in> closure S \<longrightarrow> f x = 0})"
  2725     by (auto simp: indicator_def)
  2746     by (auto simp: indicator_def)
  2726   finally have "(AE x in lebesgue. x \<in> {x. x \<in> closure S \<longrightarrow> f x = 0})" by simp
  2747   finally have "(AE x in lebesgue. x \<in> {x. x \<in> closure S \<longrightarrow> f x = 0})" by simp
  2727   moreover have "(AE x in lebesgue. x \<in> - frontier S)"
  2748   moreover have "(AE x in lebesgue. x \<in> - frontier S)"
  2728     using zero
  2749     using zero