diff -r 1e1818612124 -r 53ad5c01be3f src/HOL/Analysis/Set_Integral.thy --- a/src/HOL/Analysis/Set_Integral.thy Sat Aug 04 00:19:23 2018 +0100 +++ b/src/HOL/Analysis/Set_Integral.thy Sat Aug 04 01:03:39 2018 +0200 @@ -54,6 +54,15 @@ by (auto simp add: indicator_def) *) +lemma set_integrable_cong: + assumes "M = M'" "A = A'" "\x. x \ A \ f x = f' x" + shows "set_integrable M A f = set_integrable M' A' f'" +proof - + have "(\x. indicator A x *\<^sub>R f x) = (\x. indicator A' x *\<^sub>R f' x)" + using assms by (auto simp: indicator_def) + thus ?thesis by (simp add: set_integrable_def assms) +qed + lemma set_borel_measurable_sets: fixes f :: "_ \ _::real_normed_vector" assumes "set_borel_measurable M X f" "B \ sets borel" "X \ sets M" @@ -925,4 +934,127 @@ then show "integrable M (F n)" by (subst integrable_iff_bounded, simp add: assms(1)[of n]) qed (auto simp add: assms Limsup_bounded) +lemma tendsto_set_lebesgue_integral_at_right: + fixes a b :: real and f :: "real \ 'a :: {banach,second_countable_topology}" + assumes "a < b" and sets: "\a'. a' \ {a<..b} \ {a'..b} \ sets M" + and "set_integrable M {a<..b} f" + shows "((\a'. set_lebesgue_integral M {a'..b} f) \ + set_lebesgue_integral M {a<..b} f) (at_right a)" +proof (rule tendsto_at_right_sequentially[OF assms(1)], goal_cases) + case (1 S) + have eq: "(\n. {S n..b}) = {a<..b}" + proof safe + fix x n assume "x \ {S n..b}" + with 1(1,2)[of n] show "x \ {a<..b}" by auto + next + fix x assume "x \ {a<..b}" + with order_tendstoD[OF \S \ a\, of x] show "x \ (\n. {S n..b})" + by (force simp: eventually_at_top_linorder dest: less_imp_le) + qed + have "(\n. set_lebesgue_integral M {S n..b} f) \ set_lebesgue_integral M (\n. {S n..b}) f" + by (rule set_integral_cont_up) (insert assms 1, auto simp: eq incseq_def decseq_def less_imp_le) + with eq show ?case by simp +qed + + +text \ + The next lemmas relate convergence of integrals over an interval to + improper integrals. +\ +lemma tendsto_set_lebesgue_integral_at_left: + fixes a b :: real and f :: "real \ 'a :: {banach,second_countable_topology}" + assumes "a < b" and sets: "\b'. b' \ {a.. {a..b'} \ sets M" + and "set_integrable M {a..b'. set_lebesgue_integral M {a..b'} f) \ + set_lebesgue_integral M {a..n. {a..S n}) = {a.. {a..S n}" + with 1(1,2)[of n] show "x \ {a.. {a..S \ b\, of x] show "x \ (\n. {a..S n})" + by (force simp: eventually_at_top_linorder dest: less_imp_le) + qed + have "(\n. set_lebesgue_integral M {a..S n} f) \ set_lebesgue_integral M (\n. {a..S n}) f" + by (rule set_integral_cont_up) (insert assms 1, auto simp: eq incseq_def decseq_def less_imp_le) + with eq show ?case by simp +qed + +lemma tendsto_set_lebesgue_integral_at_top: + fixes f :: "real \ 'a::{banach, second_countable_topology}" + assumes sets: "\b. b \ a \ {a..b} \ sets M" + and int: "set_integrable M {a..} f" + shows "((\b. set_lebesgue_integral M {a..b} f) \ set_lebesgue_integral M {a..} f) at_top" +proof (rule tendsto_at_topI_sequentially) + fix X :: "nat \ real" assume "filterlim X at_top sequentially" + show "(\n. set_lebesgue_integral M {a..X n} f) \ set_lebesgue_integral M {a..} f" + unfolding set_lebesgue_integral_def + proof (rule integral_dominated_convergence) + show "integrable M (\x. indicat_real {a..} x *\<^sub>R norm (f x))" + using integrable_norm[OF int[unfolded set_integrable_def]] by simp + show "AE x in M. (\n. indicator {a..X n} x *\<^sub>R f x) \ indicat_real {a..} x *\<^sub>R f x" + proof + fix x + from \filterlim X at_top sequentially\ + have "eventually (\n. x \ X n) sequentially" + unfolding filterlim_at_top_ge[where c=x] by auto + then show "(\n. indicator {a..X n} x *\<^sub>R f x) \ indicat_real {a..} x *\<^sub>R f x" + by (intro Lim_eventually) (auto split: split_indicator elim!: eventually_mono) + qed + fix n show "AE x in M. norm (indicator {a..X n} x *\<^sub>R f x) \ + indicator {a..} x *\<^sub>R norm (f x)" + by (auto split: split_indicator) + next + from int show "(\x. indicat_real {a..} x *\<^sub>R f x) \ borel_measurable M" + by (simp add: set_integrable_def) + next + fix n :: nat + from sets have "{a..X n} \ sets M" by (cases "X n \ a") auto + with int have "set_integrable M {a..X n} f" + by (rule set_integrable_subset) auto + thus "(\x. indicat_real {a..X n} x *\<^sub>R f x) \ borel_measurable M" + by (simp add: set_integrable_def) + qed +qed + +lemma tendsto_set_lebesgue_integral_at_bot: + fixes f :: "real \ 'a::{banach, second_countable_topology}" + assumes sets: "\a. a \ b \ {a..b} \ sets M" + and int: "set_integrable M {..b} f" + shows "((\a. set_lebesgue_integral M {a..b} f) \ set_lebesgue_integral M {..b} f) at_bot" +proof (rule tendsto_at_botI_sequentially) + fix X :: "nat \ real" assume "filterlim X at_bot sequentially" + show "(\n. set_lebesgue_integral M {X n..b} f) \ set_lebesgue_integral M {..b} f" + unfolding set_lebesgue_integral_def + proof (rule integral_dominated_convergence) + show "integrable M (\x. indicat_real {..b} x *\<^sub>R norm (f x))" + using integrable_norm[OF int[unfolded set_integrable_def]] by simp + show "AE x in M. (\n. indicator {X n..b} x *\<^sub>R f x) \ indicat_real {..b} x *\<^sub>R f x" + proof + fix x + from \filterlim X at_bot sequentially\ + have "eventually (\n. x \ X n) sequentially" + unfolding filterlim_at_bot_le[where c=x] by auto + then show "(\n. indicator {X n..b} x *\<^sub>R f x) \ indicat_real {..b} x *\<^sub>R f x" + by (intro Lim_eventually) (auto split: split_indicator elim!: eventually_mono) + qed + fix n show "AE x in M. norm (indicator {X n..b} x *\<^sub>R f x) \ + indicator {..b} x *\<^sub>R norm (f x)" + by (auto split: split_indicator) + next + from int show "(\x. indicat_real {..b} x *\<^sub>R f x) \ borel_measurable M" + by (simp add: set_integrable_def) + next + fix n :: nat + from sets have "{X n..b} \ sets M" by (cases "X n \ b") auto + with int have "set_integrable M {X n..b} f" + by (rule set_integrable_subset) auto + thus "(\x. indicat_real {X n..b} x *\<^sub>R f x) \ borel_measurable M" + by (simp add: set_integrable_def) + qed +qed + end