# HG changeset patch # User paulson # Date 1523809367 -3600 # Node ID adc1a992c4702d6bab270e8f76f4082c16f67a50 # Parent 7643b005b29abc26fac98dbfc741804fdf18e95f a few more results diff -r 7643b005b29a -r adc1a992c470 src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy --- a/src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy Sun Apr 15 13:57:00 2018 +0100 +++ b/src/HOL/Analysis/Equivalence_Lebesgue_Henstock_Integration.thy Sun Apr 15 17:22:47 2018 +0100 @@ -1172,7 +1172,7 @@ qed qed -subsection\Applications\ +subsection\Applications to Negligibility\ lemma negligible_hyperplane: assumes "a \ 0 \ b \ 0" shows "negligible {x. a \ x = b}" @@ -1268,11 +1268,77 @@ not_le emeasure_lborel_cbox_eq emeasure_lborel_box_eq intro: eq_refl antisym less_imp_le) -subsection \Negligibility of a Lipschitz image of a negligible set\ - lemma measure_eq_0_null_sets: "S \ null_sets M \ measure M S = 0" by (auto simp: measure_def null_sets_def) +lemma negligible_imp_measure0: "negligible S \ measure lebesgue S = 0" + by (simp add: measure_eq_0_null_sets negligible_iff_null_sets) + +lemma negligible_iff_emeasure0: "S \ sets lebesgue \ (negligible S \ emeasure lebesgue S = 0)" + by (auto simp: measure_eq_0_null_sets negligible_iff_null_sets) + +lemma negligible_iff_measure0: "S \ lmeasurable \ (negligible S \ measure lebesgue S = 0)" + apply (auto simp: measure_eq_0_null_sets negligible_iff_null_sets) + by (metis completion.null_sets_outer subsetI) + +lemma negligible_imp_sets: "negligible S \ S \ sets lebesgue" + by (simp add: negligible_iff_null_sets null_setsD2) + +lemma negligible_imp_measurable: "negligible S \ S \ lmeasurable" + by (simp add: fmeasurableI_null_sets negligible_iff_null_sets) + +lemma negligible_iff_measure: "negligible S \ S \ lmeasurable \ measure lebesgue S = 0" + by (fastforce simp: negligible_iff_measure0 negligible_imp_measurable dest: negligible_imp_measure0) + +lemma negligible_outer: + "negligible S \ (\e>0. \T. S \ T \ T \ lmeasurable \ measure lebesgue T < e)" (is "_ = ?rhs") +proof + assume "negligible S" then show ?rhs + by (metis negligible_iff_measure order_refl) +next + assume ?rhs then show "negligible S" + by (meson completion.null_sets_outer negligible_iff_null_sets) +qed + +lemma negligible_outer_le: + "negligible S \ (\e>0. \T. S \ T \ T \ lmeasurable \ measure lebesgue T \ e)" (is "_ = ?rhs") +proof + assume "negligible S" then show ?rhs + by (metis dual_order.strict_implies_order negligible_imp_measurable negligible_imp_measure0 order_refl) +next + assume ?rhs then show "negligible S" + by (metis le_less_trans negligible_outer real_lbound_gt_zero) +qed + +lemma negligible_UNIV: "negligible S \ (indicat_real S has_integral 0) UNIV" (is "_=?rhs") +proof + assume ?rhs + then show "negligible S" + apply (auto simp: negligible_def has_integral_iff integrable_on_indicator) + by (metis negligible integral_unique lmeasure_integral_UNIV negligible_iff_measure0) +qed (simp add: negligible) + +lemma sets_negligible_symdiff: + "\S \ sets lebesgue; negligible((S - T) \ (T - S))\ \ T \ sets lebesgue" + by (metis Diff_Diff_Int Int_Diff_Un inf_commute negligible_Un_eq negligible_imp_sets sets.Diff sets.Un) + +lemma lmeasurable_negligible_symdiff: + "\S \ lmeasurable; negligible((S - T) \ (T - S))\ \ T \ lmeasurable" + using integrable_spike_set_eq lmeasurable_iff_integrable_on by blast + +lemma measure_negligible_symdiff: + assumes S: "S \ lmeasurable" + and neg: "negligible (S - T \ (T - S))" + shows "measure lebesgue T = measure lebesgue S" +proof - + have "measure lebesgue (S - T) = 0" + using neg negligible_Un_eq negligible_imp_measure0 by blast + then show ?thesis + by (metis S Un_commute add.right_neutral lmeasurable_negligible_symdiff measure_Un2 neg negligible_Un_eq negligible_imp_measure0) +qed + +subsection \Negligibility of a Lipschitz image of a negligible set\ + text\The bound will be eliminated by a sort of onion argument\ lemma locally_Lipschitz_negl_bounded: fixes f :: "'M::euclidean_space \ 'N::euclidean_space" @@ -1631,12 +1697,13 @@ done qed +subsection\Integral bounds\ + lemma set_integral_norm_bound: fixes f :: "_ \ 'a :: {banach, second_countable_topology}" shows "set_integrable M k f \ norm (LINT x:k|M. f x) \ LINT x:k|M. norm (f x)" using integral_norm_bound[of M "\x. indicator k x *\<^sub>R f x"] by (simp add: set_lebesgue_integral_def) - lemma set_integral_finite_UN_AE: fixes f :: "_ \ _ :: {banach, second_countable_topology}" assumes "finite I" @@ -1676,7 +1743,6 @@ have *: "k \ d \ f absolutely_integrable_on k" for k using f[THEN set_integrable_subset, of k] division_ofD(2,4)[OF d, of k] by auto note d' = division_ofD[OF d] - have "(\k\d. norm (integral k f)) = (\k\d. norm (LINT x:k|lebesgue. f x))" by (intro sum.cong refl arg_cong[where f=norm] set_lebesgue_integral_eq_integral(2)[symmetric] *) also have "\ \ (\k\d. LINT x:k|lebesgue. norm (f x))" @@ -2208,11 +2274,15 @@ by blast qed +subsection\Lemmas about absolute integrability\ + +text\Redundant!\ lemma absolutely_integrable_add[intro]: fixes f g :: "'n::euclidean_space \ 'm::euclidean_space" shows "f absolutely_integrable_on s \ g absolutely_integrable_on s \ (\x. f x + g x) absolutely_integrable_on s" by (rule set_integral_add) +text\Redundant!\ lemma absolutely_integrable_diff[intro]: fixes f g :: "'n::euclidean_space \ 'm::euclidean_space" shows "f absolutely_integrable_on s \ g absolutely_integrable_on s \ (\x. f x - g x) absolutely_integrable_on s" diff -r 7643b005b29a -r adc1a992c470 src/HOL/Analysis/Henstock_Kurzweil_Integration.thy --- a/src/HOL/Analysis/Henstock_Kurzweil_Integration.thy Sun Apr 15 13:57:00 2018 +0100 +++ b/src/HOL/Analysis/Henstock_Kurzweil_Integration.thy Sun Apr 15 17:22:47 2018 +0100 @@ -2090,6 +2090,11 @@ qed qed +corollary negligible_standard_hyperplane_cart: + fixes k :: "'a::finite" + shows "negligible {x. x$k = (0::real)}" + by (simp add: cart_eq_inner_axis negligible_standard_hyperplane) + subsubsection \Hence the main theorem about negligible sets\ @@ -2354,34 +2359,13 @@ shows "negligible(\\)" using assms by induct auto -lemma negligible: - "negligible s \ (\t::('a::euclidean_space) set. ((indicator s::'a\real) has_integral 0) t)" - apply safe - defer - apply (subst negligible_def) -proof - - fix t :: "'a set" - assume as: "negligible s" - have *: "(\x. if x \ s \ t then 1 else 0) = (\x. if x\t then if x\s then 1 else 0 else 0)" - by auto - show "((indicator s::'a\real) has_integral 0) t" - apply (subst has_integral_alt) - apply cases - apply (subst if_P,assumption) - unfolding if_not_P - apply safe - apply (rule as[unfolded negligible_def,rule_format]) - apply (rule_tac x=1 in exI) - apply safe - apply (rule zero_less_one) - apply (rule_tac x=0 in exI) - using negligible_subset[OF as,of "s \ t"] - unfolding negligible_def indicator_def [abs_def] - unfolding * - apply auto - done -qed auto - +lemma negligible: "negligible S \ (\T. (indicat_real S has_integral 0) T)" +proof (intro iffI allI) + fix T + assume "negligible S" + then show "(indicator S has_integral 0) T" + by (meson Diff_iff has_integral_negligible indicator_simps(2)) +qed (simp add: negligible_def) subsection \Finite case of the spike theorem is quite commonly needed\ diff -r 7643b005b29a -r adc1a992c470 src/HOL/Analysis/Lebesgue_Measure.thy --- a/src/HOL/Analysis/Lebesgue_Measure.thy Sun Apr 15 13:57:00 2018 +0100 +++ b/src/HOL/Analysis/Lebesgue_Measure.thy Sun Apr 15 17:22:47 2018 +0100 @@ -936,7 +936,6 @@ from continuous_attains_sup[OF \compact S\ \S \ {}\ this] obtain M where M: "\x. x \ S \ norm (f x) \ M" by auto - show ?thesis proof (rule integrable_bound) show "integrable lborel (\x. indicator S x * M)" @@ -962,6 +961,8 @@ by (auto simp: mult.commute) qed +subsection\Lebesgue measurable sets\ + abbreviation lmeasurable :: "'a::euclidean_space set set" where "lmeasurable \ fmeasurable lebesgue" @@ -999,6 +1000,10 @@ by (auto dest!: AE_not_in) qed +lemma bounded_set_imp_lmeasurable: + assumes "bounded S" "S \ sets lebesgue" shows "S \ lmeasurable" + by (metis assms bounded_Un emeasure_bounded_finite emeasure_completion fmeasurableI main_part_null_part_Un) + subsection \A nice lemma for negligibility proofs\ lemma summable_iff_suminf_neq_top: "(\n. f n \ 0) \ \ summable f \ (\i. ennreal (f i)) = top" diff -r 7643b005b29a -r adc1a992c470 src/HOL/Analysis/Topology_Euclidean_Space.thy --- a/src/HOL/Analysis/Topology_Euclidean_Space.thy Sun Apr 15 13:57:00 2018 +0100 +++ b/src/HOL/Analysis/Topology_Euclidean_Space.thy Sun Apr 15 17:22:47 2018 +0100 @@ -3580,25 +3580,16 @@ and "bounded_linear f" shows "bounded (f ` S)" proof - - from assms(1) obtain b where b: "b > 0" "\x\S. norm x \ b" + from assms(1) obtain b where "b > 0" and b: "\x\S. norm x \ b" unfolding bounded_pos by auto from assms(2) obtain B where B: "B > 0" "\x. norm (f x) \ B * norm x" using bounded_linear.pos_bounded by (auto simp: ac_simps) - { - fix x - assume "x \ S" - then have "norm x \ b" - using b by auto - then have "norm (f x) \ B * b" - using B(2) - apply (erule_tac x=x in allE) - apply (metis B(1) B(2) order_trans mult_le_cancel_left_pos) - done - } - then show ?thesis + show ?thesis unfolding bounded_pos - apply (rule_tac x="b*B" in exI) - using b B by (auto simp: mult.commute) + proof (intro exI, safe) + show "norm (f x) \ B * b" if "x \ S" for x + by (meson B b less_imp_le mult_left_mono order_trans that) + qed (use \b > 0\ \B > 0\ in auto) qed lemma bounded_scaling: