a few general lemmas
authorpaulson <lp15@cam.ac.uk>
Wed May 15 14:43:32 2019 +0100 (5 days ago ago)
changeset 70455f7630118814c
parent 70454 4065e3b0e5bf
child 70456 1d564a895296
a few general lemmas
src/HOL/Analysis/Bochner_Integration.thy
src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy
src/HOL/Analysis/Lebesgue_Measure.thy
src/HOL/Library/Extended_Nonnegative_Real.thy
     1.1 --- a/src/HOL/Analysis/Bochner_Integration.thy	Wed May 15 12:47:15 2019 +0100
     1.2 +++ b/src/HOL/Analysis/Bochner_Integration.thy	Wed May 15 14:43:32 2019 +0100
     1.3 @@ -1932,6 +1932,24 @@
     1.4      integral\<^sup>L M f \<le> integral\<^sup>L M g"
     1.5    by (intro integral_mono_AE) auto
     1.6  
     1.7 +lemma integral_norm_bound_integral:
     1.8 +  fixes f :: "'a::euclidean_space \<Rightarrow> 'b::{banach,second_countable_topology}"
     1.9 +  assumes "integrable M f" "integrable M g" "\<And>x. x \<in> space M \<Longrightarrow> norm(f x) \<le> g x"
    1.10 +  shows "norm (\<integral>x. f x \<partial>M) \<le> (\<integral>x. g x \<partial>M)"
    1.11 +proof -
    1.12 +  have "norm (\<integral>x. f x \<partial>M) \<le> (\<integral>x. norm (f x) \<partial>M)"
    1.13 +    by (rule integral_norm_bound)
    1.14 +  also have "... \<le> (\<integral>x. g x \<partial>M)"
    1.15 +    using assms integrable_norm integral_mono by blast
    1.16 +  finally show ?thesis .
    1.17 +qed
    1.18 +
    1.19 +lemma integral_abs_bound_integral:
    1.20 +  fixes f :: "'a::euclidean_space \<Rightarrow> real"
    1.21 +  assumes "integrable M f" "integrable M g" "\<And>x. x \<in> space M \<Longrightarrow> \<bar>f x\<bar> \<le> g x"
    1.22 +  shows "\<bar>\<integral>x. f x \<partial>M\<bar> \<le> (\<integral>x. g x \<partial>M)"
    1.23 +  by (metis integral_norm_bound_integral assms real_norm_def)
    1.24 +
    1.25  text \<open>The next two statements are useful to bound Lebesgue integrals, as they avoid one
    1.26  integrability assumption. The price to pay is that the upper function has to be nonnegative,
    1.27  but this is often true and easy to check in computations.\<close>
     2.1 --- a/src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy	Wed May 15 12:47:15 2019 +0100
     2.2 +++ b/src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy	Wed May 15 14:43:32 2019 +0100
     2.3 @@ -3119,12 +3119,29 @@
     2.4      using f by (auto intro: has_integral_implies_lebesgue_measurable simp: integrable_on_def)
     2.5  qed (use le in \<open>force intro!: always_eventually split: split_indicator\<close>)
     2.6  
     2.7 +corollary absolutely_integrable_on_const [simp]:
     2.8 +  fixes c :: "'a::euclidean_space"
     2.9 +  assumes "S \<in> lmeasurable"
    2.10 +  shows "(\<lambda>x. c) absolutely_integrable_on S"
    2.11 +  by (metis (full_types) assms absolutely_integrable_integrable_bound integrable_on_const order_refl)
    2.12 +
    2.13  lemma absolutely_integrable_continuous:
    2.14    fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
    2.15    shows "continuous_on (cbox a b) f \<Longrightarrow> f absolutely_integrable_on cbox a b"
    2.16    using absolutely_integrable_integrable_bound
    2.17    by (simp add: absolutely_integrable_on_def continuous_on_norm integrable_continuous)
    2.18  
    2.19 +lemma continous_imp_integrable:
    2.20 +  fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
    2.21 +  assumes "continuous_on (cbox a b) f"
    2.22 +  shows "integrable (lebesgue_on (cbox a b)) f"
    2.23 +proof -
    2.24 +  have "f absolutely_integrable_on cbox a b"
    2.25 +    by (simp add: absolutely_integrable_continuous assms)
    2.26 +  then show ?thesis
    2.27 +    by (simp add: integrable_restrict_space set_integrable_def)
    2.28 +qed
    2.29 +
    2.30  
    2.31  subsection \<open>Componentwise\<close>
    2.32  
     3.1 --- a/src/HOL/Analysis/Lebesgue_Measure.thy	Wed May 15 12:47:15 2019 +0100
     3.2 +++ b/src/HOL/Analysis/Lebesgue_Measure.thy	Wed May 15 14:43:32 2019 +0100
     3.3 @@ -304,15 +304,10 @@
     3.4  qed (auto simp: Ioc_inj mono_F)
     3.5  
     3.6  lemma measure_interval_measure_Ioc:
     3.7 -  assumes "a \<le> b"
     3.8 -  assumes mono_F: "\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y"
     3.9 -  assumes right_cont_F : "\<And>a. continuous (at_right a) F"
    3.10 +  assumes "a \<le> b" and "\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y" and "\<And>a. continuous (at_right a) F"
    3.11    shows "measure (interval_measure F) {a <.. b} = F b - F a"
    3.12    unfolding measure_def
    3.13 -  apply (subst emeasure_interval_measure_Ioc)
    3.14 -  apply fact+
    3.15 -  apply (simp add: assms)
    3.16 -  done
    3.17 +  by (simp add: assms emeasure_interval_measure_Ioc)
    3.18  
    3.19  lemma emeasure_interval_measure_Ioc_eq:
    3.20    "(\<And>x y. x \<le> y \<Longrightarrow> F x \<le> F y) \<Longrightarrow> (\<And>a. continuous (at_right a) F) \<Longrightarrow>
    3.21 @@ -409,6 +404,11 @@
    3.22    shows "f \<in> measurable (lebesgue_on S) M \<longleftrightarrow> g \<in> measurable (lebesgue_on S) M"
    3.23    by (metis (mono_tags, lifting) IntD1 assms measurable_cong_simp space_restrict_space)
    3.24  
    3.25 +lemma integrable_lebesgue_on_UNIV_eq:
    3.26 +  fixes f :: "'a::euclidean_space \<Rightarrow> 'b::{banach, second_countable_topology}"
    3.27 +  shows "integrable (lebesgue_on UNIV) f = integrable lebesgue f"
    3.28 +  by (auto simp: integrable_restrict_space)
    3.29 +
    3.30  text\<^marker>\<open>tag unimportant\<close> \<open>Measurability of continuous functions\<close>
    3.31  
    3.32  lemma continuous_imp_measurable_on_sets_lebesgue:
     4.1 --- a/src/HOL/Library/Extended_Nonnegative_Real.thy	Wed May 15 12:47:15 2019 +0100
     4.2 +++ b/src/HOL/Library/Extended_Nonnegative_Real.thy	Wed May 15 14:43:32 2019 +0100
     4.3 @@ -956,6 +956,15 @@
     4.4  lemma ennreal_numeral[simp]: "ennreal (numeral n) = numeral n"
     4.5    using ennreal_of_nat_eq_real_of_nat[of "numeral n"] by simp
     4.6  
     4.7 +lemma ennreal_less_numeral_iff [simp]: "ennreal n < numeral w \<longleftrightarrow> n < numeral w"
     4.8 +  by (metis ennreal_less_iff ennreal_numeral less_le not_less zero_less_numeral)
     4.9 +
    4.10 +lemma numeral_less_ennreal_iff [simp]: "numeral w < ennreal n \<longleftrightarrow> numeral w < n"
    4.11 +  using ennreal_less_iff zero_le_numeral by fastforce
    4.12 +
    4.13 +lemma numeral_le_ennreal_iff [simp]: "numeral n \<le> ennreal m \<longleftrightarrow> numeral n \<le> m"
    4.14 +  by (metis not_le ennreal_less_numeral_iff)
    4.15 +
    4.16  lemma min_ennreal: "0 \<le> x \<Longrightarrow> 0 \<le> y \<Longrightarrow> min (ennreal x) (ennreal y) = ennreal (min x y)"
    4.17    by (auto split: split_min)
    4.18