# HG changeset patch # User eberlm # Date 1544617926 -3600 # Node ID b7b9cbe0bd432c6a41b1c3ee6afce00e5a533324 # Parent 9cf0b79dfb7f0d5fb4048d72188efca307d862d9 Tagged some of HOL-Analysis diff -r 9cf0b79dfb7f -r b7b9cbe0bd43 src/HOL/Analysis/Complete_Measure.thy --- a/src/HOL/Analysis/Complete_Measure.thy Mon Dec 10 23:36:29 2018 +0100 +++ b/src/HOL/Analysis/Complete_Measure.thy Wed Dec 12 13:32:06 2018 +0100 @@ -1,26 +1,26 @@ (* Title: HOL/Analysis/Complete_Measure.thy Author: Robert Himmelmann, Johannes Hoelzl, TU Muenchen *) - +section \Complete Measures\ theory Complete_Measure imports Bochner_Integration begin -locale complete_measure = +locale%important complete_measure = fixes M :: "'a measure" assumes complete: "\A B. B \ A \ A \ null_sets M \ B \ sets M" -definition +definition%important "split_completion M A p = (if A \ sets M then p = (A, {}) else \N'. A = fst p \ snd p \ fst p \ snd p = {} \ fst p \ sets M \ snd p \ N' \ N' \ null_sets M)" -definition +definition%important "main_part M A = fst (Eps (split_completion M A))" -definition +definition%important "null_part M A = snd (Eps (split_completion M A))" -definition completion :: "'a measure \ 'a measure" where +definition%important completion :: "'a measure \ 'a measure" where "completion M = measure_of (space M) { S \ N |S N N'. S \ sets M \ N' \ null_sets M \ N \ N' } (emeasure M \ main_part M)" @@ -67,9 +67,10 @@ by (intro completionI[of _ "\(S ` UNIV)" "\(N ` UNIV)" "\(N' ` UNIV)"]) auto qed -lemma sets_completion: +lemma%important sets_completion: "sets (completion M) = { S \ N |S N N'. S \ sets M \ N' \ null_sets M \ N \ N' }" - using sigma_algebra.sets_measure_of_eq[OF sigma_algebra_completion] by (simp add: completion_def) + using%unimportant sigma_algebra.sets_measure_of_eq[OF sigma_algebra_completion] + by (simp add: completion_def) lemma sets_completionE: assumes "A \ sets (completion M)" @@ -85,17 +86,17 @@ "A \ sets M \ A \ sets (completion M)" unfolding sets_completion by force -lemma measurable_completion: "f \ M \\<^sub>M N \ f \ completion M \\<^sub>M N" - by (auto simp: measurable_def) +lemma%important measurable_completion: "f \ M \\<^sub>M N \ f \ completion M \\<^sub>M N" + by%unimportant (auto simp: measurable_def) lemma null_sets_completion: assumes "N' \ null_sets M" "N \ N'" shows "N \ sets (completion M)" using assms by (intro sets_completionI[of N "{}" N N']) auto -lemma split_completion: +lemma%important split_completion: assumes "A \ sets (completion M)" shows "split_completion M A (main_part M A, null_part M A)" -proof cases +proof%unimportant cases assume "A \ sets M" then show ?thesis by (simp add: split_completion_def[abs_def] main_part_def null_part_def) next @@ -180,9 +181,10 @@ finally show ?thesis . qed -lemma emeasure_completion[simp]: - assumes S: "S \ sets (completion M)" shows "emeasure (completion M) S = emeasure M (main_part M S)" -proof (subst emeasure_measure_of[OF completion_def completion_into_space]) +lemma%important emeasure_completion[simp]: + assumes S: "S \ sets (completion M)" + shows "emeasure (completion M) S = emeasure M (main_part M S)" +proof%unimportant (subst emeasure_measure_of[OF completion_def completion_into_space]) let ?\ = "emeasure M \ main_part M" show "S \ sets (completion M)" "?\ S = emeasure M (main_part M S) " using S by simp_all show "positive (sets (completion M)) ?\" @@ -281,11 +283,11 @@ qed qed -lemma completion_ex_borel_measurable: +lemma%important completion_ex_borel_measurable: fixes g :: "'a \ ennreal" assumes g: "g \ borel_measurable (completion M)" shows "\g'\borel_measurable M. (AE x in M. g x = g' x)" -proof - +proof%unimportant - from g[THEN borel_measurable_implies_simple_function_sequence'] guess f . note f = this from this(1)[THEN completion_ex_simple_function] have "\i. \f'. simple_function M f' \ (AE x in M. f i x = f' x)" .. @@ -440,18 +442,19 @@ assumes f: "f \ M \\<^sub>M borel" shows "integral\<^sup>L (completion M) f = integral\<^sup>L M f" by (rule integral_subalgebra[symmetric]) (auto intro: f) -locale semifinite_measure = +locale%important semifinite_measure = fixes M :: "'a measure" assumes semifinite: "\A. A \ sets M \ emeasure M A = \ \ \B\sets M. B \ A \ emeasure M B < \" -locale locally_determined_measure = semifinite_measure + +locale%important locally_determined_measure = semifinite_measure + assumes locally_determined: "\A. A \ space M \ (\B. B \ sets M \ emeasure M B < \ \ A \ B \ sets M) \ A \ sets M" -locale cld_measure = complete_measure M + locally_determined_measure M for M :: "'a measure" +locale%important cld_measure = + complete_measure M + locally_determined_measure M for M :: "'a measure" -definition outer_measure_of :: "'a measure \ 'a set \ ennreal" +definition%important outer_measure_of :: "'a measure \ 'a set \ ennreal" where "outer_measure_of M A = (INF B \ {B\sets M. A \ B}. emeasure M B)" lemma outer_measure_of_eq[simp]: "A \ sets M \ outer_measure_of M A = emeasure M A" @@ -550,7 +553,7 @@ by (simp add: eq F) qed (auto intro: SUP_least outer_measure_of_mono) -definition measurable_envelope :: "'a measure \ 'a set \ 'a set \ bool" +definition%important measurable_envelope :: "'a measure \ 'a set \ 'a set \ bool" where "measurable_envelope M A E \ (A \ E \ E \ sets M \ (\F\sets M. emeasure M (F \ E) = outer_measure_of M (F \ A)))" @@ -615,7 +618,7 @@ by (auto simp: Int_absorb1) qed -lemma measurable_envelope_eq2: +lemma%important measurable_envelope_eq2: assumes "A \ E" "E \ sets M" "emeasure M E < \" shows "measurable_envelope M A E \ (emeasure M E = outer_measure_of M A)" proof safe diff -r 9cf0b79dfb7f -r b7b9cbe0bd43 src/HOL/Analysis/Lebesgue_Measure.thy --- a/src/HOL/Analysis/Lebesgue_Measure.thy Mon Dec 10 23:36:29 2018 +0100 +++ b/src/HOL/Analysis/Lebesgue_Measure.thy Wed Dec 12 13:32:06 2018 +0100 @@ -29,17 +29,22 @@ using fin by (auto intro: Rats_no_bot_less simp: less_top) qed (auto intro: assms countable_rat) -subsection \Every right continuous and nondecreasing function gives rise to a measure\ +subsection \Measures defined by monotonous functions\ + +text \ + Every right-continuous and nondecreasing function gives rise to a measure on the reals: +\ -definition interval_measure :: "(real \ real) \ real measure" where - "interval_measure F = extend_measure UNIV {(a, b). a \ b} (\(a, b). {a <.. b}) (\(a, b). ennreal (F b - F a))" +definition%important interval_measure :: "(real \ real) \ real measure" where + "interval_measure F = + extend_measure UNIV {(a, b). a \ b} (\(a, b). {a<..b}) (\(a, b). ennreal (F b - F a))" -lemma emeasure_interval_measure_Ioc: +lemma%important emeasure_interval_measure_Ioc: assumes "a \ b" assumes mono_F: "\x y. x \ y \ F x \ F y" assumes right_cont_F : "\a. continuous (at_right a) F" - shows "emeasure (interval_measure F) {a <.. b} = F b - F a" -proof (rule extend_measure_caratheodory_pair[OF interval_measure_def \a \ b\]) + shows "emeasure (interval_measure F) {a<..b} = F b - F a" +proof%unimportant (rule extend_measure_caratheodory_pair[OF interval_measure_def \a \ b\]) show "semiring_of_sets UNIV {{a<..b} |a b :: real. a \ b}" proof (unfold_locales, safe) fix a b c d :: real assume *: "a \ b" "c \ d" @@ -309,7 +314,8 @@ emeasure (interval_measure F) {a <.. b} = (if a \ b then F b - F a else 0)" using emeasure_interval_measure_Ioc[of a b F] by auto -lemma sets_interval_measure [simp, measurable_cong]: "sets (interval_measure F) = sets borel" +lemma%important sets_interval_measure [simp, measurable_cong]: + "sets (interval_measure F) = sets borel" apply (simp add: sets_extend_measure interval_measure_def borel_sigma_sets_Ioc) apply (rule sigma_sets_eqI) apply auto @@ -360,7 +366,7 @@ (auto simp: continuous_on_ennreal continuous_on_diff cont_F continuous_on_const) qed (rule trivial_limit_at_left_real) -lemma sigma_finite_interval_measure: +lemma%important sigma_finite_interval_measure: assumes mono_F: "\x y. x \ y \ F x \ F y" assumes right_cont_F : "\a. continuous (at_right a) F" shows "sigma_finite_measure (interval_measure F)" @@ -371,13 +377,13 @@ subsection \Lebesgue-Borel measure\ -definition lborel :: "('a :: euclidean_space) measure" where +definition%important lborel :: "('a :: euclidean_space) measure" where "lborel = distr (\\<^sub>M b\Basis. interval_measure (\x. x)) borel (\f. \b\Basis. f b *\<^sub>R b)" -abbreviation lebesgue :: "'a::euclidean_space measure" +abbreviation%important lebesgue :: "'a::euclidean_space measure" where "lebesgue \ completion lborel" -abbreviation lebesgue_on :: "'a set \ 'a::euclidean_space measure" +abbreviation%important lebesgue_on :: "'a set \ 'a::euclidean_space measure" where "lebesgue_on \ \ restrict_space (completion lborel) \" lemma @@ -398,7 +404,8 @@ shows "f \ measurable (lebesgue_on S) M \ g \ measurable (lebesgue_on S) M" by (metis (mono_tags, lifting) IntD1 assms measurable_cong_strong space_restrict_space) -text\Measurability of continuous functions\ +text%unimportant \Measurability of continuous functions\ + lemma continuous_imp_measurable_on_sets_lebesgue: assumes f: "continuous_on S f" and S: "S \ sets lebesgue" shows "f \ borel_measurable (lebesgue_on S)" @@ -448,10 +455,10 @@ lemma emeasure_lborel_Icc_eq: "emeasure lborel {l .. u} = ennreal (if l \ u then u - l else 0)" by simp -lemma emeasure_lborel_cbox[simp]: +lemma%important emeasure_lborel_cbox[simp]: assumes [simp]: "\b. b \ Basis \ l \ b \ u \ b" shows "emeasure lborel (cbox l u) = (\b\Basis. (u - l) \ b)" -proof - +proof%unimportant - have "(\x. \b\Basis. indicator {l\b .. u\b} (x \ b) :: ennreal) = indicator (cbox l u)" by (auto simp: fun_eq_iff cbox_def split: split_indicator) then have "emeasure lborel (cbox l u) = (\\<^sup>+x. (\b\Basis. indicator {l\b .. u\b} (x \ b)) \lborel)" @@ -642,12 +649,12 @@ subsection \Affine transformation on the Lebesgue-Borel\ -lemma lborel_eqI: +lemma%important lborel_eqI: fixes M :: "'a::euclidean_space measure" assumes emeasure_eq: "\l u. (\b. b \ Basis \ l \ b \ u \ b) \ emeasure M (box l u) = (\b\Basis. (u - l) \ b)" assumes sets_eq: "sets M = sets borel" shows "lborel = M" -proof (rule measure_eqI_generator_eq) +proof%unimportant (rule measure_eqI_generator_eq) let ?E = "range (\(a, b). box a b::'a set)" show "Int_stable ?E" by (auto simp: Int_stable_def box_Int_box) @@ -667,12 +674,12 @@ done } qed -lemma lborel_affine_euclidean: +lemma%important lborel_affine_euclidean: fixes c :: "'a::euclidean_space \ real" and t defines "T x \ t + (\j\Basis. (c j * (x \ j)) *\<^sub>R j)" assumes c: "\j. j \ Basis \ c j \ 0" shows "lborel = density (distr lborel borel T) (\_. (\j\Basis. \c j\))" (is "_ = ?D") -proof (rule lborel_eqI) +proof%unimportant (rule lborel_eqI) let ?B = "Basis :: 'a set" fix l u assume le: "\b. b \ ?B \ l \ b \ u \ b" have [measurable]: "T \ borel \\<^sub>M borel" @@ -724,10 +731,10 @@ lborel_integrable_real_affine[of "\x. f (t + c * x)" "1/c" "-t/c"] by (auto simp add: field_simps) -lemma lborel_integral_real_affine: +lemma%important lborel_integral_real_affine: fixes f :: "real \ 'a :: {banach, second_countable_topology}" and c :: real assumes c: "c \ 0" shows "(\x. f x \ lborel) = \c\ *\<^sub>R (\x. f (t + c * x) \lborel)" -proof cases +proof%unimportant cases assume f[measurable]: "integrable lborel f" then show ?thesis using c f f[THEN borel_measurable_integrable] f[THEN lborel_integrable_real_affine, of c t] by (subst lborel_real_affine[OF c, of t]) @@ -889,9 +896,9 @@ interpretation lborel_pair: pair_sigma_finite lborel lborel .. -lemma lborel_prod: +lemma%important lborel_prod: "lborel \\<^sub>M lborel = (lborel :: ('a::euclidean_space \ 'b::euclidean_space) measure)" -proof (rule lborel_eqI[symmetric], clarify) +proof%unimportant (rule lborel_eqI[symmetric], clarify) fix la ua :: 'a and lb ub :: 'b assume lu: "\a b. (a, b) \ Basis \ (la, lb) \ (a, b) \ (ua, ub) \ (a, b)" have [simp]: @@ -964,16 +971,16 @@ by (auto simp: mult.commute) qed -subsection\Lebesgue measurable sets\ +subsection \Lebesgue measurable sets\ -abbreviation lmeasurable :: "'a::euclidean_space set set" +abbreviation%important lmeasurable :: "'a::euclidean_space set set" where "lmeasurable \ fmeasurable lebesgue" lemma not_measurable_UNIV [simp]: "UNIV \ lmeasurable" by (simp add: fmeasurable_def) -lemma lmeasurable_iff_integrable: +lemma%important lmeasurable_iff_integrable: "S \ lmeasurable \ integrable lebesgue (indicator S :: 'a::euclidean_space \ real)" by (auto simp: fmeasurable_def integrable_iff_bounded borel_measurable_indicator_iff ennreal_indicator) @@ -1027,7 +1034,7 @@ by (metis assms bounded_Un emeasure_bounded_finite emeasure_completion fmeasurableI main_part_null_part_Un) -subsection\Translation preserves Lebesgue measure\ +subsection%unimportant\Translation preserves Lebesgue measure\ lemma sigma_sets_image: assumes S: "S \ sigma_sets \ M" and "M \ Pow \" "f ` \ = \" "inj_on f \" @@ -1108,12 +1115,12 @@ lemma summable_iff_suminf_neq_top: "(\n. f n \ 0) \ \ summable f \ (\i. ennreal (f i)) = top" by (metis summable_suminf_not_top) -proposition starlike_negligible_bounded_gmeasurable: +proposition%important starlike_negligible_bounded_gmeasurable: fixes S :: "'a :: euclidean_space set" assumes S: "S \ sets lebesgue" and "bounded S" and eq1: "\c x. \(c *\<^sub>R x) \ S; 0 \ c; x \ S\ \ c = 1" shows "S \ null_sets lebesgue" -proof - +proof%unimportant - obtain M where "0 < M" "S \ ball 0 M" using \bounded S\ by (auto dest: bounded_subset_ballD) @@ -1232,10 +1239,10 @@ qed qed -lemma outer_regular_lborel: +lemma%important outer_regular_lborel: assumes B: "B \ sets borel" and "0 < (e::real)" obtains U where "open U" "B \ U" "emeasure lborel (U - B) < e" -proof - +proof%unimportant - obtain U where U: "open U" "B \ U" and "emeasure lborel (U-B) \ e/2" using outer_regular_lborel_le [OF B, of "e/2"] \e > 0\ by force