measure_theory.covering.differentiation
⟷
Mathlib.MeasureTheory.Covering.Differentiation
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -5,7 +5,7 @@ Authors: Sébastien Gouëzel
-/
import MeasureTheory.Covering.VitaliFamily
import MeasureTheory.Measure.Regular
-import MeasureTheory.Function.AeMeasurableOrder
+import MeasureTheory.Function.AEMeasurableOrder
import MeasureTheory.Integral.Lebesgue
import MeasureTheory.Integral.Average
import MeasureTheory.Decomposition.Lebesgue
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -105,13 +105,13 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
∀ᵐ x ∂μ, ∀ᶠ a in v.filterAt x, 0 < μ a :=
by
set s := {x | ¬∀ᶠ a in v.filter_at x, 0 < μ a} with hs
- simp only [not_lt, not_eventually, nonpos_iff_eq_zero] at hs
+ simp only [not_lt, not_eventually, nonpos_iff_eq_zero] at hs
change μ s = 0
let f : α → Set (Set α) := fun x => {a | μ a = 0}
have h : v.fine_subfamily_on f s := by
intro x hx ε εpos
- rw [hs] at hx
- simp only [frequently_filter_at_iff, exists_prop, gt_iff_lt, mem_set_of_eq] at hx
+ rw [hs] at hx
+ simp only [frequently_filter_at_iff, exists_prop, gt_iff_lt, mem_set_of_eq] at hx
rcases hx ε εpos with ⟨a, a_sets, ax, μa⟩
exact ⟨a, ⟨a_sets, μa⟩, ax⟩
refine' le_antisymm _ bot_le
@@ -200,8 +200,8 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
refine' mul_le_mul_left' _ _
refine' v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul ε) _ _
intro x hx
- rw [hs] at hx
- simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
+ rw [hs] at hx
+ simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
exact hx.1
_ ≤ ε⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
_ = 0 := by rw [ρo, MulZeroClass.mul_zero]
@@ -465,7 +465,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
by
apply (ENNReal.mul_lt_mul_right h _).2 (ENNReal.coe_lt_coe.2 hpq)
suffices H : (ρ + μ) (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) ≠ ∞
- · simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
+ · simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
exact H.2
apply (lt_of_le_of_lt (measure_mono (inter_subset_left _ _)) _).Ne
rw [measure_to_measurable]
@@ -503,7 +503,7 @@ theorem ae_tendsto_limRatioMeas :
by
filter_upwards [v.ae_tendsto_lim_ratio hρ, AEMeasurable.ae_eq_mk (v.ae_measurable_lim_ratio hρ)]
intro x hx h'x
- rwa [h'x] at hx
+ rwa [h'x] at hx
#align vitali_family.ae_tendsto_lim_ratio_meas VitaliFamily.ae_tendsto_limRatioMeas
-/
@@ -588,7 +588,7 @@ theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 :=
by
apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
- simp only [MulZeroClass.zero_mul, ENNReal.inv_top] at B
+ simp only [MulZeroClass.zero_mul, ENNReal.inv_top] at B
apply ge_of_tendsto B
exact eventually_at_top.2 ⟨1, A⟩
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
@@ -616,7 +616,7 @@ theorem measure_limRatioMeas_zero : ρ {x | v.limRatioMeas hρ x = 0} = 0 :=
apply ENNReal.Tendsto.mul_const _ (Or.inr μs)
rw [ENNReal.tendsto_coe]
exact nhdsWithin_le_nhds
- simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
+ simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
apply ge_of_tendsto B
filter_upwards [self_mem_nhdsWithin] using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
@@ -770,7 +770,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
· exact ENNReal.Tendsto.pow (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds)
· simp only [one_pow, ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
· simp only [one_pow, ENNReal.coe_one, Ne.def, or_true_iff, ENNReal.one_ne_top, not_false_iff]
- simp only [one_pow, one_mul, ENNReal.coe_one] at this
+ simp only [one_pow, one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin] with _ ht
exact v.with_density_le_mul hρ hs ht
@@ -780,7 +780,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
by
refine' ENNReal.Tendsto.mul_const (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds) _
simp only [ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
- simp only [one_mul, ENNReal.coe_one] at this
+ simp only [one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin] with _ ht
exact v.le_mul_with_density hρ hs ht
@@ -801,7 +801,7 @@ theorem ae_tendsto_rnDeriv_of_absolutelyContinuous :
by
have A : (μ.with_density (v.lim_ratio_meas hρ)).rnDeriv μ =ᵐ[μ] v.lim_ratio_meas hρ :=
rn_deriv_with_density μ (v.lim_ratio_meas_measurable hρ)
- rw [v.with_density_lim_ratio_meas_eq hρ] at A
+ rw [v.with_density_lim_ratio_meas_eq hρ] at A
filter_upwards [v.ae_tendsto_lim_ratio_meas hρ, A] with _ _ h'x
rwa [h'x]
#align vitali_family.ae_tendsto_rn_deriv_of_absolutely_continuous VitaliFamily.ae_tendsto_rnDeriv_of_absolutelyContinuous
@@ -876,7 +876,7 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
filter_upwards [ae_restrict_mem (measurable_set_to_measurable μ s)] with _ hx
simp only [hx, Pi.one_apply, indicator_of_mem]
filter_upwards [A, B] with x hx h'x
- rw [h'x] at hx
+ rw [h'x] at hx
apply hx.congr' _
filter_upwards [v.eventually_filter_at_measurable_set x] with _ ha
congr 1
@@ -967,7 +967,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable {f : α → E} (hf :
intro c hc
obtain ⟨n, xn⟩ : ∃ n, x ∈ A.set n := by simpa [← A.spanning] using mem_univ x
specialize hx n c hc
- simp only [xn, indicator_of_mem] at hx
+ simp only [xn, indicator_of_mem] at hx
apply hx.congr' _
filter_upwards [v.eventually_filter_at_subset_of_nhds (IsOpen.mem_nhds (A.set_mem n) xn),
v.eventually_filter_at_measurable_set] with a ha h'a
@@ -994,7 +994,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable {f : α → E} (hf :
(lintegral_add_right _ measurable_const)
_ ≤ ε / 2 * μ a + ε / 2 * μ a := by
refine' add_le_add _ _
- · rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
+ · rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
exact ha.le
· simp only [lintegral_const, measure.restrict_apply, MeasurableSet.univ, univ_inter]
exact mul_le_mul_right' xc.le _
@@ -1028,7 +1028,7 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf, v.ae_eventually_measure_pos] with x hx
h'x
have := (ENNReal.tendsto_toReal ENNReal.zero_ne_top).comp hx
- simp only [ENNReal.zero_toReal] at this
+ simp only [ENNReal.zero_toReal] at this
apply tendsto.congr' _ this
filter_upwards [h'x, v.eventually_measure_lt_top x] with a ha h'a
simp only [Function.comp_apply, ENNReal.toReal_div, set_average_eq, div_eq_inv_mul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -275,13 +275,13 @@ theorem ae_tendsto_div : ∀ᵐ x ∂μ, ∃ c, Tendsto (fun a => ρ a / μ a) (
lift d to ℝ≥0 using I d hd
apply v.null_of_frequently_le_of_frequently_ge hρ (ENNReal.coe_lt_coe.1 hcd)
· simp only [and_imp, exists_prop, not_frequently, not_and, not_lt, not_le, not_eventually,
- mem_set_of_eq, mem_compl_iff, not_forall]
+ mem_set_of_eq, mem_compl_iff, Classical.not_forall]
intro x h1x h2x
apply h1x.mono fun a ha => _
refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
· simp only [and_imp, exists_prop, not_frequently, not_and, not_lt, not_le, not_eventually,
- mem_set_of_eq, mem_compl_iff, not_forall]
+ mem_set_of_eq, mem_compl_iff, Classical.not_forall]
intro x h1x h2x
apply h2x.mono fun a ha => _
exact ENNReal.mul_le_of_le_div ha.le
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,12 +3,12 @@ Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-/
-import Mathbin.MeasureTheory.Covering.VitaliFamily
-import Mathbin.MeasureTheory.Measure.Regular
-import Mathbin.MeasureTheory.Function.AeMeasurableOrder
-import Mathbin.MeasureTheory.Integral.Lebesgue
-import Mathbin.MeasureTheory.Integral.Average
-import Mathbin.MeasureTheory.Decomposition.Lebesgue
+import MeasureTheory.Covering.VitaliFamily
+import MeasureTheory.Measure.Regular
+import MeasureTheory.Function.AeMeasurableOrder
+import MeasureTheory.Integral.Lebesgue
+import MeasureTheory.Integral.Average
+import MeasureTheory.Decomposition.Lebesgue
#align_import measure_theory.covering.differentiation from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -1052,7 +1052,7 @@ theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E}
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, f y ∂μ) (v.filterAt x) (𝓝 (f x)) :=
by
filter_upwards [v.ae_tendsto_average_norm_sub hf, v.ae_eventually_measure_pos] with x hx h'x
- rw [tendsto_iff_norm_tendsto_zero]
+ rw [tendsto_iff_norm_sub_tendsto_zero]
refine' squeeze_zero' (eventually_of_forall fun a => norm_nonneg _) _ hx
filter_upwards [h'x, v.eventually_measure_lt_top x] with a ha h'a
nth_rw 1 [← set_average_const ha.ne' h'a.ne (f x)]
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -919,8 +919,8 @@ theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ
#align vitali_family.ae_tendsto_lintegral_div VitaliFamily.ae_tendsto_lintegral_div
-/
-#print VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div' /-
-theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f μ)
+#print VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable /-
+theorem ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable {f : α → E} (hf : Integrable f μ)
(h'f : StronglyMeasurable f) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) :=
by
@@ -999,11 +999,11 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
· simp only [lintegral_const, measure.restrict_apply, MeasurableSet.univ, univ_inter]
exact mul_le_mul_right' xc.le _
_ = ε * μ a := by rw [← add_mul, ENNReal.add_halves]
-#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'
+#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable
-/
-#print VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div /-
-theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ) :
+#print VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div_of_integrable /-
+theorem ae_tendsto_lintegral_nnnorm_sub_div_of_integrable {f : α → E} (hf : Integrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) :=
by
have I : integrable (hf.1.mk f) μ := hf.congr hf.1.ae_eq_mk
@@ -1016,7 +1016,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ
apply ae_restrict_of_ae
filter_upwards [hf.1.ae_eq_mk] with y hy
rw [hy, h'x]
-#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div
+#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div_of_integrable
-/
#print VitaliFamily.ae_tendsto_average_norm_sub /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module measure_theory.covering.differentiation
-! leanprover-community/mathlib commit 7e5137f579de09a059a5ce98f364a04e221aabf0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.MeasureTheory.Covering.VitaliFamily
import Mathbin.MeasureTheory.Measure.Regular
@@ -15,6 +10,8 @@ import Mathbin.MeasureTheory.Integral.Lebesgue
import Mathbin.MeasureTheory.Integral.Average
import Mathbin.MeasureTheory.Decomposition.Lebesgue
+#align_import measure_theory.covering.differentiation from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
+
/-!
# Differentiation of measures
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -90,8 +90,6 @@ open scoped Filter ENNReal MeasureTheory NNReal Topology
variable {α : Type _} [MetricSpace α] {m0 : MeasurableSpace α} {μ : Measure α} (v : VitaliFamily μ)
{E : Type _} [NormedAddCommGroup E]
-include v
-
namespace VitaliFamily
#print VitaliFamily.limRatio /-
@@ -103,6 +101,7 @@ noncomputable def limRatio (ρ : Measure α) (x : α) : ℝ≥0∞ :=
#align vitali_family.lim_ratio VitaliFamily.limRatio
-/
+#print VitaliFamily.ae_eventually_measure_pos /-
/-- For almost every point `x`, sufficiently small sets in a Vitali family around `x` have positive
measure. (This is a nontrivial result, following from the covering property of Vitali families). -/
theorem ae_eventually_measure_pos [SecondCountableTopology α] :
@@ -124,7 +123,9 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
_ = ∑' x : h.index, 0 := by congr; ext1 x; exact h.covering_mem x.2
_ = 0 := by simp only [tsum_zero, add_zero]
#align vitali_family.ae_eventually_measure_pos VitaliFamily.ae_eventually_measure_pos
+-/
+#print VitaliFamily.eventually_measure_lt_top /-
/-- For every point `x`, sufficiently small sets in a Vitali family around `x` have finite measure.
(This is a trivial result, following from the fact that the measure is locally finite). -/
theorem eventually_measure_lt_top [IsLocallyFiniteMeasure μ] (x : α) :
@@ -134,7 +135,9 @@ theorem eventually_measure_lt_top [IsLocallyFiniteMeasure μ] (x : α) :
(μ.finite_at_nhds x).exists_mem_basis nhds_basis_closed_ball
exact v.eventually_filter_at_iff.2 ⟨ε, εpos, fun a ha haε => (measure_mono haε).trans_lt με⟩
#align vitali_family.eventually_measure_lt_top VitaliFamily.eventually_measure_lt_top
+-/
+#print VitaliFamily.measure_le_of_frequently_le /-
/-- If two measures `ρ` and `ν` have, at every point of a set `s`, arbitrarily small sets in a
Vitali family satisfying `ρ a ≤ ν a`, then `ρ s ≤ ν s` if `ρ ≪ μ`.-/
theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α] {ρ : Measure α}
@@ -165,12 +168,14 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
_ ≤ ν U := (measure_mono (Union_subset fun i => (h.covering_mem i.2).2))
_ ≤ ν s + ε := νU
#align vitali_family.measure_le_of_frequently_le VitaliFamily.measure_le_of_frequently_le
+-/
section
variable [SecondCountableTopology α] [BorelSpace α] [IsLocallyFiniteMeasure μ] {ρ : Measure α}
[IsLocallyFiniteMeasure ρ]
+#print VitaliFamily.ae_eventually_measure_zero_of_singular /-
/-- If a measure `ρ` is singular with respect to `μ`, then for `μ` almost every `x`, the ratio
`ρ a / μ a` tends to zero when `a` shrinks to `x` along the Vitali family. This makes sense
as `μ a` is eventually positive by `ae_eventually_measure_pos`. -/
@@ -219,13 +224,13 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
rw [ENNReal.div_lt_iff (Or.inl μa_pos.ne') (Or.inl μa_lt_top.ne)]
exact ha.trans_le (mul_le_mul_right' ((ENNReal.coe_le_coe.2 hn.le).trans w_lt.le) _)
#align vitali_family.ae_eventually_measure_zero_of_singular VitaliFamily.ae_eventually_measure_zero_of_singular
+-/
section AbsolutelyContinuous
variable (hρ : ρ ≪ μ)
-include hρ
-
+#print VitaliFamily.null_of_frequently_le_of_frequently_ge /-
/-- A set of points `s` satisfying both `ρ a ≤ c * μ a` and `ρ a ≥ d * μ a` at arbitrarily small
sets in a Vitali family has measure `0` if `c < d`. Indeed, the first inequality should imply
that `ρ s ≤ c * μ s`, and the second one that `ρ s ≥ d * μ s`, a contradiction if `0 < μ s`. -/
@@ -250,7 +255,9 @@ theorem null_of_frequently_le_of_frequently_ge {c d : ℝ≥0} (hcd : c < d) (s
v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul d) s' fun x hx =>
hd x hx.1
#align vitali_family.null_of_frequently_le_of_frequently_ge VitaliFamily.null_of_frequently_le_of_frequently_ge
+-/
+#print VitaliFamily.ae_tendsto_div /-
/-- If `ρ` is absolutely continuous with respect to `μ`, then for almost every `x`,
the ratio `ρ a / μ a` converges as `a` shrinks to `x` along a Vitali family for `μ`. -/
theorem ae_tendsto_div : ∀ᵐ x ∂μ, ∃ c, Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 c) :=
@@ -292,7 +299,9 @@ theorem ae_tendsto_div : ∀ᵐ x ∂μ, ∃ c, Tendsto (fun a => ρ a / μ a) (
intro x hx
exact tendsto_of_no_upcrossings w_dense hx
#align vitali_family.ae_tendsto_div VitaliFamily.ae_tendsto_div
+-/
+#print VitaliFamily.ae_tendsto_limRatio /-
theorem ae_tendsto_limRatio :
∀ᵐ x ∂μ, Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatio ρ x)) :=
by
@@ -300,12 +309,14 @@ theorem ae_tendsto_limRatio :
intro x hx
exact tendsto_nhds_limUnder hx
#align vitali_family.ae_tendsto_lim_ratio VitaliFamily.ae_tendsto_limRatio
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (m n) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (m n) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (m n) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (m n) -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (m n) -/
+#print VitaliFamily.exists_measurable_supersets_limRatio /-
/-- Given two thresholds `p < q`, the sets `{x | v.lim_ratio ρ x < p}`
and `{x | q < v.lim_ratio ρ x}` are obviously disjoint. The key to proving that `v.lim_ratio ρ` is
almost everywhere measurable is to show that these sets have measurable supersets which are also
@@ -465,6 +476,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
exact inter_subset_right _ _
_ ≤ ρ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) := B
#align vitali_family.exists_measurable_supersets_lim_ratio VitaliFamily.exists_measurable_supersets_limRatio
+-/
#print VitaliFamily.aemeasurable_limRatio /-
theorem aemeasurable_limRatio : AEMeasurable (v.limRatio ρ) μ :=
@@ -488,6 +500,7 @@ theorem limRatioMeas_measurable : Measurable (v.limRatioMeas hρ) :=
#align vitali_family.lim_ratio_meas_measurable VitaliFamily.limRatioMeas_measurable
-/
+#print VitaliFamily.ae_tendsto_limRatioMeas /-
theorem ae_tendsto_limRatioMeas :
∀ᵐ x ∂μ, Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x)) :=
by
@@ -495,7 +508,9 @@ theorem ae_tendsto_limRatioMeas :
intro x hx h'x
rwa [h'x] at hx
#align vitali_family.ae_tendsto_lim_ratio_meas VitaliFamily.ae_tendsto_limRatioMeas
+-/
+#print VitaliFamily.measure_le_mul_of_subset_limRatioMeas_lt /-
/-- If, for all `x` in a set `s`, one has frequently `ρ a / μ a < p`, then `ρ s ≤ p * μ s`, as
proved in `measure_le_of_frequently_le`. Since `ρ a / μ a` tends almost everywhere to
`v.lim_ratio_meas hρ x`, the same property holds for sets `s` on which `v.lim_ratio_meas hρ < p`. -/
@@ -520,7 +535,9 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
#align vitali_family.measure_le_mul_of_subset_lim_ratio_meas_lt VitaliFamily.measure_le_mul_of_subset_limRatioMeas_lt
+-/
+#print VitaliFamily.mul_measure_le_of_subset_lt_limRatioMeas /-
/-- If, for all `x` in a set `s`, one has frequently `q < ρ a / μ a`, then `q * μ s ≤ ρ s`, as
proved in `measure_le_of_frequently_le`. Since `ρ a / μ a` tends almost everywhere to
`v.lim_ratio_meas hρ x`, the same property holds for sets `s` on which `q < v.lim_ratio_meas hρ`. -/
@@ -547,7 +564,9 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
rw [coe_nnreal_smul_apply]
exact ENNReal.mul_le_of_le_div ha.le
#align vitali_family.mul_measure_le_of_subset_lt_lim_ratio_meas VitaliFamily.mul_measure_le_of_subset_lt_limRatioMeas
+-/
+#print VitaliFamily.measure_limRatioMeas_top /-
/-- The points with `v.lim_ratio_meas hρ x = ∞` have measure `0` for `μ`. -/
theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 :=
by
@@ -576,7 +595,9 @@ theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 :=
apply ge_of_tendsto B
exact eventually_at_top.2 ⟨1, A⟩
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
+-/
+#print VitaliFamily.measure_limRatioMeas_zero /-
/-- The points with `v.lim_ratio_meas hρ x = 0` have measure `0` for `ρ`. -/
theorem measure_limRatioMeas_zero : ρ {x | v.limRatioMeas hρ x = 0} = 0 :=
by
@@ -602,7 +623,9 @@ theorem measure_limRatioMeas_zero : ρ {x | v.limRatioMeas hρ x = 0} = 0 :=
apply ge_of_tendsto B
filter_upwards [self_mem_nhdsWithin] using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
+-/
+#print VitaliFamily.withDensity_le_mul /-
/-- As an intermediate step to show that `μ.with_density (v.lim_ratio_meas hρ) = ρ`, we show here
that `μ.with_density (v.lim_ratio_meas hρ) ≤ t^2 ρ` for any `t > 1`. -/
theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht : 1 < t) :
@@ -674,7 +697,9 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
_ = ((t : ℝ≥0∞) ^ 2 • ρ) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow ((t : ℝ≥0∞) ^ 2 • ρ) f_meas hs ht).symm
#align vitali_family.with_density_le_mul VitaliFamily.withDensity_le_mul
+-/
+#print VitaliFamily.le_mul_withDensity /-
/-- As an intermediate step to show that `μ.with_density (v.lim_ratio_meas hρ) = ρ`, we show here
that `ρ ≤ t μ.with_density (v.lim_ratio_meas hρ)` for any `t > 1`. -/
theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht : 1 < t) :
@@ -735,6 +760,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
_ = (t • ν) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow (t • ν) f_meas hs ht).symm
#align vitali_family.le_mul_with_density VitaliFamily.le_mul_withDensity
+-/
#print VitaliFamily.withDensity_limRatioMeas_eq /-
theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :=
@@ -764,6 +790,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
#align vitali_family.with_density_lim_ratio_meas_eq VitaliFamily.withDensity_limRatioMeas_eq
-/
+#print VitaliFamily.ae_tendsto_rnDeriv_of_absolutelyContinuous /-
/-- Weak version of the main theorem on differentiation of measures: given a Vitali family `v`
for a locally finite measure `μ`, and another locally finite measure `ρ`, then for `μ`-almost
every `x` the ratio `ρ a / μ a` converges, when `a` shrinks to `x` along the Vitali family,
@@ -781,11 +808,13 @@ theorem ae_tendsto_rnDeriv_of_absolutelyContinuous :
filter_upwards [v.ae_tendsto_lim_ratio_meas hρ, A] with _ _ h'x
rwa [h'x]
#align vitali_family.ae_tendsto_rn_deriv_of_absolutely_continuous VitaliFamily.ae_tendsto_rnDeriv_of_absolutelyContinuous
+-/
end AbsolutelyContinuous
variable (ρ)
+#print VitaliFamily.ae_tendsto_rnDeriv /-
/-- Main theorem on differentiation of measures: given a Vitali family `v` for a locally finite
measure `μ`, and another locally finite measure `ρ`, then for `μ`-almost every `x` the
ratio `ρ a / μ a` converges, when `a` shrinks to `x` along the Vitali family, towards the
@@ -808,10 +837,12 @@ theorem ae_tendsto_rnDeriv :
simp only [Pi.add_apply, coe_add, ENNReal.add_div]
· simp only [Bx, zero_add]
#align vitali_family.ae_tendsto_rn_deriv VitaliFamily.ae_tendsto_rnDeriv
+-/
/-! ### Lebesgue density points -/
+#print VitaliFamily.ae_tendsto_measure_inter_div_of_measurableSet /-
/-- Given a measurable set `s`, then `μ (s ∩ a) / μ a` converges when `a` shrinks to a typical
point `x` along a Vitali family. The limit is `1` for `x ∈ s` and `0` for `x ∉ s`. This shows that
almost every point of `s` is a Lebesgue density point for `s`. A version for non-measurable sets
@@ -825,6 +856,7 @@ theorem ae_tendsto_measure_inter_div_of_measurableSet {s : Set α} (hs : Measura
intro x hx h'x
simpa only [h'x, restrict_apply' hs, inter_comm] using hx
#align vitali_family.ae_tendsto_measure_inter_div_of_measurable_set VitaliFamily.ae_tendsto_measure_inter_div_of_measurableSet
+-/
#print VitaliFamily.ae_tendsto_measure_inter_div /-
/-- Given an arbitrary set `s`, then `μ (s ∩ a) / μ a` converges to `1` when `a` shrinks to a
@@ -858,6 +890,7 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
/-! ### Lebesgue differentiation theorem -/
+#print VitaliFamily.ae_tendsto_lintegral_div' /-
theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h'f : ∫⁻ y, f y ∂μ ≠ ∞) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, f y ∂μ) / μ a) (v.filterAt x) (𝓝 (f x)) :=
by
@@ -869,7 +902,9 @@ theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h
filter_upwards [v.eventually_filter_at_measurable_set] with a ha
rw [← with_density_apply f ha]
#align vitali_family.ae_tendsto_lintegral_div' VitaliFamily.ae_tendsto_lintegral_div'
+-/
+#print VitaliFamily.ae_tendsto_lintegral_div /-
theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ) (h'f : ∫⁻ y, f y ∂μ ≠ ∞) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, f y ∂μ) / μ a) (v.filterAt x) (𝓝 (f x)) :=
by
@@ -885,7 +920,9 @@ theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ
apply lintegral_congr_ae
exact ae_restrict_of_ae hf.ae_eq_mk
#align vitali_family.ae_tendsto_lintegral_div VitaliFamily.ae_tendsto_lintegral_div
+-/
+#print VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div' /-
theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f μ)
(h'f : StronglyMeasurable f) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) :=
@@ -966,7 +1003,9 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
exact mul_le_mul_right' xc.le _
_ = ε * μ a := by rw [← add_mul, ENNReal.add_halves]
#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'
+-/
+#print VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div /-
theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) :=
by
@@ -981,7 +1020,9 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ
filter_upwards [hf.1.ae_eq_mk] with y hy
rw [hy, h'x]
#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div
+-/
+#print VitaliFamily.ae_tendsto_average_norm_sub /-
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
average of `‖f y - f x‖` on `a` tends to `0` as `a` shrinks to `x` along a Vitali family.-/
theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
@@ -1005,6 +1046,7 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
intro x
exact NNReal.coe_nonneg _
#align vitali_family.ae_tendsto_average_norm_sub VitaliFamily.ae_tendsto_average_norm_sub
+-/
#print VitaliFamily.ae_tendsto_average /-
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -642,7 +642,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
have M : MeasurableSet (s ∩ f ⁻¹' I) := hs.inter (f_meas measurableSet_Ico)
simp only [f, M, with_density_apply, coe_nnreal_smul_apply]
calc
- (∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ) ≤ ∫⁻ x in s ∩ f ⁻¹' I, t ^ (n + 1) ∂μ :=
+ ∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ ≤ ∫⁻ x in s ∩ f ⁻¹' I, t ^ (n + 1) ∂μ :=
lintegral_mono_ae ((ae_restrict_iff' M).2 (eventually_of_forall fun x hx => hx.2.2.le))
_ = t ^ (n + 1) * μ (s ∩ f ⁻¹' I) := by
simp only [lintegral_const, MeasurableSet.univ, measure.restrict_apply, univ_inter]
@@ -858,7 +858,7 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
/-! ### Lebesgue differentiation theorem -/
-theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h'f : (∫⁻ y, f y ∂μ) ≠ ∞) :
+theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h'f : ∫⁻ y, f y ∂μ ≠ ∞) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, f y ∂μ) / μ a) (v.filterAt x) (𝓝 (f x)) :=
by
let ρ := μ.with_density f
@@ -870,10 +870,10 @@ theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h
rw [← with_density_apply f ha]
#align vitali_family.ae_tendsto_lintegral_div' VitaliFamily.ae_tendsto_lintegral_div'
-theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ) (h'f : (∫⁻ y, f y ∂μ) ≠ ∞) :
+theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ) (h'f : ∫⁻ y, f y ∂μ ≠ ∞) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, f y ∂μ) / μ a) (v.filterAt x) (𝓝 (f x)) :=
by
- have A : (∫⁻ y, hf.mk f y ∂μ) ≠ ∞ := by
+ have A : ∫⁻ y, hf.mk f y ∂μ ≠ ∞ := by
convert h'f using 1
apply lintegral_congr_ae
exact hf.ae_eq_mk.symm
@@ -911,7 +911,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
exact strongly_measurable_const.indicator (IsOpen.measurableSet (A.set_mem n))
· apply ne_of_lt
calc
- (∫⁻ y, ↑‖f y - (A.set n).indicator (fun y : α => c) y‖₊ ∂μ) ≤
+ ∫⁻ y, ↑‖f y - (A.set n).indicator (fun y : α => c) y‖₊ ∂μ ≤
∫⁻ y, ‖f y‖₊ + ‖(A.set n).indicator (fun y : α => c) y‖₊ ∂μ :=
by
apply lintegral_mono
@@ -919,7 +919,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
dsimp
rw [← ENNReal.coe_add]
exact ENNReal.coe_le_coe.2 (nnnorm_sub_le _ _)
- _ = (∫⁻ y, ‖f y‖₊ ∂μ) + ∫⁻ y, ‖(A.set n).indicator (fun y : α => c) y‖₊ ∂μ :=
+ _ = ∫⁻ y, ‖f y‖₊ ∂μ + ∫⁻ y, ‖(A.set n).indicator (fun y : α => c) y‖₊ ∂μ :=
(lintegral_add_left h'f.ennnorm _)
_ < ∞ + ∞ :=
haveI I : integrable ((A.set n).indicator fun y : α => c) μ := by
@@ -952,11 +952,11 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
a ha h'a h''a
apply ENNReal.div_le_of_le_mul
calc
- (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) ≤ ∫⁻ y in a, ‖f y - c‖₊ + ‖f x - c‖₊ ∂μ :=
+ ∫⁻ y in a, ‖f y - f x‖₊ ∂μ ≤ ∫⁻ y in a, ‖f y - c‖₊ + ‖f x - c‖₊ ∂μ :=
by
apply lintegral_mono fun x => _
simpa only [← edist_eq_coe_nnnorm_sub] using edist_triangle_right _ _ _
- _ = (∫⁻ y in a, ‖f y - c‖₊ ∂μ) + ∫⁻ y in a, ‖f x - c‖₊ ∂μ :=
+ _ = ∫⁻ y in a, ‖f y - c‖₊ ∂μ + ∫⁻ y in a, ‖f x - c‖₊ ∂μ :=
(lintegral_add_right _ measurable_const)
_ ≤ ε / 2 * μ a + ε / 2 * μ a := by
refine' add_le_add _ _
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -123,7 +123,6 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
μ s ≤ ∑' x : h.index, μ (h.covering x) := h.measure_le_tsum
_ = ∑' x : h.index, 0 := by congr; ext1 x; exact h.covering_mem x.2
_ = 0 := by simp only [tsum_zero, add_zero]
-
#align vitali_family.ae_eventually_measure_pos VitaliFamily.ae_eventually_measure_pos
/-- For every point `x`, sufficiently small sets in a Vitali family around `x` have finite measure.
@@ -165,7 +164,6 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
rw [measure_Union h.covering_disjoint_subtype fun i => h.measurable_set_u i.2]
_ ≤ ν U := (measure_mono (Union_subset fun i => (h.covering_mem i.2).2))
_ ≤ ν s + ε := νU
-
#align vitali_family.measure_le_of_frequently_le VitaliFamily.measure_le_of_frequently_le
section
@@ -205,7 +203,6 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
exact hx.1
_ ≤ ε⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
_ = 0 := by rw [ρo, MulZeroClass.mul_zero]
-
obtain ⟨u, u_anti, u_pos, u_lim⟩ :
∃ u : ℕ → ℝ≥0, StrictAnti u ∧ (∀ n : ℕ, 0 < u n) ∧ tendsto u at_top (𝓝 0) :=
exists_seq_strictAnti_tendsto (0 : ℝ≥0)
@@ -252,7 +249,6 @@ theorem null_of_frequently_le_of_frequently_ge {c d : ℝ≥0} (hcd : c < d) (s
_ ≤ ρ s' :=
v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul d) s' fun x hx =>
hd x hx.1
-
#align vitali_family.null_of_frequently_le_of_frequently_ge VitaliFamily.null_of_frequently_le_of_frequently_ge
/-- If `ρ` is absolutely continuous with respect to `μ`, then for almost every `x`,
@@ -392,7 +388,6 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
_ ≤ ∑' (m) (n), μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
((measure_Union_le _).trans (ENNReal.tsum_le_tsum fun m => measure_Union_le _))
_ = 0 := by simp only [H, tsum_zero]
-
-- now starts the nontrivial part of the argument. We fix `m` and `n`, and show that the
-- measurable supersets of `u m` and `w n` have zero measure intersection by using the lemmas
-- `measure_to_measurable_add_inter_left` (to reduce to `u m` or `w n` instead of the measurable
@@ -426,7 +421,6 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
_ = p * μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) := by
simp only [coe_nnreal_smul_apply,
measure_to_measurable_add_inter_right (measurable_set_to_measurable _ _) I]
-
have B :
(q : ℝ≥0∞) * μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) ≤
ρ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
@@ -453,7 +447,6 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
conv_rhs => rw [inter_comm]
rw [inter_comm]
exact (measure_to_measurable_add_inter_left (measurable_set_to_measurable _ _) J).symm
-
by_contra
apply lt_irrefl (ρ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)))
calc
@@ -471,7 +464,6 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
apply lt_of_le_of_lt (measure_mono _) (measure_spanning_sets_lt_top (ρ + μ) m)
exact inter_subset_right _ _
_ ≤ ρ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) := B
-
#align vitali_family.exists_measurable_supersets_lim_ratio VitaliFamily.exists_measurable_supersets_limRatio
#print VitaliFamily.aemeasurable_limRatio /-
@@ -521,7 +513,6 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
(add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le))
_ ≤ p * μ s := by rw [add_zero];
exact mul_le_mul_left' (measure_mono (inter_subset_left _ _)) _
-
refine' v.measure_le_of_frequently_le _ hρ _ fun x hx => _
have I : ∀ᶠ b : Set α in v.filter_at x, ρ b / μ b < p := (tendsto_order.1 hx.2).2 _ (h hx.1)
apply I.frequently.mono fun a ha => _
@@ -549,7 +540,6 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
_ ≤ ρ s := by rw [A, MulZeroClass.mul_zero, add_zero];
exact measure_mono (inter_subset_left _ _)
-
refine' v.measure_le_of_frequently_le _ (absolutely_continuous.rfl.smul _) _ _
intro x hx
have I : ∀ᶠ a in v.filter_at x, (q : ℝ≥0∞) < ρ a / μ a := (tendsto_order.1 hx.2).1 _ (h hx.1)
@@ -673,7 +663,6 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
refine' mul_lt_mul' le_rfl _ (zero_le _) (NNReal.zpow_pos t_ne_zero' _)
rw [zpow_neg_one]
exact inv_lt_one ht
-
calc
ν s =
ν (s ∩ f ⁻¹' {0}) + ν (s ∩ f ⁻¹' {∞}) + ∑' n : ℤ, ν (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
@@ -684,7 +673,6 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
(add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C))
_ = ((t : ℝ≥0∞) ^ 2 • ρ) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow ((t : ℝ≥0∞) ^ 2 • ρ) f_meas hs ht).symm
-
#align vitali_family.with_density_le_mul VitaliFamily.withDensity_le_mul
/-- As an intermediate step to show that `μ.with_density (v.lim_ratio_meas hρ) = ρ`, we show here
@@ -736,7 +724,6 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
rw [add_comm, ENNReal.zpow_add t_ne_zero ENNReal.coe_ne_top, zpow_one]
exact mul_le_mul_left' hx.2.1 _
_ = t * ∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ := lintegral_const_mul _ f_meas
-
calc
ρ s =
ρ (s ∩ f ⁻¹' {0}) + ρ (s ∩ f ⁻¹' {∞}) + ∑' n : ℤ, ρ (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
@@ -747,7 +734,6 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
(add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C))
_ = (t • ν) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow (t • ν) f_meas hs ht).symm
-
#align vitali_family.le_mul_with_density VitaliFamily.le_mul_withDensity
#print VitaliFamily.withDensity_limRatioMeas_eq /-
@@ -940,7 +926,6 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
simp only [integrable_indicator_iff (IsOpen.measurableSet (A.set_mem n)),
integrable_on_const, A.finite n, or_true_iff]
ENNReal.add_lt_add hf.2 I.2
-
filter_upwards [main, v.ae_eventually_measure_pos] with x hx h'x
have M :
∀ c ∈ t, tendsto (fun a => (∫⁻ y in a, ‖f y - c‖₊ ∂μ) / μ a) (v.filter_at x) (𝓝 ‖f x - c‖₊) :=
@@ -980,7 +965,6 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
· simp only [lintegral_const, measure.restrict_apply, MeasurableSet.univ, univ_inter]
exact mul_le_mul_right' xc.le _
_ = ε * μ a := by rw [← add_mul, ENNReal.add_halves]
-
#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'
theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.covering.differentiation
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
+! leanprover-community/mathlib commit 7e5137f579de09a059a5ce98f364a04e221aabf0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -18,6 +18,9 @@ import Mathbin.MeasureTheory.Decomposition.Lebesgue
/-!
# Differentiation of measures
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
On a second countable metric space with a measure `μ`, consider a Vitali family (i.e., for each `x`
one has a family of sets shrinking to `x`, with a good behavior with respect to covering theorems).
Consider also another measure `ρ`. Then, for almost every `x`, the ratio `ρ a / μ a` converges when
mathlib commit https://github.com/leanprover-community/mathlib/commit/58a272265b5e05f258161260dd2c5d247213cbd3
@@ -91,12 +91,14 @@ include v
namespace VitaliFamily
+#print VitaliFamily.limRatio /-
/-- The limit along a Vitali family of `ρ a / μ a` where it makes sense, and garbage otherwise.
Do *not* use this definition: it is only a temporary device to show that this ratio tends almost
everywhere to the Radon-Nikodym derivative. -/
noncomputable def limRatio (ρ : Measure α) (x : α) : ℝ≥0∞ :=
limUnder (v.filterAt x) fun a => ρ a / μ a
#align vitali_family.lim_ratio VitaliFamily.limRatio
+-/
/-- For almost every point `x`, sufficiently small sets in a Vitali family around `x` have positive
measure. (This is a nontrivial result, following from the covering property of Vitali families). -/
@@ -469,21 +471,27 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
#align vitali_family.exists_measurable_supersets_lim_ratio VitaliFamily.exists_measurable_supersets_limRatio
-theorem aEMeasurable_limRatio : AEMeasurable (v.limRatio ρ) μ :=
+#print VitaliFamily.aemeasurable_limRatio /-
+theorem aemeasurable_limRatio : AEMeasurable (v.limRatio ρ) μ :=
by
apply ENNReal.aemeasurable_of_exist_almost_disjoint_supersets _ _ fun p q hpq => _
exact v.exists_measurable_supersets_lim_ratio hρ hpq
-#align vitali_family.ae_measurable_lim_ratio VitaliFamily.aEMeasurable_limRatio
+#align vitali_family.ae_measurable_lim_ratio VitaliFamily.aemeasurable_limRatio
+-/
+#print VitaliFamily.limRatioMeas /-
/-- A measurable version of `v.lim_ratio ρ`. Do *not* use this definition: it is only a temporary
device to show that `v.lim_ratio` is almost everywhere equal to the Radon-Nikodym derivative. -/
noncomputable def limRatioMeas : α → ℝ≥0∞ :=
- (v.aEMeasurable_limRatio hρ).mk _
+ (v.aemeasurable_limRatio hρ).mk _
#align vitali_family.lim_ratio_meas VitaliFamily.limRatioMeas
+-/
+#print VitaliFamily.limRatioMeas_measurable /-
theorem limRatioMeas_measurable : Measurable (v.limRatioMeas hρ) :=
AEMeasurable.measurable_mk _
#align vitali_family.lim_ratio_meas_measurable VitaliFamily.limRatioMeas_measurable
+-/
theorem ae_tendsto_limRatioMeas :
∀ᵐ x ∂μ, Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x)) :=
@@ -739,6 +747,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
#align vitali_family.le_mul_with_density VitaliFamily.le_mul_withDensity
+#print VitaliFamily.withDensity_limRatioMeas_eq /-
theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :=
by
ext1 s hs
@@ -764,6 +773,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
filter_upwards [self_mem_nhdsWithin] with _ ht
exact v.le_mul_with_density hρ hs ht
#align vitali_family.with_density_lim_ratio_meas_eq VitaliFamily.withDensity_limRatioMeas_eq
+-/
/-- Weak version of the main theorem on differentiation of measures: given a Vitali family `v`
for a locally finite measure `μ`, and another locally finite measure `ρ`, then for `μ`-almost
@@ -827,6 +837,7 @@ theorem ae_tendsto_measure_inter_div_of_measurableSet {s : Set α} (hs : Measura
simpa only [h'x, restrict_apply' hs, inter_comm] using hx
#align vitali_family.ae_tendsto_measure_inter_div_of_measurable_set VitaliFamily.ae_tendsto_measure_inter_div_of_measurableSet
+#print VitaliFamily.ae_tendsto_measure_inter_div /-
/-- Given an arbitrary set `s`, then `μ (s ∩ a) / μ a` converges to `1` when `a` shrinks to a
typical point of `s` along a Vitali family. This shows that almost every point of `s` is a
Lebesgue density point for `s`. A stronger version for measurable sets is given
@@ -853,6 +864,7 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
congr 1
exact measure_to_measurable_inter_of_sigma_finite ha _
#align vitali_family.ae_tendsto_measure_inter_div VitaliFamily.ae_tendsto_measure_inter_div
+-/
/-! ### Lebesgue differentiation theorem -/
@@ -1007,6 +1019,7 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
exact NNReal.coe_nonneg _
#align vitali_family.ae_tendsto_average_norm_sub VitaliFamily.ae_tendsto_average_norm_sub
+#print VitaliFamily.ae_tendsto_average /-
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
average of `f` on `a` tends to `f x` as `a` shrinks to `x` along a Vitali family.-/
theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E} (hf : Integrable f μ) :
@@ -1023,6 +1036,7 @@ theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E}
· exact (integrable_inv_smul_measure ha.ne' h'a.ne).2 hf.integrable_on
· exact (integrable_inv_smul_measure ha.ne' h'a.ne).2 (integrable_on_const.2 (Or.inr h'a))
#align vitali_family.ae_tendsto_average VitaliFamily.ae_tendsto_average
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -103,10 +103,10 @@ measure. (This is a nontrivial result, following from the covering property of V
theorem ae_eventually_measure_pos [SecondCountableTopology α] :
∀ᵐ x ∂μ, ∀ᶠ a in v.filterAt x, 0 < μ a :=
by
- set s := { x | ¬∀ᶠ a in v.filter_at x, 0 < μ a } with hs
+ set s := {x | ¬∀ᶠ a in v.filter_at x, 0 < μ a} with hs
simp only [not_lt, not_eventually, nonpos_iff_eq_zero] at hs
change μ s = 0
- let f : α → Set (Set α) := fun x => { a | μ a = 0 }
+ let f : α → Set (Set α) := fun x => {a | μ a = 0}
have h : v.fine_subfamily_on f s := by
intro x hx ε εpos
rw [hs] at hx
@@ -123,7 +123,7 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
/-- For every point `x`, sufficiently small sets in a Vitali family around `x` have finite measure.
(This is a trivial result, following from the fact that the measure is locally finite). -/
-theorem eventually_measure_lt_top [LocallyFiniteMeasure μ] (x : α) :
+theorem eventually_measure_lt_top [IsLocallyFiniteMeasure μ] (x : α) :
∀ᶠ a in v.filterAt x, μ a < ∞ :=
by
obtain ⟨ε, εpos, με⟩ : ∃ (ε : ℝ) (hi : 0 < ε), μ (closed_ball x ε) < ∞ :=
@@ -134,14 +134,14 @@ theorem eventually_measure_lt_top [LocallyFiniteMeasure μ] (x : α) :
/-- If two measures `ρ` and `ν` have, at every point of a set `s`, arbitrarily small sets in a
Vitali family satisfying `ρ a ≤ ν a`, then `ρ s ≤ ν s` if `ρ ≪ μ`.-/
theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α] {ρ : Measure α}
- (ν : Measure α) [LocallyFiniteMeasure ν] (hρ : ρ ≪ μ) (s : Set α)
+ (ν : Measure α) [IsLocallyFiniteMeasure ν] (hρ : ρ ≪ μ) (s : Set α)
(hs : ∀ x ∈ s, ∃ᶠ a in v.filterAt x, ρ a ≤ ν a) : ρ s ≤ ν s :=
by
-- this follows from a covering argument using the sets satisfying `ρ a ≤ ν a`.
apply ENNReal.le_of_forall_pos_le_add fun ε εpos hc => _
obtain ⟨U, sU, U_open, νU⟩ : ∃ (U : Set α) (H : s ⊆ U), IsOpen U ∧ ν U ≤ ν s + ε :=
exists_is_open_le_add s ν (ENNReal.coe_pos.2 εpos).ne'
- let f : α → Set (Set α) := fun x => { a | ρ a ≤ ν a ∧ a ⊆ U }
+ let f : α → Set (Set α) := fun x => {a | ρ a ≤ ν a ∧ a ⊆ U}
have h : v.fine_subfamily_on f s :=
by
apply v.fine_subfamily_on_of_frequently f s fun x hx => _
@@ -165,8 +165,8 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
section
-variable [SecondCountableTopology α] [BorelSpace α] [LocallyFiniteMeasure μ] {ρ : Measure α}
- [LocallyFiniteMeasure ρ]
+variable [SecondCountableTopology α] [BorelSpace α] [IsLocallyFiniteMeasure μ] {ρ : Measure α}
+ [IsLocallyFiniteMeasure ρ]
/-- If a measure `ρ` is singular with respect to `μ`, then for `μ` almost every `x`, the ratio
`ρ a / μ a` tends to zero when `a` shrinks to `x` along the Vitali family. This makes sense
@@ -177,7 +177,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
have A : ∀ ε > (0 : ℝ≥0), ∀ᵐ x ∂μ, ∀ᶠ a in v.filter_at x, ρ a < ε * μ a :=
by
intro ε εpos
- set s := { x | ¬∀ᶠ a in v.filter_at x, ρ a < ε * μ a } with hs
+ set s := {x | ¬∀ᶠ a in v.filter_at x, ρ a < ε * μ a} with hs
change μ s = 0
obtain ⟨o, o_meas, ρo, μo⟩ : ∃ o : Set α, MeasurableSet o ∧ ρ o = 0 ∧ μ (oᶜ) = 0 := hρ
apply le_antisymm _ bot_le
@@ -313,8 +313,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
∃ a b,
MeasurableSet a ∧
MeasurableSet b ∧
- { x | v.limRatio ρ x < p } ⊆ a ∧
- { x | (q : ℝ≥0∞) < v.limRatio ρ x } ⊆ b ∧ μ (a ∩ b) = 0 :=
+ {x | v.limRatio ρ x < p} ⊆ a ∧ {x | (q : ℝ≥0∞) < v.limRatio ρ x} ⊆ b ∧ μ (a ∩ b) = 0 :=
by
/- Here is a rough sketch, assuming that the measure is finite and the limit is well defined
everywhere. Let `u := {x | v.lim_ratio ρ x < p}` and `w := {x | q < v.lim_ratio ρ x}`. They
@@ -331,10 +330,10 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
(provided by `spanning_sets (ρ + μ)`) and to restrict to the set where the limit is well defined
(called `s` below, of full measure). Otherwise, the argument goes through.
-/
- let s := { x | ∃ c, tendsto (fun a => ρ a / μ a) (v.filter_at x) (𝓝 c) }
+ let s := {x | ∃ c, tendsto (fun a => ρ a / μ a) (v.filter_at x) (𝓝 c)}
let o : ℕ → Set α := spanning_sets (ρ + μ)
- let u n := s ∩ { x | v.lim_ratio ρ x < p } ∩ o n
- let w n := s ∩ { x | (q : ℝ≥0∞) < v.lim_ratio ρ x } ∩ o n
+ let u n := s ∩ {x | v.lim_ratio ρ x < p} ∩ o n
+ let w n := s ∩ {x | (q : ℝ≥0∞) < v.lim_ratio ρ x} ∩ o n
-- the supersets are obtained by restricting to the set `s` where the limit is well defined, to
-- a finite measure part `o n`, taking a measurable superset here, and then taking the union over
-- `n`.
@@ -498,9 +497,9 @@ theorem ae_tendsto_limRatioMeas :
proved in `measure_le_of_frequently_le`. Since `ρ a / μ a` tends almost everywhere to
`v.lim_ratio_meas hρ x`, the same property holds for sets `s` on which `v.lim_ratio_meas hρ < p`. -/
theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
- (h : s ⊆ { x | v.limRatioMeas hρ x < p }) : ρ s ≤ p * μ s :=
+ (h : s ⊆ {x | v.limRatioMeas hρ x < p}) : ρ s ≤ p * μ s :=
by
- let t := { x : α | tendsto (fun a => ρ a / μ a) (v.filter_at x) (𝓝 (v.lim_ratio_meas hρ x)) }
+ let t := {x : α | tendsto (fun a => ρ a / μ a) (v.filter_at x) (𝓝 (v.lim_ratio_meas hρ x))}
have A : μ (tᶜ) = 0 := v.ae_tendsto_lim_ratio_meas hρ
suffices H : ρ (s ∩ t) ≤ (p • μ) (s ∩ t);
exact
@@ -524,9 +523,9 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
proved in `measure_le_of_frequently_le`. Since `ρ a / μ a` tends almost everywhere to
`v.lim_ratio_meas hρ x`, the same property holds for sets `s` on which `q < v.lim_ratio_meas hρ`. -/
theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
- (h : s ⊆ { x | (q : ℝ≥0∞) < v.limRatioMeas hρ x }) : (q : ℝ≥0∞) * μ s ≤ ρ s :=
+ (h : s ⊆ {x | (q : ℝ≥0∞) < v.limRatioMeas hρ x}) : (q : ℝ≥0∞) * μ s ≤ ρ s :=
by
- let t := { x : α | tendsto (fun a => ρ a / μ a) (v.filter_at x) (𝓝 (v.lim_ratio_meas hρ x)) }
+ let t := {x : α | tendsto (fun a => ρ a / μ a) (v.filter_at x) (𝓝 (v.lim_ratio_meas hρ x))}
have A : μ (tᶜ) = 0 := v.ae_tendsto_lim_ratio_meas hρ
suffices H : (q • μ) (s ∩ t) ≤ ρ (s ∩ t);
exact
@@ -549,12 +548,12 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
#align vitali_family.mul_measure_le_of_subset_lt_lim_ratio_meas VitaliFamily.mul_measure_le_of_subset_lt_limRatioMeas
/-- The points with `v.lim_ratio_meas hρ x = ∞` have measure `0` for `μ`. -/
-theorem measure_limRatioMeas_top : μ { x | v.limRatioMeas hρ x = ∞ } = 0 :=
+theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 :=
by
refine' null_of_locally_null _ fun x hx => _
obtain ⟨o, xo, o_open, μo⟩ : ∃ o : Set α, x ∈ o ∧ IsOpen o ∧ ρ o < ∞ :=
measure.exists_is_open_measure_lt_top ρ x
- let s := { x : α | v.lim_ratio_meas hρ x = ∞ } ∩ o
+ let s := {x : α | v.lim_ratio_meas hρ x = ∞} ∩ o
refine' ⟨s, inter_mem_nhdsWithin _ (o_open.mem_nhds xo), le_antisymm _ bot_le⟩
have ρs : ρ s ≠ ∞ := ((measure_mono (inter_subset_right _ _)).trans_lt μo).Ne
have A : ∀ q : ℝ≥0, 1 ≤ q → μ s ≤ q⁻¹ * ρ s :=
@@ -578,12 +577,12 @@ theorem measure_limRatioMeas_top : μ { x | v.limRatioMeas hρ x = ∞ } = 0 :=
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
/-- The points with `v.lim_ratio_meas hρ x = 0` have measure `0` for `ρ`. -/
-theorem measure_limRatioMeas_zero : ρ { x | v.limRatioMeas hρ x = 0 } = 0 :=
+theorem measure_limRatioMeas_zero : ρ {x | v.limRatioMeas hρ x = 0} = 0 :=
by
refine' null_of_locally_null _ fun x hx => _
obtain ⟨o, xo, o_open, μo⟩ : ∃ o : Set α, x ∈ o ∧ IsOpen o ∧ μ o < ∞ :=
measure.exists_is_open_measure_lt_top μ x
- let s := { x : α | v.lim_ratio_meas hρ x = 0 } ∩ o
+ let s := {x : α | v.lim_ratio_meas hρ x = 0} ∩ o
refine' ⟨s, inter_mem_nhdsWithin _ (o_open.mem_nhds xo), le_antisymm _ bot_le⟩
have μs : μ s ≠ ∞ := ((measure_mono (inter_subset_right _ _)).trans_lt μo).Ne
have A : ∀ q : ℝ≥0, 0 < q → ρ s ≤ q * μ s :=
@@ -600,7 +599,7 @@ theorem measure_limRatioMeas_zero : ρ { x | v.limRatioMeas hρ x = 0 } = 0 :=
exact nhdsWithin_le_nhds
simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
apply ge_of_tendsto B
- filter_upwards [self_mem_nhdsWithin]using A
+ filter_upwards [self_mem_nhdsWithin] using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
/-- As an intermediate step to show that `μ.with_density (v.lim_ratio_meas hρ) = ρ`, we show here
@@ -752,7 +751,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
· simp only [one_pow, ENNReal.coe_one, Ne.def, or_true_iff, ENNReal.one_ne_top, not_false_iff]
simp only [one_pow, one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
- filter_upwards [self_mem_nhdsWithin]with _ ht
+ filter_upwards [self_mem_nhdsWithin] with _ ht
exact v.with_density_le_mul hρ hs ht
· have :
tendsto (fun t : ℝ≥0 => (t : ℝ≥0∞) * μ.with_density (v.lim_ratio_meas hρ) s) (𝓝[>] 1)
@@ -762,7 +761,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
simp only [ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
simp only [one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
- filter_upwards [self_mem_nhdsWithin]with _ ht
+ filter_upwards [self_mem_nhdsWithin] with _ ht
exact v.le_mul_with_density hρ hs ht
#align vitali_family.with_density_lim_ratio_meas_eq VitaliFamily.withDensity_limRatioMeas_eq
@@ -780,7 +779,7 @@ theorem ae_tendsto_rnDeriv_of_absolutelyContinuous :
have A : (μ.with_density (v.lim_ratio_meas hρ)).rnDeriv μ =ᵐ[μ] v.lim_ratio_meas hρ :=
rn_deriv_with_density μ (v.lim_ratio_meas_measurable hρ)
rw [v.with_density_lim_ratio_meas_eq hρ] at A
- filter_upwards [v.ae_tendsto_lim_ratio_meas hρ, A]with _ _ h'x
+ filter_upwards [v.ae_tendsto_lim_ratio_meas hρ, A] with _ _ h'x
rwa [h'x]
#align vitali_family.ae_tendsto_rn_deriv_of_absolutely_continuous VitaliFamily.ae_tendsto_rnDeriv_of_absolutelyContinuous
@@ -803,7 +802,7 @@ theorem ae_tendsto_rnDeriv :
rn_deriv_with_density μ (measurable_rn_deriv ρ μ)
have C : ∀ᵐ x ∂μ, tendsto (fun a => t a / μ a) (v.filter_at x) (𝓝 (t.rn_deriv μ x)) :=
v.ae_tendsto_rn_deriv_of_absolutely_continuous (with_density_absolutely_continuous _ _)
- filter_upwards [A, B, C]with _ Ax Bx Cx
+ filter_upwards [A, B, C] with _ Ax Bx Cx
convert Ax.add Cx
· ext1 a
conv_lhs => rw [eq_add]
@@ -845,12 +844,12 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
have B : ∀ᵐ x ∂μ.restrict s, t.indicator 1 x = (1 : ℝ≥0∞) :=
by
refine' ae_restrict_of_ae_restrict_of_subset (subset_to_measurable μ s) _
- filter_upwards [ae_restrict_mem (measurable_set_to_measurable μ s)]with _ hx
+ filter_upwards [ae_restrict_mem (measurable_set_to_measurable μ s)] with _ hx
simp only [hx, Pi.one_apply, indicator_of_mem]
- filter_upwards [A, B]with x hx h'x
+ filter_upwards [A, B] with x hx h'x
rw [h'x] at hx
apply hx.congr' _
- filter_upwards [v.eventually_filter_at_measurable_set x]with _ ha
+ filter_upwards [v.eventually_filter_at_measurable_set x] with _ ha
congr 1
exact measure_to_measurable_inter_of_sigma_finite ha _
#align vitali_family.ae_tendsto_measure_inter_div VitaliFamily.ae_tendsto_measure_inter_div
@@ -863,10 +862,10 @@ theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h
by
let ρ := μ.with_density f
have : is_finite_measure ρ := is_finite_measure_with_density h'f
- filter_upwards [ae_tendsto_rn_deriv v ρ, rn_deriv_with_density μ hf]with x hx h'x
+ filter_upwards [ae_tendsto_rn_deriv v ρ, rn_deriv_with_density μ hf] with x hx h'x
rw [← h'x]
apply hx.congr' _
- filter_upwards [v.eventually_filter_at_measurable_set]with a ha
+ filter_upwards [v.eventually_filter_at_measurable_set] with a ha
rw [← with_density_apply f ha]
#align vitali_family.ae_tendsto_lintegral_div' VitaliFamily.ae_tendsto_lintegral_div'
@@ -877,7 +876,7 @@ theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ
convert h'f using 1
apply lintegral_congr_ae
exact hf.ae_eq_mk.symm
- filter_upwards [v.ae_tendsto_lintegral_div' hf.measurable_mk A, hf.ae_eq_mk]with x hx h'x
+ filter_upwards [v.ae_tendsto_lintegral_div' hf.measurable_mk A, hf.ae_eq_mk] with x hx h'x
rw [h'x]
convert hx
ext1 a
@@ -927,7 +926,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
integrable_on_const, A.finite n, or_true_iff]
ENNReal.add_lt_add hf.2 I.2
- filter_upwards [main, v.ae_eventually_measure_pos]with x hx h'x
+ filter_upwards [main, v.ae_eventually_measure_pos] with x hx h'x
have M :
∀ c ∈ t, tendsto (fun a => (∫⁻ y in a, ‖f y - c‖₊ ∂μ) / μ a) (v.filter_at x) (𝓝 ‖f x - c‖₊) :=
by
@@ -937,7 +936,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
simp only [xn, indicator_of_mem] at hx
apply hx.congr' _
filter_upwards [v.eventually_filter_at_subset_of_nhds (IsOpen.mem_nhds (A.set_mem n) xn),
- v.eventually_filter_at_measurable_set]with a ha h'a
+ v.eventually_filter_at_measurable_set] with a ha h'a
congr 1
apply set_lintegral_congr_fun h'a
apply eventually_of_forall fun y => _
@@ -949,8 +948,8 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
simp_rw [← edist_eq_coe_nnnorm_sub]
have : f x ∈ closure t := ht (mem_range_self _)
exact EMetric.mem_closure_iff.1 this (ε / 2) (ENNReal.half_pos (ne_of_gt εpos))
- filter_upwards [(tendsto_order.1 (M c ct)).2 (ε / 2) xc, h'x,
- v.eventually_measure_lt_top x]with a ha h'a h''a
+ filter_upwards [(tendsto_order.1 (M c ct)).2 (ε / 2) xc, h'x, v.eventually_measure_lt_top x] with
+ a ha h'a h''a
apply ENNReal.div_le_of_le_mul
calc
(∫⁻ y in a, ‖f y - f x‖₊ ∂μ) ≤ ∫⁻ y in a, ‖f y - c‖₊ + ‖f x - c‖₊ ∂μ :=
@@ -974,13 +973,13 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ
by
have I : integrable (hf.1.mk f) μ := hf.congr hf.1.ae_eq_mk
filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div' I hf.1.stronglyMeasurable_mk,
- hf.1.ae_eq_mk]with x hx h'x
+ hf.1.ae_eq_mk] with x hx h'x
apply hx.congr _
intro a
congr 1
apply lintegral_congr_ae
apply ae_restrict_of_ae
- filter_upwards [hf.1.ae_eq_mk]with y hy
+ filter_upwards [hf.1.ae_eq_mk] with y hy
rw [hy, h'x]
#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div
@@ -989,12 +988,12 @@ average of `‖f y - f x‖` on `a` tends to `0` as `a` shrinks to `x` along a V
theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, ‖f y - f x‖ ∂μ) (v.filterAt x) (𝓝 0) :=
by
- filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf,
- v.ae_eventually_measure_pos]with x hx h'x
+ filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf, v.ae_eventually_measure_pos] with x hx
+ h'x
have := (ENNReal.tendsto_toReal ENNReal.zero_ne_top).comp hx
simp only [ENNReal.zero_toReal] at this
apply tendsto.congr' _ this
- filter_upwards [h'x, v.eventually_measure_lt_top x]with a ha h'a
+ filter_upwards [h'x, v.eventually_measure_lt_top x] with a ha h'a
simp only [Function.comp_apply, ENNReal.toReal_div, set_average_eq, div_eq_inv_mul]
have A : integrable_on (fun y => (‖f y - f x‖₊ : ℝ)) a μ :=
by
@@ -1013,10 +1012,10 @@ average of `f` on `a` tends to `f x` as `a` shrinks to `x` along a Vitali family
theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E} (hf : Integrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, f y ∂μ) (v.filterAt x) (𝓝 (f x)) :=
by
- filter_upwards [v.ae_tendsto_average_norm_sub hf, v.ae_eventually_measure_pos]with x hx h'x
+ filter_upwards [v.ae_tendsto_average_norm_sub hf, v.ae_eventually_measure_pos] with x hx h'x
rw [tendsto_iff_norm_tendsto_zero]
refine' squeeze_zero' (eventually_of_forall fun a => norm_nonneg _) _ hx
- filter_upwards [h'x, v.eventually_measure_lt_top x]with a ha h'a
+ filter_upwards [h'x, v.eventually_measure_lt_top x] with a ha h'a
nth_rw 1 [← set_average_const ha.ne' h'a.ne (f x)]
simp_rw [set_average_eq']
rw [← integral_sub]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -104,19 +104,19 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
∀ᵐ x ∂μ, ∀ᶠ a in v.filterAt x, 0 < μ a :=
by
set s := { x | ¬∀ᶠ a in v.filter_at x, 0 < μ a } with hs
- simp only [not_lt, not_eventually, nonpos_iff_eq_zero] at hs
+ simp only [not_lt, not_eventually, nonpos_iff_eq_zero] at hs
change μ s = 0
let f : α → Set (Set α) := fun x => { a | μ a = 0 }
have h : v.fine_subfamily_on f s := by
intro x hx ε εpos
- rw [hs] at hx
- simp only [frequently_filter_at_iff, exists_prop, gt_iff_lt, mem_set_of_eq] at hx
+ rw [hs] at hx
+ simp only [frequently_filter_at_iff, exists_prop, gt_iff_lt, mem_set_of_eq] at hx
rcases hx ε εpos with ⟨a, a_sets, ax, μa⟩
exact ⟨a, ⟨a_sets, μa⟩, ax⟩
refine' le_antisymm _ bot_le
calc
μ s ≤ ∑' x : h.index, μ (h.covering x) := h.measure_le_tsum
- _ = ∑' x : h.index, 0 := by congr ; ext1 x; exact h.covering_mem x.2
+ _ = ∑' x : h.index, 0 := by congr; ext1 x; exact h.covering_mem x.2
_ = 0 := by simp only [tsum_zero, add_zero]
#align vitali_family.ae_eventually_measure_pos VitaliFamily.ae_eventually_measure_pos
@@ -126,7 +126,7 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
theorem eventually_measure_lt_top [LocallyFiniteMeasure μ] (x : α) :
∀ᶠ a in v.filterAt x, μ a < ∞ :=
by
- obtain ⟨ε, εpos, με⟩ : ∃ (ε : ℝ)(hi : 0 < ε), μ (closed_ball x ε) < ∞ :=
+ obtain ⟨ε, εpos, με⟩ : ∃ (ε : ℝ) (hi : 0 < ε), μ (closed_ball x ε) < ∞ :=
(μ.finite_at_nhds x).exists_mem_basis nhds_basis_closed_ball
exact v.eventually_filter_at_iff.2 ⟨ε, εpos, fun a ha haε => (measure_mono haε).trans_lt με⟩
#align vitali_family.eventually_measure_lt_top VitaliFamily.eventually_measure_lt_top
@@ -139,7 +139,7 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
by
-- this follows from a covering argument using the sets satisfying `ρ a ≤ ν a`.
apply ENNReal.le_of_forall_pos_le_add fun ε εpos hc => _
- obtain ⟨U, sU, U_open, νU⟩ : ∃ (U : Set α)(H : s ⊆ U), IsOpen U ∧ ν U ≤ ν s + ε :=
+ obtain ⟨U, sU, U_open, νU⟩ : ∃ (U : Set α) (H : s ⊆ U), IsOpen U ∧ ν U ≤ ν s + ε :=
exists_is_open_le_add s ν (ENNReal.coe_pos.2 εpos).ne'
let f : α → Set (Set α) := fun x => { a | ρ a ≤ ν a ∧ a ⊆ U }
have h : v.fine_subfamily_on f s :=
@@ -195,8 +195,8 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
refine' mul_le_mul_left' _ _
refine' v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul ε) _ _
intro x hx
- rw [hs] at hx
- simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
+ rw [hs] at hx
+ simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
exact hx.1
_ ≤ ε⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
_ = 0 := by rw [ρo, MulZeroClass.mul_zero]
@@ -460,7 +460,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
by
apply (ENNReal.mul_lt_mul_right h _).2 (ENNReal.coe_lt_coe.2 hpq)
suffices H : (ρ + μ) (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) ≠ ∞
- · simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
+ · simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
exact H.2
apply (lt_of_le_of_lt (measure_mono (inter_subset_left _ _)) _).Ne
rw [measure_to_measurable]
@@ -491,7 +491,7 @@ theorem ae_tendsto_limRatioMeas :
by
filter_upwards [v.ae_tendsto_lim_ratio hρ, AEMeasurable.ae_eq_mk (v.ae_measurable_lim_ratio hρ)]
intro x hx h'x
- rwa [h'x] at hx
+ rwa [h'x] at hx
#align vitali_family.ae_tendsto_lim_ratio_meas VitaliFamily.ae_tendsto_limRatioMeas
/-- If, for all `x` in a set `s`, one has frequently `ρ a / μ a < p`, then `ρ s ≤ p * μ s`, as
@@ -572,7 +572,7 @@ theorem measure_limRatioMeas_top : μ { x | v.limRatioMeas hρ x = ∞ } = 0 :=
by
apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
- simp only [MulZeroClass.zero_mul, ENNReal.inv_top] at B
+ simp only [MulZeroClass.zero_mul, ENNReal.inv_top] at B
apply ge_of_tendsto B
exact eventually_at_top.2 ⟨1, A⟩
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
@@ -598,7 +598,7 @@ theorem measure_limRatioMeas_zero : ρ { x | v.limRatioMeas hρ x = 0 } = 0 :=
apply ENNReal.Tendsto.mul_const _ (Or.inr μs)
rw [ENNReal.tendsto_coe]
exact nhdsWithin_le_nhds
- simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
+ simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
apply ge_of_tendsto B
filter_upwards [self_mem_nhdsWithin]using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
@@ -750,7 +750,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
· exact ENNReal.Tendsto.pow (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds)
· simp only [one_pow, ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
· simp only [one_pow, ENNReal.coe_one, Ne.def, or_true_iff, ENNReal.one_ne_top, not_false_iff]
- simp only [one_pow, one_mul, ENNReal.coe_one] at this
+ simp only [one_pow, one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin]with _ ht
exact v.with_density_le_mul hρ hs ht
@@ -760,7 +760,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
by
refine' ENNReal.Tendsto.mul_const (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds) _
simp only [ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
- simp only [one_mul, ENNReal.coe_one] at this
+ simp only [one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin]with _ ht
exact v.le_mul_with_density hρ hs ht
@@ -779,7 +779,7 @@ theorem ae_tendsto_rnDeriv_of_absolutelyContinuous :
by
have A : (μ.with_density (v.lim_ratio_meas hρ)).rnDeriv μ =ᵐ[μ] v.lim_ratio_meas hρ :=
rn_deriv_with_density μ (v.lim_ratio_meas_measurable hρ)
- rw [v.with_density_lim_ratio_meas_eq hρ] at A
+ rw [v.with_density_lim_ratio_meas_eq hρ] at A
filter_upwards [v.ae_tendsto_lim_ratio_meas hρ, A]with _ _ h'x
rwa [h'x]
#align vitali_family.ae_tendsto_rn_deriv_of_absolutely_continuous VitaliFamily.ae_tendsto_rnDeriv_of_absolutelyContinuous
@@ -848,7 +848,7 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
filter_upwards [ae_restrict_mem (measurable_set_to_measurable μ s)]with _ hx
simp only [hx, Pi.one_apply, indicator_of_mem]
filter_upwards [A, B]with x hx h'x
- rw [h'x] at hx
+ rw [h'x] at hx
apply hx.congr' _
filter_upwards [v.eventually_filter_at_measurable_set x]with _ ha
congr 1
@@ -934,7 +934,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
intro c hc
obtain ⟨n, xn⟩ : ∃ n, x ∈ A.set n := by simpa [← A.spanning] using mem_univ x
specialize hx n c hc
- simp only [xn, indicator_of_mem] at hx
+ simp only [xn, indicator_of_mem] at hx
apply hx.congr' _
filter_upwards [v.eventually_filter_at_subset_of_nhds (IsOpen.mem_nhds (A.set_mem n) xn),
v.eventually_filter_at_measurable_set]with a ha h'a
@@ -961,7 +961,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
(lintegral_add_right _ measurable_const)
_ ≤ ε / 2 * μ a + ε / 2 * μ a := by
refine' add_le_add _ _
- · rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
+ · rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
exact ha.le
· simp only [lintegral_const, measure.restrict_apply, MeasurableSet.univ, univ_inter]
exact mul_le_mul_right' xc.le _
@@ -992,7 +992,7 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf,
v.ae_eventually_measure_pos]with x hx h'x
have := (ENNReal.tendsto_toReal ENNReal.zero_ne_top).comp hx
- simp only [ENNReal.zero_toReal] at this
+ simp only [ENNReal.zero_toReal] at this
apply tendsto.congr' _ this
filter_upwards [h'x, v.eventually_measure_lt_top x]with a ha h'a
simp only [Function.comp_apply, ENNReal.toReal_div, set_average_eq, div_eq_inv_mul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -82,7 +82,7 @@ make no sense. However, the measure is not globally zero if the space is big eno
open MeasureTheory Metric Set Filter TopologicalSpace MeasureTheory.Measure
-open Filter ENNReal MeasureTheory NNReal Topology
+open scoped Filter ENNReal MeasureTheory NNReal Topology
variable {α : Type _} [MetricSpace α] {m0 : MeasurableSpace α} {μ : Measure α} (v : VitaliFamily μ)
{E : Type _} [NormedAddCommGroup E]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -116,10 +116,7 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
refine' le_antisymm _ bot_le
calc
μ s ≤ ∑' x : h.index, μ (h.covering x) := h.measure_le_tsum
- _ = ∑' x : h.index, 0 := by
- congr
- ext1 x
- exact h.covering_mem x.2
+ _ = ∑' x : h.index, 0 := by congr ; ext1 x; exact h.covering_mem x.2
_ = 0 := by simp only [tsum_zero, add_zero]
#align vitali_family.ae_eventually_measure_pos VitaliFamily.ae_eventually_measure_pos
@@ -377,8 +374,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
refine' ⟨_, _, _⟩
· exact (inter_subset_left _ _).trans (subset_union_left _ _)
· exact (inter_subset_right _ _).trans (subset_union_left _ _)
- · simp_rw [Union_inter, inter_Union]
- exact subset_union_right _ _
+ · simp_rw [Union_inter, inter_Union]; exact subset_union_right _ _
refine' le_antisymm ((measure_mono A).trans _) bot_le
calc
μ
@@ -387,10 +383,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
μ (to_measurable μ (sᶜ)) +
μ (⋃ (m) (n), to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
measure_union_le _ _
- _ = μ (⋃ (m) (n), to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
- by
- have : μ (sᶜ) = 0 := v.ae_tendsto_div hρ
- rw [measure_to_measurable, this, zero_add]
+ _ = μ (⋃ (m) (n), to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) := by
+ have : μ (sᶜ) = 0 := v.ae_tendsto_div hρ; rw [measure_to_measurable, this, zero_add]
_ ≤ ∑' (m) (n), μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
((measure_Union_le _).trans (ENNReal.tsum_le_tsum fun m => measure_Union_le _))
_ = 0 := by simp only [H, tsum_zero]
@@ -515,8 +509,7 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
_ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := (measure_union_le _ _)
_ ≤ p * μ (s ∩ t) + 0 :=
(add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le))
- _ ≤ p * μ s := by
- rw [add_zero]
+ _ ≤ p * μ s := by rw [add_zero];
exact mul_le_mul_left' (measure_mono (inter_subset_left _ _)) _
refine' v.measure_le_of_frequently_le _ hρ _ fun x hx => _
@@ -544,8 +537,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
apply add_le_add H
rw [coe_nnreal_smul_apply]
exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
- _ ≤ ρ s := by
- rw [A, MulZeroClass.mul_zero, add_zero]
+ _ ≤ ρ s := by rw [A, MulZeroClass.mul_zero, add_zero];
exact measure_mono (inter_subset_left _ _)
refine' v.measure_le_of_frequently_le _ (absolutely_continuous.rfl.smul _) _ _
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -478,7 +478,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
theorem aEMeasurable_limRatio : AEMeasurable (v.limRatio ρ) μ :=
by
- apply ENNReal.aEMeasurable_of_exist_almost_disjoint_supersets _ _ fun p q hpq => _
+ apply ENNReal.aemeasurable_of_exist_almost_disjoint_supersets _ _ fun p q hpq => _
exact v.exists_measurable_supersets_lim_ratio hρ hpq
#align vitali_family.ae_measurable_lim_ratio VitaliFamily.aEMeasurable_limRatio
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -348,11 +348,11 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
·
exact
(measurable_set_to_measurable _ _).union
- (MeasurableSet.unionᵢ fun n => measurable_set_to_measurable _ _)
+ (MeasurableSet.iUnion fun n => measurable_set_to_measurable _ _)
·
exact
(measurable_set_to_measurable _ _).union
- (MeasurableSet.unionᵢ fun n => measurable_set_to_measurable _ _)
+ (MeasurableSet.iUnion fun n => measurable_set_to_measurable _ _)
· intro x hx
by_cases h : x ∈ s
· refine' Or.inr (mem_Union.2 ⟨spanning_sets_index (ρ + μ) x, _⟩)
mathlib commit https://github.com/leanprover-community/mathlib/commit/d4437c68c8d350fc9d4e95e1e174409db35e30d7
@@ -126,7 +126,7 @@ theorem ae_eventually_measure_pos [SecondCountableTopology α] :
/-- For every point `x`, sufficiently small sets in a Vitali family around `x` have finite measure.
(This is a trivial result, following from the fact that the measure is locally finite). -/
-theorem eventually_measure_lt_top [IsLocallyFiniteMeasure μ] (x : α) :
+theorem eventually_measure_lt_top [LocallyFiniteMeasure μ] (x : α) :
∀ᶠ a in v.filterAt x, μ a < ∞ :=
by
obtain ⟨ε, εpos, με⟩ : ∃ (ε : ℝ)(hi : 0 < ε), μ (closed_ball x ε) < ∞ :=
@@ -137,7 +137,7 @@ theorem eventually_measure_lt_top [IsLocallyFiniteMeasure μ] (x : α) :
/-- If two measures `ρ` and `ν` have, at every point of a set `s`, arbitrarily small sets in a
Vitali family satisfying `ρ a ≤ ν a`, then `ρ s ≤ ν s` if `ρ ≪ μ`.-/
theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α] {ρ : Measure α}
- (ν : Measure α) [IsLocallyFiniteMeasure ν] (hρ : ρ ≪ μ) (s : Set α)
+ (ν : Measure α) [LocallyFiniteMeasure ν] (hρ : ρ ≪ μ) (s : Set α)
(hs : ∀ x ∈ s, ∃ᶠ a in v.filterAt x, ρ a ≤ ν a) : ρ s ≤ ν s :=
by
-- this follows from a covering argument using the sets satisfying `ρ a ≤ ν a`.
@@ -168,8 +168,8 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
section
-variable [SecondCountableTopology α] [BorelSpace α] [IsLocallyFiniteMeasure μ] {ρ : Measure α}
- [IsLocallyFiniteMeasure ρ]
+variable [SecondCountableTopology α] [BorelSpace α] [LocallyFiniteMeasure μ] {ρ : Measure α}
+ [LocallyFiniteMeasure ρ]
/-- If a measure `ρ` is singular with respect to `μ`, then for `μ` almost every `x`, the ratio
`ρ a / μ a` tends to zero when `a` shrinks to `x` along the Vitali family. This makes sense
mathlib commit https://github.com/leanprover-community/mathlib/commit/92c69b77c5a7dc0f7eeddb552508633305157caa
@@ -476,26 +476,26 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
#align vitali_family.exists_measurable_supersets_lim_ratio VitaliFamily.exists_measurable_supersets_limRatio
-theorem aeMeasurableLimRatio : AeMeasurable (v.limRatio ρ) μ :=
+theorem aEMeasurable_limRatio : AEMeasurable (v.limRatio ρ) μ :=
by
- apply ENNReal.aeMeasurableOfExistAlmostDisjointSupersets _ _ fun p q hpq => _
+ apply ENNReal.aEMeasurable_of_exist_almost_disjoint_supersets _ _ fun p q hpq => _
exact v.exists_measurable_supersets_lim_ratio hρ hpq
-#align vitali_family.ae_measurable_lim_ratio VitaliFamily.aeMeasurableLimRatio
+#align vitali_family.ae_measurable_lim_ratio VitaliFamily.aEMeasurable_limRatio
/-- A measurable version of `v.lim_ratio ρ`. Do *not* use this definition: it is only a temporary
device to show that `v.lim_ratio` is almost everywhere equal to the Radon-Nikodym derivative. -/
noncomputable def limRatioMeas : α → ℝ≥0∞ :=
- (v.aeMeasurableLimRatio hρ).mk _
+ (v.aEMeasurable_limRatio hρ).mk _
#align vitali_family.lim_ratio_meas VitaliFamily.limRatioMeas
theorem limRatioMeas_measurable : Measurable (v.limRatioMeas hρ) :=
- AeMeasurable.measurable_mk _
+ AEMeasurable.measurable_mk _
#align vitali_family.lim_ratio_meas_measurable VitaliFamily.limRatioMeas_measurable
theorem ae_tendsto_limRatioMeas :
∀ᵐ x ∂μ, Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x)) :=
by
- filter_upwards [v.ae_tendsto_lim_ratio hρ, AeMeasurable.ae_eq_mk (v.ae_measurable_lim_ratio hρ)]
+ filter_upwards [v.ae_tendsto_lim_ratio hρ, AEMeasurable.ae_eq_mk (v.ae_measurable_lim_ratio hρ)]
intro x hx h'x
rwa [h'x] at hx
#align vitali_family.ae_tendsto_lim_ratio_meas VitaliFamily.ae_tendsto_limRatioMeas
@@ -878,7 +878,7 @@ theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h
rw [← with_density_apply f ha]
#align vitali_family.ae_tendsto_lintegral_div' VitaliFamily.ae_tendsto_lintegral_div'
-theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AeMeasurable f μ) (h'f : (∫⁻ y, f y ∂μ) ≠ ∞) :
+theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ) (h'f : (∫⁻ y, f y ∂μ) ≠ ∞) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, f y ∂μ) / μ a) (v.filterAt x) (𝓝 (f x)) :=
by
have A : (∫⁻ y, hf.mk f y ∂μ) ≠ ∞ := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -202,7 +202,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
exact hx.1
_ ≤ ε⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
- _ = 0 := by rw [ρo, mul_zero]
+ _ = 0 := by rw [ρo, MulZeroClass.mul_zero]
obtain ⟨u, u_anti, u_pos, u_lim⟩ :
∃ u : ℕ → ℝ≥0, StrictAnti u ∧ (∀ n : ℕ, 0 < u n) ∧ tendsto u at_top (𝓝 0) :=
@@ -545,7 +545,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
rw [coe_nnreal_smul_apply]
exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
_ ≤ ρ s := by
- rw [A, mul_zero, add_zero]
+ rw [A, MulZeroClass.mul_zero, add_zero]
exact measure_mono (inter_subset_left _ _)
refine' v.measure_le_of_frequently_le _ (absolutely_continuous.rfl.smul _) _ _
@@ -580,7 +580,7 @@ theorem measure_limRatioMeas_top : μ { x | v.limRatioMeas hρ x = ∞ } = 0 :=
by
apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
- simp only [zero_mul, ENNReal.inv_top] at B
+ simp only [MulZeroClass.zero_mul, ENNReal.inv_top] at B
apply ge_of_tendsto B
exact eventually_at_top.2 ⟨1, A⟩
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
@@ -606,7 +606,7 @@ theorem measure_limRatioMeas_zero : ρ { x | v.limRatioMeas hρ x = 0 } = 0 :=
apply ENNReal.Tendsto.mul_const _ (Or.inr μs)
rw [ENNReal.tendsto_coe]
exact nhdsWithin_le_nhds
- simp only [zero_mul, ENNReal.coe_zero] at B
+ simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
apply ge_of_tendsto B
filter_upwards [self_mem_nhdsWithin]using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -956,7 +956,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
by
simp_rw [← edist_eq_coe_nnnorm_sub]
have : f x ∈ closure t := ht (mem_range_self _)
- exact Emetric.mem_closure_iff.1 this (ε / 2) (ENNReal.half_pos (ne_of_gt εpos))
+ exact EMetric.mem_closure_iff.1 this (ε / 2) (ENNReal.half_pos (ne_of_gt εpos))
filter_upwards [(tendsto_order.1 (M c ct)).2 (ε / 2) xc, h'x,
v.eventually_measure_lt_top x]with a ha h'a h''a
apply ENNReal.div_le_of_le_mul
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -158,10 +158,10 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
haveI : Encodable h.index := h.index_countable.to_encodable
calc
ρ s ≤ ∑' x : h.index, ρ (h.covering x) := h.measure_le_tsum_of_absolutely_continuous hρ
- _ ≤ ∑' x : h.index, ν (h.covering x) := ENNReal.tsum_le_tsum fun x => (h.covering_mem x.2).1
+ _ ≤ ∑' x : h.index, ν (h.covering x) := (ENNReal.tsum_le_tsum fun x => (h.covering_mem x.2).1)
_ = ν (⋃ x : h.index, h.covering x) := by
rw [measure_Union h.covering_disjoint_subtype fun i => h.measurable_set_u i.2]
- _ ≤ ν U := measure_mono (Union_subset fun i => (h.covering_mem i.2).2)
+ _ ≤ ν U := (measure_mono (Union_subset fun i => (h.covering_mem i.2).2))
_ ≤ ν s + ε := νU
#align vitali_family.measure_le_of_frequently_le VitaliFamily.measure_le_of_frequently_le
@@ -188,7 +188,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
μ s ≤ μ (s ∩ o ∪ oᶜ) := by
conv_lhs => rw [← inter_union_compl s o]
exact measure_mono (union_subset_union_right _ (inter_subset_right _ _))
- _ ≤ μ (s ∩ o) + μ (oᶜ) := measure_union_le _ _
+ _ ≤ μ (s ∩ o) + μ (oᶜ) := (measure_union_le _ _)
_ = μ (s ∩ o) := by rw [μo, add_zero]
_ = ε⁻¹ * (ε • μ) (s ∩ o) :=
by
@@ -201,7 +201,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
rw [hs] at hx
simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
exact hx.1
- _ ≤ ε⁻¹ * ρ o := mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
+ _ ≤ ε⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
_ = 0 := by rw [ρo, mul_zero]
obtain ⟨u, u_anti, u_pos, u_lim⟩ :
@@ -392,7 +392,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
have : μ (sᶜ) = 0 := v.ae_tendsto_div hρ
rw [measure_to_measurable, this, zero_add]
_ ≤ ∑' (m) (n), μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
- (measure_Union_le _).trans (ENNReal.tsum_le_tsum fun m => measure_Union_le _)
+ ((measure_Union_le _).trans (ENNReal.tsum_le_tsum fun m => measure_Union_le _))
_ = 0 := by simp only [H, tsum_zero]
-- now starts the nontrivial part of the argument. We fix `m` and `n`, and show that the
@@ -512,9 +512,9 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
exact
calc
ρ s = ρ (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
- _ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := measure_union_le _ _
+ _ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := (measure_union_le _ _)
_ ≤ p * μ (s ∩ t) + 0 :=
- add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le)
+ (add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le))
_ ≤ p * μ s := by
rw [add_zero]
exact mul_le_mul_left' (measure_mono (inter_subset_left _ _)) _
@@ -539,7 +539,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
exact
calc
(q • μ) s = (q • μ) (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
- _ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := measure_union_le _ _
+ _ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := (measure_union_le _ _)
_ ≤ ρ (s ∩ t) + q * μ (tᶜ) := by
apply add_le_add H
rw [coe_nnreal_smul_apply]
@@ -679,7 +679,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
_ ≤
((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {0}) + ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {∞}) +
∑' n : ℤ, ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
- add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C)
+ (add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C))
_ = ((t : ℝ≥0∞) ^ 2 • ρ) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow ((t : ℝ≥0∞) ^ 2 • ρ) f_meas hs ht).symm
@@ -742,7 +742,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
_ ≤
(t • ν) (s ∩ f ⁻¹' {0}) + (t • ν) (s ∩ f ⁻¹' {∞}) +
∑' n : ℤ, (t • ν) (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
- add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C)
+ (add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C))
_ = (t • ν) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow (t • ν) f_meas hs ht).symm
@@ -928,7 +928,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
rw [← ENNReal.coe_add]
exact ENNReal.coe_le_coe.2 (nnnorm_sub_le _ _)
_ = (∫⁻ y, ‖f y‖₊ ∂μ) + ∫⁻ y, ‖(A.set n).indicator (fun y : α => c) y‖₊ ∂μ :=
- lintegral_add_left h'f.ennnorm _
+ (lintegral_add_left h'f.ennnorm _)
_ < ∞ + ∞ :=
haveI I : integrable ((A.set n).indicator fun y : α => c) μ := by
simp only [integrable_indicator_iff (IsOpen.measurableSet (A.set_mem n)),
@@ -966,7 +966,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
apply lintegral_mono fun x => _
simpa only [← edist_eq_coe_nnnorm_sub] using edist_triangle_right _ _ _
_ = (∫⁻ y in a, ‖f y - c‖₊ ∂μ) + ∫⁻ y in a, ‖f x - c‖₊ ∂μ :=
- lintegral_add_right _ measurable_const
+ (lintegral_add_right _ measurable_const)
_ ≤ ε / 2 * μ a + ε / 2 * μ a := by
refine' add_le_add _ _
· rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.covering.differentiation
-! leanprover-community/mathlib commit b2ff9a3d7a15fd5b0f060b135421d6a89a999c2f
+! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -195,13 +195,13 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
simp only [coe_nnreal_smul_apply, ← mul_assoc, mul_comm _ (ε : ℝ≥0∞)]
rw [ENNReal.mul_inv_cancel (ENNReal.coe_pos.2 εpos).ne' ENNReal.coe_ne_top, one_mul]
_ ≤ ε⁻¹ * ρ (s ∩ o) := by
- apply ENNReal.mul_le_mul le_rfl
+ refine' mul_le_mul_left' _ _
refine' v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul ε) _ _
intro x hx
rw [hs] at hx
simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
exact hx.1
- _ ≤ ε⁻¹ * ρ o := ENNReal.mul_le_mul le_rfl (measure_mono (inter_subset_right _ _))
+ _ ≤ ε⁻¹ * ρ o := mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
_ = 0 := by rw [ρo, mul_zero]
obtain ⟨u, u_anti, u_pos, u_lim⟩ :
@@ -218,7 +218,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
filter_upwards [hx n, h'x, v.eventually_measure_lt_top x]
intro a ha μa_pos μa_lt_top
rw [ENNReal.div_lt_iff (Or.inl μa_pos.ne') (Or.inl μa_lt_top.ne)]
- exact ha.trans_le (ENNReal.mul_le_mul ((ENNReal.coe_le_coe.2 hn.le).trans w_lt.le) le_rfl)
+ exact ha.trans_le (mul_le_mul_right' ((ENNReal.coe_le_coe.2 hn.le).trans w_lt.le) _)
#align vitali_family.ae_eventually_measure_zero_of_singular VitaliFamily.ae_eventually_measure_zero_of_singular
section AbsolutelyContinuous
@@ -517,7 +517,7 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le)
_ ≤ p * μ s := by
rw [add_zero]
- exact ENNReal.mul_le_mul le_rfl (measure_mono (inter_subset_left _ _))
+ exact mul_le_mul_left' (measure_mono (inter_subset_left _ _)) _
refine' v.measure_le_of_frequently_le _ hρ _ fun x hx => _
have I : ∀ᶠ b : Set α in v.filter_at x, ρ b / μ b < p := (tendsto_order.1 hx.2).2 _ (h hx.1)
@@ -543,7 +543,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
_ ≤ ρ (s ∩ t) + q * μ (tᶜ) := by
apply add_le_add H
rw [coe_nnreal_smul_apply]
- exact ENNReal.mul_le_mul le_rfl (measure_mono (inter_subset_right _ _))
+ exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
_ ≤ ρ s := by
rw [A, mul_zero, add_zero]
exact measure_mono (inter_subset_left _ _)
@@ -659,9 +659,8 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
rw [← mul_assoc, ← ENNReal.zpow_add t_ne_zero ENNReal.coe_ne_top]
congr 2
abel
- _ ≤ t ^ 2 * ρ (s ∩ f ⁻¹' I) :=
- by
- apply ENNReal.mul_le_mul le_rfl _
+ _ ≤ t ^ 2 * ρ (s ∩ f ⁻¹' I) := by
+ refine' mul_le_mul_left' _ _
rw [← ENNReal.coe_zpow (zero_lt_one.trans ht).ne']
apply v.mul_measure_le_of_subset_lt_lim_ratio_meas hρ
intro x hx
@@ -733,7 +732,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
by
apply lintegral_mono_ae ((ae_restrict_iff' M).2 (eventually_of_forall fun x hx => _))
rw [add_comm, ENNReal.zpow_add t_ne_zero ENNReal.coe_ne_top, zpow_one]
- exact ENNReal.mul_le_mul le_rfl hx.2.1
+ exact mul_le_mul_left' hx.2.1 _
_ = t * ∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ := lintegral_const_mul _ f_meas
calc
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -82,7 +82,7 @@ make no sense. However, the measure is not globally zero if the space is big eno
open MeasureTheory Metric Set Filter TopologicalSpace MeasureTheory.Measure
-open Filter Ennreal MeasureTheory NNReal Topology
+open Filter ENNReal MeasureTheory NNReal Topology
variable {α : Type _} [MetricSpace α] {m0 : MeasurableSpace α} {μ : Measure α} (v : VitaliFamily μ)
{E : Type _} [NormedAddCommGroup E]
@@ -141,9 +141,9 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
(hs : ∀ x ∈ s, ∃ᶠ a in v.filterAt x, ρ a ≤ ν a) : ρ s ≤ ν s :=
by
-- this follows from a covering argument using the sets satisfying `ρ a ≤ ν a`.
- apply Ennreal.le_of_forall_pos_le_add fun ε εpos hc => _
+ apply ENNReal.le_of_forall_pos_le_add fun ε εpos hc => _
obtain ⟨U, sU, U_open, νU⟩ : ∃ (U : Set α)(H : s ⊆ U), IsOpen U ∧ ν U ≤ ν s + ε :=
- exists_is_open_le_add s ν (Ennreal.coe_pos.2 εpos).ne'
+ exists_is_open_le_add s ν (ENNReal.coe_pos.2 εpos).ne'
let f : α → Set (Set α) := fun x => { a | ρ a ≤ ν a ∧ a ⊆ U }
have h : v.fine_subfamily_on f s :=
by
@@ -158,7 +158,7 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
haveI : Encodable h.index := h.index_countable.to_encodable
calc
ρ s ≤ ∑' x : h.index, ρ (h.covering x) := h.measure_le_tsum_of_absolutely_continuous hρ
- _ ≤ ∑' x : h.index, ν (h.covering x) := Ennreal.tsum_le_tsum fun x => (h.covering_mem x.2).1
+ _ ≤ ∑' x : h.index, ν (h.covering x) := ENNReal.tsum_le_tsum fun x => (h.covering_mem x.2).1
_ = ν (⋃ x : h.index, h.covering x) := by
rw [measure_Union h.covering_disjoint_subtype fun i => h.measurable_set_u i.2]
_ ≤ ν U := measure_mono (Union_subset fun i => (h.covering_mem i.2).2)
@@ -193,15 +193,15 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
_ = ε⁻¹ * (ε • μ) (s ∩ o) :=
by
simp only [coe_nnreal_smul_apply, ← mul_assoc, mul_comm _ (ε : ℝ≥0∞)]
- rw [Ennreal.mul_inv_cancel (Ennreal.coe_pos.2 εpos).ne' Ennreal.coe_ne_top, one_mul]
+ rw [ENNReal.mul_inv_cancel (ENNReal.coe_pos.2 εpos).ne' ENNReal.coe_ne_top, one_mul]
_ ≤ ε⁻¹ * ρ (s ∩ o) := by
- apply Ennreal.mul_le_mul le_rfl
+ apply ENNReal.mul_le_mul le_rfl
refine' v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul ε) _ _
intro x hx
rw [hs] at hx
simp only [mem_inter_iff, not_lt, not_eventually, mem_set_of_eq] at hx
exact hx.1
- _ ≤ ε⁻¹ * ρ o := Ennreal.mul_le_mul le_rfl (measure_mono (inter_subset_right _ _))
+ _ ≤ ε⁻¹ * ρ o := ENNReal.mul_le_mul le_rfl (measure_mono (inter_subset_right _ _))
_ = 0 := by rw [ρo, mul_zero]
obtain ⟨u, u_anti, u_pos, u_lim⟩ :
@@ -211,14 +211,14 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
ae_all_iff.2 fun n => A (u n) (u_pos n)
filter_upwards [B, v.ae_eventually_measure_pos]
intro x hx h'x
- refine' tendsto_order.2 ⟨fun z hz => (Ennreal.not_lt_zero hz).elim, fun z hz => _⟩
+ refine' tendsto_order.2 ⟨fun z hz => (ENNReal.not_lt_zero hz).elim, fun z hz => _⟩
obtain ⟨w, w_pos, w_lt⟩ : ∃ w : ℝ≥0, (0 : ℝ≥0∞) < w ∧ (w : ℝ≥0∞) < z :=
- Ennreal.lt_iff_exists_nNReal_btwn.1 hz
- obtain ⟨n, hn⟩ : ∃ n, u n < w := ((tendsto_order.1 u_lim).2 w (Ennreal.coe_pos.1 w_pos)).exists
+ ENNReal.lt_iff_exists_nnreal_btwn.1 hz
+ obtain ⟨n, hn⟩ : ∃ n, u n < w := ((tendsto_order.1 u_lim).2 w (ENNReal.coe_pos.1 w_pos)).exists
filter_upwards [hx n, h'x, v.eventually_measure_lt_top x]
intro a ha μa_pos μa_lt_top
- rw [Ennreal.div_lt_iff (Or.inl μa_pos.ne') (Or.inl μa_lt_top.ne)]
- exact ha.trans_le (Ennreal.mul_le_mul ((Ennreal.coe_le_coe.2 hn.le).trans w_lt.le) le_rfl)
+ rw [ENNReal.div_lt_iff (Or.inl μa_pos.ne') (Or.inl μa_lt_top.ne)]
+ exact ha.trans_le (ENNReal.mul_le_mul ((ENNReal.coe_le_coe.2 hn.le).trans w_lt.le) le_rfl)
#align vitali_family.ae_eventually_measure_zero_of_singular VitaliFamily.ae_eventually_measure_zero_of_singular
section AbsolutelyContinuous
@@ -245,7 +245,7 @@ theorem null_of_frequently_le_of_frequently_ge {c d : ℝ≥0} (hcd : c < d) (s
ρ s' ≤ c * μ s' := v.measure_le_of_frequently_le (c • μ) hρ s' fun x hx => hc x hx.1
_ < d * μ s' :=
by
- apply (Ennreal.mul_lt_mul_right h _).2 (Ennreal.coe_lt_coe.2 hcd)
+ apply (ENNReal.mul_lt_mul_right h _).2 (ENNReal.coe_lt_coe.2 hcd)
exact (lt_of_le_of_lt (measure_mono (inter_subset_right _ _)) μo).Ne
_ ≤ ρ s' :=
v.measure_le_of_frequently_le ρ ((measure.absolutely_continuous.refl μ).smul d) s' fun x hx =>
@@ -259,7 +259,7 @@ theorem ae_tendsto_div : ∀ᵐ x ∂μ, ∃ c, Tendsto (fun a => ρ a / μ a) (
by
obtain ⟨w, w_count, w_dense, w_zero, w_top⟩ :
∃ w : Set ℝ≥0∞, w.Countable ∧ Dense w ∧ 0 ∉ w ∧ ∞ ∉ w :=
- Ennreal.exists_countable_dense_no_zero_top
+ ENNReal.exists_countable_dense_no_zero_top
have I : ∀ x ∈ w, x ≠ ∞ := fun x xs hx => w_top (hx ▸ xs)
have A :
∀ c ∈ w,
@@ -271,18 +271,18 @@ theorem ae_tendsto_div : ∀ᵐ x ∂μ, ∃ c, Tendsto (fun a => ρ a / μ a) (
intro c hc d hd hcd
lift c to ℝ≥0 using I c hc
lift d to ℝ≥0 using I d hd
- apply v.null_of_frequently_le_of_frequently_ge hρ (Ennreal.coe_lt_coe.1 hcd)
+ apply v.null_of_frequently_le_of_frequently_ge hρ (ENNReal.coe_lt_coe.1 hcd)
· simp only [and_imp, exists_prop, not_frequently, not_and, not_lt, not_le, not_eventually,
mem_set_of_eq, mem_compl_iff, not_forall]
intro x h1x h2x
apply h1x.mono fun a ha => _
- refine' (Ennreal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
- simp only [Ennreal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
+ refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
+ simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
· simp only [and_imp, exists_prop, not_frequently, not_and, not_lt, not_le, not_eventually,
mem_set_of_eq, mem_compl_iff, not_forall]
intro x h1x h2x
apply h2x.mono fun a ha => _
- exact Ennreal.mul_le_of_le_div ha.le
+ exact ENNReal.mul_le_of_le_div ha.le
have B :
∀ᵐ x ∂μ,
∀ c ∈ w,
@@ -392,7 +392,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
have : μ (sᶜ) = 0 := v.ae_tendsto_div hρ
rw [measure_to_measurable, this, zero_add]
_ ≤ ∑' (m) (n), μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
- (measure_Union_le _).trans (Ennreal.tsum_le_tsum fun m => measure_Union_le _)
+ (measure_Union_le _).trans (ENNReal.tsum_le_tsum fun m => measure_Union_le _)
_ = 0 := by simp only [H, tsum_zero]
-- now starts the nontrivial part of the argument. We fix `m` and `n`, and show that the
@@ -423,8 +423,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
have I : ∀ᶠ b : Set α in v.filter_at x, ρ b / μ b < p := (tendsto_order.1 L).2 _ hx.1.1.2
apply I.frequently.mono fun a ha => _
rw [coe_nnreal_smul_apply]
- refine' (Ennreal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
- simp only [Ennreal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
+ refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
+ simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
_ = p * μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) := by
simp only [coe_nnreal_smul_apply,
measure_to_measurable_add_inter_right (measurable_set_to_measurable _ _) I]
@@ -449,7 +449,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
(tendsto_order.1 L).1 _ hx.2.1.2
apply I.frequently.mono fun a ha => _
rw [coe_nnreal_smul_apply]
- exact Ennreal.mul_le_of_le_div ha.le
+ exact ENNReal.mul_le_of_le_div ha.le
_ = ρ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
by
conv_rhs => rw [inter_comm]
@@ -464,9 +464,9 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
A
_ < q * μ (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) :=
by
- apply (Ennreal.mul_lt_mul_right h _).2 (Ennreal.coe_lt_coe.2 hpq)
+ apply (ENNReal.mul_lt_mul_right h _).2 (ENNReal.coe_lt_coe.2 hpq)
suffices H : (ρ + μ) (to_measurable (ρ + μ) (u m) ∩ to_measurable (ρ + μ) (w n)) ≠ ∞
- · simp only [not_or, Ennreal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
+ · simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
exact H.2
apply (lt_of_le_of_lt (measure_mono (inter_subset_left _ _)) _).Ne
rw [measure_to_measurable]
@@ -478,7 +478,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
theorem aeMeasurableLimRatio : AeMeasurable (v.limRatio ρ) μ :=
by
- apply Ennreal.aeMeasurableOfExistAlmostDisjointSupersets _ _ fun p q hpq => _
+ apply ENNReal.aeMeasurableOfExistAlmostDisjointSupersets _ _ fun p q hpq => _
exact v.exists_measurable_supersets_lim_ratio hρ hpq
#align vitali_family.ae_measurable_lim_ratio VitaliFamily.aeMeasurableLimRatio
@@ -517,14 +517,14 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le)
_ ≤ p * μ s := by
rw [add_zero]
- exact Ennreal.mul_le_mul le_rfl (measure_mono (inter_subset_left _ _))
+ exact ENNReal.mul_le_mul le_rfl (measure_mono (inter_subset_left _ _))
refine' v.measure_le_of_frequently_le _ hρ _ fun x hx => _
have I : ∀ᶠ b : Set α in v.filter_at x, ρ b / μ b < p := (tendsto_order.1 hx.2).2 _ (h hx.1)
apply I.frequently.mono fun a ha => _
rw [coe_nnreal_smul_apply]
- refine' (Ennreal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
- simp only [Ennreal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
+ refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
+ simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
#align vitali_family.measure_le_mul_of_subset_lim_ratio_meas_lt VitaliFamily.measure_le_mul_of_subset_limRatioMeas_lt
/-- If, for all `x` in a set `s`, one has frequently `q < ρ a / μ a`, then `q * μ s ≤ ρ s`, as
@@ -543,7 +543,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
_ ≤ ρ (s ∩ t) + q * μ (tᶜ) := by
apply add_le_add H
rw [coe_nnreal_smul_apply]
- exact Ennreal.mul_le_mul le_rfl (measure_mono (inter_subset_right _ _))
+ exact ENNReal.mul_le_mul le_rfl (measure_mono (inter_subset_right _ _))
_ ≤ ρ s := by
rw [A, mul_zero, add_zero]
exact measure_mono (inter_subset_left _ _)
@@ -553,7 +553,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
have I : ∀ᶠ a in v.filter_at x, (q : ℝ≥0∞) < ρ a / μ a := (tendsto_order.1 hx.2).1 _ (h hx.1)
apply I.frequently.mono fun a ha => _
rw [coe_nnreal_smul_apply]
- exact Ennreal.mul_le_of_le_div ha.le
+ exact ENNReal.mul_le_of_le_div ha.le
#align vitali_family.mul_measure_le_of_subset_lt_lim_ratio_meas VitaliFamily.mul_measure_le_of_subset_lt_limRatioMeas
/-- The points with `v.lim_ratio_meas hρ x = ∞` have measure `0` for `μ`. -/
@@ -568,19 +568,19 @@ theorem measure_limRatioMeas_top : μ { x | v.limRatioMeas hρ x = ∞ } = 0 :=
have A : ∀ q : ℝ≥0, 1 ≤ q → μ s ≤ q⁻¹ * ρ s :=
by
intro q hq
- rw [mul_comm, ← div_eq_mul_inv, Ennreal.le_div_iff_mul_le _ (Or.inr ρs), mul_comm]
+ rw [mul_comm, ← div_eq_mul_inv, ENNReal.le_div_iff_mul_le _ (Or.inr ρs), mul_comm]
· apply v.mul_measure_le_of_subset_lt_lim_ratio_meas hρ
intro y hy
have : v.lim_ratio_meas hρ y = ∞ := hy.1
- simp only [this, Ennreal.coe_lt_top, mem_set_of_eq]
+ simp only [this, ENNReal.coe_lt_top, mem_set_of_eq]
·
- simp only [(zero_lt_one.trans_le hq).ne', true_or_iff, Ennreal.coe_eq_zero, Ne.def,
+ simp only [(zero_lt_one.trans_le hq).ne', true_or_iff, ENNReal.coe_eq_zero, Ne.def,
not_false_iff]
have B : tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞)⁻¹ * ρ s) at_top (𝓝 (∞⁻¹ * ρ s)) :=
by
- apply Ennreal.Tendsto.mul_const _ (Or.inr ρs)
- exact Ennreal.tendsto_inv_iff.2 (Ennreal.tendsto_coe_nhds_top.2 tendsto_id)
- simp only [zero_mul, Ennreal.inv_top] at B
+ apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
+ exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
+ simp only [zero_mul, ENNReal.inv_top] at B
apply ge_of_tendsto B
exact eventually_at_top.2 ⟨1, A⟩
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
@@ -600,13 +600,13 @@ theorem measure_limRatioMeas_zero : ρ { x | v.limRatioMeas hρ x = 0 } = 0 :=
apply v.measure_le_mul_of_subset_lim_ratio_meas_lt hρ
intro y hy
have : v.lim_ratio_meas hρ y = 0 := hy.1
- simp only [this, mem_set_of_eq, hq, Ennreal.coe_pos]
+ simp only [this, mem_set_of_eq, hq, ENNReal.coe_pos]
have B : tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞) * μ s) (𝓝[>] (0 : ℝ≥0)) (𝓝 ((0 : ℝ≥0) * μ s)) :=
by
- apply Ennreal.Tendsto.mul_const _ (Or.inr μs)
- rw [Ennreal.tendsto_coe]
+ apply ENNReal.Tendsto.mul_const _ (Or.inr μs)
+ rw [ENNReal.tendsto_coe]
exact nhdsWithin_le_nhds
- simp only [zero_mul, Ennreal.coe_zero] at B
+ simp only [zero_mul, ENNReal.coe_zero] at B
apply ge_of_tendsto B
filter_upwards [self_mem_nhdsWithin]using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
@@ -623,7 +623,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
show that the two measures are comparable up to `t` (in fact `t^2` for technical reasons of
strict inequalities). -/
have t_ne_zero' : t ≠ 0 := (zero_lt_one.trans ht).ne'
- have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [Ennreal.coe_eq_zero, Ne.def] using t_ne_zero'
+ have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [ENNReal.coe_eq_zero, Ne.def] using t_ne_zero'
let ν := μ.with_density (v.lim_ratio_meas hρ)
let f := v.lim_ratio_meas hρ
have f_meas : Measurable f := v.lim_ratio_meas_measurable hρ
@@ -656,17 +656,17 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
simp only [lintegral_const, MeasurableSet.univ, measure.restrict_apply, univ_inter]
_ = t ^ (2 : ℤ) * (t ^ (n - 1) * μ (s ∩ f ⁻¹' I)) :=
by
- rw [← mul_assoc, ← Ennreal.zpow_add t_ne_zero Ennreal.coe_ne_top]
+ rw [← mul_assoc, ← ENNReal.zpow_add t_ne_zero ENNReal.coe_ne_top]
congr 2
abel
_ ≤ t ^ 2 * ρ (s ∩ f ⁻¹' I) :=
by
- apply Ennreal.mul_le_mul le_rfl _
- rw [← Ennreal.coe_zpow (zero_lt_one.trans ht).ne']
+ apply ENNReal.mul_le_mul le_rfl _
+ rw [← ENNReal.coe_zpow (zero_lt_one.trans ht).ne']
apply v.mul_measure_le_of_subset_lt_lim_ratio_meas hρ
intro x hx
apply lt_of_lt_of_le _ hx.2.1
- rw [← Ennreal.coe_zpow (zero_lt_one.trans ht).ne', Ennreal.coe_lt_coe, sub_eq_add_neg,
+ rw [← ENNReal.coe_zpow (zero_lt_one.trans ht).ne', ENNReal.coe_lt_coe, sub_eq_add_neg,
zpow_add₀ t_ne_zero']
conv_rhs => rw [← mul_one (t ^ n)]
refine' mul_lt_mul' le_rfl _ (zero_le _) (NNReal.zpow_pos t_ne_zero' _)
@@ -680,7 +680,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
_ ≤
((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {0}) + ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {∞}) +
∑' n : ℤ, ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
- add_le_add (add_le_add A B) (Ennreal.tsum_le_tsum C)
+ add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C)
_ = ((t : ℝ≥0∞) ^ 2 • ρ) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow ((t : ℝ≥0∞) ^ 2 • ρ) f_meas hs ht).symm
@@ -697,7 +697,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
`measure_le_mul_of_subset_lim_ratio_meas_lt` and `mul_measure_le_of_subset_lt_lim_ratio_meas` to
show that the two measures are comparable up to `t`. -/
have t_ne_zero' : t ≠ 0 := (zero_lt_one.trans ht).ne'
- have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [Ennreal.coe_eq_zero, Ne.def] using t_ne_zero'
+ have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [ENNReal.coe_eq_zero, Ne.def] using t_ne_zero'
let ν := μ.with_density (v.lim_ratio_meas hρ)
let f := v.lim_ratio_meas hρ
have f_meas : Measurable f := v.lim_ratio_meas_measurable hρ
@@ -722,18 +722,18 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
calc
ρ (s ∩ f ⁻¹' I) ≤ t ^ (n + 1) * μ (s ∩ f ⁻¹' I) :=
by
- rw [← Ennreal.coe_zpow t_ne_zero']
+ rw [← ENNReal.coe_zpow t_ne_zero']
apply v.measure_le_mul_of_subset_lim_ratio_meas_lt hρ
intro x hx
apply hx.2.2.trans_le (le_of_eq _)
- rw [Ennreal.coe_zpow t_ne_zero']
+ rw [ENNReal.coe_zpow t_ne_zero']
_ = ∫⁻ x in s ∩ f ⁻¹' I, t ^ (n + 1) ∂μ := by
simp only [lintegral_const, MeasurableSet.univ, measure.restrict_apply, univ_inter]
_ ≤ ∫⁻ x in s ∩ f ⁻¹' I, t * f x ∂μ :=
by
apply lintegral_mono_ae ((ae_restrict_iff' M).2 (eventually_of_forall fun x hx => _))
- rw [add_comm, Ennreal.zpow_add t_ne_zero Ennreal.coe_ne_top, zpow_one]
- exact Ennreal.mul_le_mul le_rfl hx.2.1
+ rw [add_comm, ENNReal.zpow_add t_ne_zero ENNReal.coe_ne_top, zpow_one]
+ exact ENNReal.mul_le_mul le_rfl hx.2.1
_ = t * ∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ := lintegral_const_mul _ f_meas
calc
@@ -743,7 +743,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
_ ≤
(t • ν) (s ∩ f ⁻¹' {0}) + (t • ν) (s ∩ f ⁻¹' {∞}) +
∑' n : ℤ, (t • ν) (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
- add_le_add (add_le_add A B) (Ennreal.tsum_le_tsum C)
+ add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C)
_ = (t • ν) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow (t • ν) f_meas hs ht).symm
@@ -755,11 +755,11 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
refine' le_antisymm _ _
· have : tendsto (fun t : ℝ≥0 => (t ^ 2 * ρ s : ℝ≥0∞)) (𝓝[>] 1) (𝓝 ((1 : ℝ≥0) ^ 2 * ρ s)) :=
by
- refine' Ennreal.Tendsto.mul _ _ tendsto_const_nhds _
- · exact Ennreal.Tendsto.pow (Ennreal.tendsto_coe.2 nhdsWithin_le_nhds)
- · simp only [one_pow, Ennreal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
- · simp only [one_pow, Ennreal.coe_one, Ne.def, or_true_iff, Ennreal.one_ne_top, not_false_iff]
- simp only [one_pow, one_mul, Ennreal.coe_one] at this
+ refine' ENNReal.Tendsto.mul _ _ tendsto_const_nhds _
+ · exact ENNReal.Tendsto.pow (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds)
+ · simp only [one_pow, ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
+ · simp only [one_pow, ENNReal.coe_one, Ne.def, or_true_iff, ENNReal.one_ne_top, not_false_iff]
+ simp only [one_pow, one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin]with _ ht
exact v.with_density_le_mul hρ hs ht
@@ -767,9 +767,9 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
tendsto (fun t : ℝ≥0 => (t : ℝ≥0∞) * μ.with_density (v.lim_ratio_meas hρ) s) (𝓝[>] 1)
(𝓝 ((1 : ℝ≥0) * μ.with_density (v.lim_ratio_meas hρ) s)) :=
by
- refine' Ennreal.Tendsto.mul_const (Ennreal.tendsto_coe.2 nhdsWithin_le_nhds) _
- simp only [Ennreal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
- simp only [one_mul, Ennreal.coe_one] at this
+ refine' ENNReal.Tendsto.mul_const (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds) _
+ simp only [ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
+ simp only [one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin]with _ ht
exact v.le_mul_with_density hρ hs ht
@@ -816,7 +816,7 @@ theorem ae_tendsto_rnDeriv :
convert Ax.add Cx
· ext1 a
conv_lhs => rw [eq_add]
- simp only [Pi.add_apply, coe_add, Ennreal.add_div]
+ simp only [Pi.add_apply, coe_add, ENNReal.add_div]
· simp only [Bx, zero_add]
#align vitali_family.ae_tendsto_rn_deriv VitaliFamily.ae_tendsto_rnDeriv
@@ -926,15 +926,15 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
apply lintegral_mono
intro x
dsimp
- rw [← Ennreal.coe_add]
- exact Ennreal.coe_le_coe.2 (nnnorm_sub_le _ _)
+ rw [← ENNReal.coe_add]
+ exact ENNReal.coe_le_coe.2 (nnnorm_sub_le _ _)
_ = (∫⁻ y, ‖f y‖₊ ∂μ) + ∫⁻ y, ‖(A.set n).indicator (fun y : α => c) y‖₊ ∂μ :=
lintegral_add_left h'f.ennnorm _
_ < ∞ + ∞ :=
haveI I : integrable ((A.set n).indicator fun y : α => c) μ := by
simp only [integrable_indicator_iff (IsOpen.measurableSet (A.set_mem n)),
integrable_on_const, A.finite n, or_true_iff]
- Ennreal.add_lt_add hf.2 I.2
+ ENNReal.add_lt_add hf.2 I.2
filter_upwards [main, v.ae_eventually_measure_pos]with x hx h'x
have M :
@@ -952,15 +952,15 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
apply eventually_of_forall fun y => _
intro hy
simp only [ha hy, indicator_of_mem]
- apply Ennreal.tendsto_nhds_zero.2 fun ε εpos => _
+ apply ENNReal.tendsto_nhds_zero.2 fun ε εpos => _
obtain ⟨c, ct, xc⟩ : ∃ c ∈ t, (‖f x - c‖₊ : ℝ≥0∞) < ε / 2 :=
by
simp_rw [← edist_eq_coe_nnnorm_sub]
have : f x ∈ closure t := ht (mem_range_self _)
- exact Emetric.mem_closure_iff.1 this (ε / 2) (Ennreal.half_pos (ne_of_gt εpos))
+ exact Emetric.mem_closure_iff.1 this (ε / 2) (ENNReal.half_pos (ne_of_gt εpos))
filter_upwards [(tendsto_order.1 (M c ct)).2 (ε / 2) xc, h'x,
v.eventually_measure_lt_top x]with a ha h'a h''a
- apply Ennreal.div_le_of_le_mul
+ apply ENNReal.div_le_of_le_mul
calc
(∫⁻ y in a, ‖f y - f x‖₊ ∂μ) ≤ ∫⁻ y in a, ‖f y - c‖₊ + ‖f x - c‖₊ ∂μ :=
by
@@ -970,11 +970,11 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
lintegral_add_right _ measurable_const
_ ≤ ε / 2 * μ a + ε / 2 * μ a := by
refine' add_le_add _ _
- · rw [Ennreal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
+ · rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
exact ha.le
· simp only [lintegral_const, measure.restrict_apply, MeasurableSet.univ, univ_inter]
exact mul_le_mul_right' xc.le _
- _ = ε * μ a := by rw [← add_mul, Ennreal.add_halves]
+ _ = ε * μ a := by rw [← add_mul, ENNReal.add_halves]
#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'
@@ -1000,16 +1000,16 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
by
filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf,
v.ae_eventually_measure_pos]with x hx h'x
- have := (Ennreal.tendsto_toReal Ennreal.zero_ne_top).comp hx
- simp only [Ennreal.zero_toReal] at this
+ have := (ENNReal.tendsto_toReal ENNReal.zero_ne_top).comp hx
+ simp only [ENNReal.zero_toReal] at this
apply tendsto.congr' _ this
filter_upwards [h'x, v.eventually_measure_lt_top x]with a ha h'a
- simp only [Function.comp_apply, Ennreal.toReal_div, set_average_eq, div_eq_inv_mul]
+ simp only [Function.comp_apply, ENNReal.toReal_div, set_average_eq, div_eq_inv_mul]
have A : integrable_on (fun y => (‖f y - f x‖₊ : ℝ)) a μ :=
by
simp_rw [coe_nnnorm]
exact (hf.integrable_on.sub (integrable_on_const.2 (Or.inr h'a))).norm
- rw [lintegral_coe_eq_integral _ A, Ennreal.toReal_ofReal]
+ rw [lintegral_coe_eq_integral _ A, ENNReal.toReal_ofReal]
· simp_rw [coe_nnnorm]
rfl
· apply integral_nonneg
mathlib commit https://github.com/leanprover-community/mathlib/commit/271bf175e6c51b8d31d6c0107b7bb4a967c7277e
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
! This file was ported from Lean 3 source module measure_theory.covering.differentiation
-! leanprover-community/mathlib commit 70a4f2197832bceab57d7f41379b2592d1110570
+! leanprover-community/mathlib commit b2ff9a3d7a15fd5b0f060b135421d6a89a999c2f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -671,7 +671,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
conv_rhs => rw [← mul_one (t ^ n)]
refine' mul_lt_mul' le_rfl _ (zero_le _) (NNReal.zpow_pos t_ne_zero' _)
rw [zpow_neg_one]
- exact NNReal.inv_lt_one ht
+ exact inv_lt_one ht
calc
ν s =
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -144,7 +144,7 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
haveI : Encodable h.index := h.index_countable.toEncodable
calc
ρ s ≤ ∑' x : h.index, ρ (h.covering x) := h.measure_le_tsum_of_absolutelyContinuous hρ
- _ ≤ ∑' x : h.index, ν (h.covering x) := (ENNReal.tsum_le_tsum fun x => (h.covering_mem x.2).1)
+ _ ≤ ∑' x : h.index, ν (h.covering x) := ENNReal.tsum_le_tsum fun x => (h.covering_mem x.2).1
_ = ν (⋃ x : h.index, h.covering x) := by
rw [measure_iUnion h.covering_disjoint_subtype fun i => h.measurableSet_u i.2]
_ ≤ ν U := (measure_mono (iUnion_subset fun i => (h.covering_mem i.2).2))
@@ -172,7 +172,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
conv_lhs => rw [← inter_union_compl s o]
gcongr
apply inter_subset_right
- _ ≤ μ (s ∩ o) + μ oᶜ := (measure_union_le _ _)
+ _ ≤ μ (s ∩ o) + μ oᶜ := measure_union_le _ _
_ = μ (s ∩ o) := by rw [μo, add_zero]
_ = (ε : ℝ≥0∞)⁻¹ * (ε • μ) (s ∩ o) := by
simp only [coe_nnreal_smul_apply, ← mul_assoc, mul_comm _ (ε : ℝ≥0∞)]
@@ -446,7 +446,7 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
have A : μ tᶜ = 0 := v.ae_tendsto_limRatioMeas hρ
suffices H : ρ (s ∩ t) ≤ (p • μ) (s ∩ t) by calc
ρ s = ρ (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
- _ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := (measure_union_le _ _)
+ _ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := measure_union_le _ _
_ ≤ (p • μ) (s ∩ t) + ρ tᶜ := by gcongr; apply inter_subset_right
_ ≤ p * μ (s ∩ t) := by simp [(hρ A)]
_ ≤ p * μ s := by gcongr; apply inter_subset_left
@@ -467,7 +467,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
have A : μ tᶜ = 0 := v.ae_tendsto_limRatioMeas hρ
suffices H : (q • μ) (s ∩ t) ≤ ρ (s ∩ t) by calc
(q • μ) s = (q • μ) (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
- _ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := (measure_union_le _ _)
+ _ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := measure_union_le _ _
_ ≤ ρ (s ∩ t) + (q • μ) tᶜ := by gcongr; apply inter_subset_right
_ = ρ (s ∩ t) := by simp [A]
_ ≤ ρ s := by gcongr; apply inter_subset_left
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -123,7 +123,7 @@ theorem eventually_measure_lt_top [IsLocallyFiniteMeasure μ] (x : α) :
#align vitali_family.eventually_measure_lt_top VitaliFamily.eventually_measure_lt_top
/-- If two measures `ρ` and `ν` have, at every point of a set `s`, arbitrarily small sets in a
-Vitali family satisfying `ρ a ≤ ν a`, then `ρ s ≤ ν s` if `ρ ≪ μ`.-/
+Vitali family satisfying `ρ a ≤ ν a`, then `ρ s ≤ ν s` if `ρ ≪ μ`. -/
theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α] {ρ : Measure α}
(ν : Measure α) [IsLocallyFiniteMeasure ν] (hρ : ρ ≪ μ) (s : Set α)
(hs : ∀ x ∈ s, ∃ᶠ a in v.filterAt x, ρ a ≤ ν a) : ρ s ≤ ν s := by
@@ -904,7 +904,7 @@ theorem eventually_filterAt_integrableOn (x : α) {f : α → E} (hf : LocallyIn
exact hw.mono_set ha
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
-average of `‖f y - f x‖` on `a` tends to `0` as `a` shrinks to `x` along a Vitali family.-/
+average of `‖f y - f x‖` on `a` tends to `0` as `a` shrinks to `x` along a Vitali family. -/
theorem ae_tendsto_average_norm_sub {f : α → E} (hf : LocallyIntegrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, ‖f y - f x‖ ∂μ) (v.filterAt x) (𝓝 0) := by
filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf] with x hx
@@ -921,7 +921,7 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : LocallyIntegrable f μ)
rfl
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
-average of `f` on `a` tends to `f x` as `a` shrinks to `x` along a Vitali family.-/
+average of `f` on `a` tends to `f x` as `a` shrinks to `x` along a Vitali family. -/
theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E}
(hf : LocallyIntegrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, f y ∂μ) (v.filterAt x) (𝓝 (f x)) := by
@@ -248,7 +248,7 @@ theorem ae_tendsto_div : ∀ᵐ x ∂μ, ∃ c, Tendsto (fun a => ρ a / μ a) (
intro x h1x _
apply h1x.mono fun a ha => ?_
refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
- simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
+ simp only [ENNReal.coe_ne_top, Ne, or_true_iff, not_false_iff]
· simp only [and_imp, exists_prop, not_frequently, not_and, not_lt, not_le, not_eventually,
mem_setOf_eq, mem_compl_iff, not_forall]
intro x _ h2x
@@ -370,7 +370,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
apply I.frequently.mono fun a ha => ?_
rw [coe_nnreal_smul_apply]
refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
- simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
+ simp only [ENNReal.coe_ne_top, Ne, or_true_iff, not_false_iff]
_ = p * μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) := by
simp only [coe_nnreal_smul_apply,
measure_toMeasurable_add_inter_right (measurableSet_toMeasurable _ _) I]
@@ -406,7 +406,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
_ < q * μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) := by
gcongr
suffices H : (ρ + μ) (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) ≠ ∞ by
- simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
+ simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne, coe_add] at H
exact H.2
apply (lt_of_le_of_lt (measure_mono (inter_subset_left _ _)) _).ne
rw [measure_toMeasurable]
@@ -455,7 +455,7 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
apply I.frequently.mono fun a ha => ?_
rw [coe_nnreal_smul_apply]
refine' (ENNReal.div_le_iff_le_mul _ (Or.inr (bot_le.trans_lt ha).ne')).1 ha.le
- simp only [ENNReal.coe_ne_top, Ne.def, or_true_iff, not_false_iff]
+ simp only [ENNReal.coe_ne_top, Ne, or_true_iff, not_false_iff]
#align vitali_family.measure_le_mul_of_subset_lim_ratio_meas_lt VitaliFamily.measure_le_mul_of_subset_limRatioMeas_lt
/-- If, for all `x` in a set `s`, one has frequently `q < ρ a / μ a`, then `q * μ s ≤ ρ s`, as
@@ -494,7 +494,7 @@ theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 := by
intro y hy
have : v.limRatioMeas hρ y = ∞ := hy.1
simp only [this, ENNReal.coe_lt_top, mem_setOf_eq]
- · simp only [(zero_lt_one.trans_le hq).ne', true_or_iff, ENNReal.coe_eq_zero, Ne.def,
+ · simp only [(zero_lt_one.trans_le hq).ne', true_or_iff, ENNReal.coe_eq_zero, Ne,
not_false_iff]
have B : Tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞)⁻¹ * ρ s) atTop (𝓝 (∞⁻¹ * ρ s)) := by
apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
@@ -538,7 +538,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
show that the two measures are comparable up to `t` (in fact `t^2` for technical reasons of
strict inequalities). -/
have t_ne_zero' : t ≠ 0 := (zero_lt_one.trans ht).ne'
- have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [ENNReal.coe_eq_zero, Ne.def] using t_ne_zero'
+ have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [ENNReal.coe_eq_zero, Ne] using t_ne_zero'
let ν := μ.withDensity (v.limRatioMeas hρ)
let f := v.limRatioMeas hρ
have f_meas : Measurable f := v.limRatioMeas_measurable hρ
@@ -608,7 +608,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
`measure_le_mul_of_subset_limRatioMeas_lt` and `mul_measure_le_of_subset_lt_limRatioMeas` to
show that the two measures are comparable up to `t`. -/
have t_ne_zero' : t ≠ 0 := (zero_lt_one.trans ht).ne'
- have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [ENNReal.coe_eq_zero, Ne.def] using t_ne_zero'
+ have t_ne_zero : (t : ℝ≥0∞) ≠ 0 := by simpa only [ENNReal.coe_eq_zero, Ne] using t_ne_zero'
let ν := μ.withDensity (v.limRatioMeas hρ)
let f := v.limRatioMeas hρ
have f_meas : Measurable f := v.limRatioMeas_measurable hρ
@@ -662,8 +662,8 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
((t : ℝ≥0∞) ^ 2 * ρ s : ℝ≥0∞)) (𝓝[>] 1) (𝓝 ((1 : ℝ≥0∞) ^ 2 * ρ s)) := by
refine' ENNReal.Tendsto.mul _ _ tendsto_const_nhds _
· exact ENNReal.Tendsto.pow (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds)
- · simp only [one_pow, ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
- · simp only [one_pow, ENNReal.coe_one, Ne.def, or_true_iff, ENNReal.one_ne_top, not_false_iff]
+ · simp only [one_pow, ENNReal.coe_one, true_or_iff, Ne, not_false_iff, one_ne_zero]
+ · simp only [one_pow, ENNReal.coe_one, Ne, or_true_iff, ENNReal.one_ne_top, not_false_iff]
simp only [one_pow, one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin] with _ ht
@@ -672,7 +672,7 @@ theorem withDensity_limRatioMeas_eq : μ.withDensity (v.limRatioMeas hρ) = ρ :
Tendsto (fun t : ℝ≥0 => (t : ℝ≥0∞) * μ.withDensity (v.limRatioMeas hρ) s) (𝓝[>] 1)
(𝓝 ((1 : ℝ≥0∞) * μ.withDensity (v.limRatioMeas hρ) s)) := by
refine' ENNReal.Tendsto.mul_const (ENNReal.tendsto_coe.2 nhdsWithin_le_nhds) _
- simp only [ENNReal.coe_one, true_or_iff, Ne.def, not_false_iff, one_ne_zero]
+ simp only [ENNReal.coe_one, true_or_iff, Ne, not_false_iff, one_ne_zero]
simp only [one_mul, ENNReal.coe_one] at this
refine' ge_of_tendsto this _
filter_upwards [self_mem_nhdsWithin] with _ ht
@@ -917,12 +917,8 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : LocallyIntegrable f μ)
have A : IntegrableOn (fun y => (‖f y - f x‖₊ : ℝ)) a μ := by
simp_rw [coe_nnnorm]
exact (h''a.sub (integrableOn_const.2 (Or.inr h'a))).norm
- rw [lintegral_coe_eq_integral _ A, ENNReal.toReal_ofReal]
- · simp_rw [coe_nnnorm]
- rfl
- · apply integral_nonneg
- intro x
- exact NNReal.coe_nonneg _
+ rw [lintegral_coe_eq_integral _ A, ENNReal.toReal_ofReal (by positivity)]
+ rfl
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
average of `f` on `a` tends to `f x` as `a` shrinks to `x` along a Vitali family.-/
Standardizes the following names for distributivity laws across Finset
and Set
:
inter_union_distrib_left
inter_union_distrib_right
union_inter_distrib_left
union_inter_distrib_right
Makes arguments explicit in:
Set.union_inter_distrib_right
Set.union_inter_distrib_left
Set.inter_union_distrib_right
Deprecates these theorem names:
Finset.inter_distrib_left
Finset.inter_distrib_right
Finset.union_distrib_right
Finset.union_distrib_left
Set.inter_distrib_left
Set.inter_distrib_right
Set.union_distrib_right
Set.union_distrib_left
Fixes use of deprecated names and implicit arguments in these files:
@@ -326,8 +326,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
(toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (w n)) ⊆
toMeasurable μ sᶜ ∪
⋃ (m) (n), toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n) := by
- simp only [inter_distrib_left, inter_distrib_right, true_and_iff, subset_union_left,
- union_subset_iff, inter_self]
+ simp only [inter_union_distrib_left, union_inter_distrib_right, true_and_iff,
+ subset_union_left, union_subset_iff, inter_self]
refine' ⟨_, _, _⟩
· exact (inter_subset_right _ _).trans (subset_union_left _ _)
· exact (inter_subset_left _ _).trans (subset_union_left _ _)
filter_upwards
(#11208)
This is presumably not exhaustive, but covers about a hundred instances.
Style opinions (e.g., why a particular change is great/not a good idea) are very welcome; I'm still forming my own.
@@ -841,9 +841,7 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable {f : α → E} (hf :
v.eventually_filterAt_measurableSet x] with a ha h'a
congr 1
apply set_lintegral_congr_fun h'a
- apply eventually_of_forall fun y => ?_
- intro hy
- simp only [ha hy, indicator_of_mem]
+ filter_upwards with y hy using (by simp only [ha hy, indicator_of_mem])
apply ENNReal.tendsto_nhds_zero.2 fun ε εpos => ?_
obtain ⟨c, ct, xc⟩ : ∃ c ∈ t, (‖f x - c‖₊ : ℝ≥0∞) < ε / 2 := by
simp_rw [← edist_eq_coe_nnnorm_sub]
@@ -548,7 +548,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
have A : ν (s ∩ f ⁻¹' {0}) ≤ ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' {0}) := by
apply le_trans _ (zero_le _)
have M : MeasurableSet (s ∩ f ⁻¹' {0}) := hs.inter (f_meas (measurableSet_singleton _))
- simp only [nonpos_iff_eq_zero, M, withDensity_apply, lintegral_eq_zero_iff f_meas]
+ simp only [ν, nonpos_iff_eq_zero, M, withDensity_apply, lintegral_eq_zero_iff f_meas]
apply (ae_restrict_iff' M).2
exact eventually_of_forall fun x hx => hx.2
have B : ν (s ∩ f ⁻¹' {∞}) ≤ ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' {∞}) := by
@@ -563,7 +563,7 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
intro n
let I := Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))
have M : MeasurableSet (s ∩ f ⁻¹' I) := hs.inter (f_meas measurableSet_Ico)
- simp only [M, withDensity_apply, coe_nnreal_smul_apply]
+ simp only [ν, M, withDensity_apply, coe_nnreal_smul_apply]
calc
(∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ) ≤ ∫⁻ _ in s ∩ f ⁻¹' I, (t : ℝ≥0∞) ^ (n + 1) ∂μ :=
lintegral_mono_ae ((ae_restrict_iff' M).2 (eventually_of_forall fun x hx => hx.2.2.le))
@@ -627,7 +627,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
intro n
let I := Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))
have M : MeasurableSet (s ∩ f ⁻¹' I) := hs.inter (f_meas measurableSet_Ico)
- simp only [M, withDensity_apply, coe_nnreal_smul_apply]
+ simp only [ν, M, withDensity_apply, coe_nnreal_smul_apply]
calc
ρ (s ∩ f ⁻¹' I) ≤ (t : ℝ≥0∞) ^ (n + 1) * μ (s ∩ f ⁻¹' I) := by
rw [← ENNReal.coe_zpow t_ne_zero']
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -320,8 +320,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
· exact Or.inl (subset_toMeasurable μ sᶜ h)
-- it remains to check the nontrivial part that these sets have zero measure intersection.
-- it suffices to do it for fixed `m` and `n`, as one is taking countable unions.
- suffices H : ∀ m n : ℕ, μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) = 0
- · have A :
+ suffices H : ∀ m n : ℕ, μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) = 0 by
+ have A :
(toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (u n)) ∩
(toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (w n)) ⊆
toMeasurable μ sᶜ ∪
@@ -405,8 +405,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
A
_ < q * μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) := by
gcongr
- suffices H : (ρ + μ) (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) ≠ ∞
- · simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
+ suffices H : (ρ + μ) (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) ≠ ∞ by
+ simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
exact H.2
apply (lt_of_le_of_lt (measure_mono (inter_subset_left _ _)) _).ne
rw [measure_toMeasurable]
@@ -444,14 +444,12 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
(h : s ⊆ {x | v.limRatioMeas hρ x < p}) : ρ s ≤ p * μ s := by
let t := {x : α | Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x))}
have A : μ tᶜ = 0 := v.ae_tendsto_limRatioMeas hρ
- suffices H : ρ (s ∩ t) ≤ (p • μ) (s ∩ t);
- exact
- calc
- ρ s = ρ (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
- _ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := (measure_union_le _ _)
- _ ≤ (p • μ) (s ∩ t) + ρ tᶜ := by gcongr; apply inter_subset_right
- _ ≤ p * μ (s ∩ t) := by simp [(hρ A)]
- _ ≤ p * μ s := by gcongr; apply inter_subset_left
+ suffices H : ρ (s ∩ t) ≤ (p • μ) (s ∩ t) by calc
+ ρ s = ρ (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
+ _ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := (measure_union_le _ _)
+ _ ≤ (p • μ) (s ∩ t) + ρ tᶜ := by gcongr; apply inter_subset_right
+ _ ≤ p * μ (s ∩ t) := by simp [(hρ A)]
+ _ ≤ p * μ s := by gcongr; apply inter_subset_left
refine' v.measure_le_of_frequently_le (p • μ) hρ _ fun x hx => _
have I : ∀ᶠ b : Set α in v.filterAt x, ρ b / μ b < p := (tendsto_order.1 hx.2).2 _ (h hx.1)
apply I.frequently.mono fun a ha => ?_
@@ -467,14 +465,12 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
(h : s ⊆ {x | (q : ℝ≥0∞) < v.limRatioMeas hρ x}) : (q : ℝ≥0∞) * μ s ≤ ρ s := by
let t := {x : α | Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x))}
have A : μ tᶜ = 0 := v.ae_tendsto_limRatioMeas hρ
- suffices H : (q • μ) (s ∩ t) ≤ ρ (s ∩ t);
- exact
- calc
- (q • μ) s = (q • μ) (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
- _ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := (measure_union_le _ _)
- _ ≤ ρ (s ∩ t) + (q • μ) tᶜ := by gcongr; apply inter_subset_right
- _ = ρ (s ∩ t) := by simp [A]
- _ ≤ ρ s := by gcongr; apply inter_subset_left
+ suffices H : (q • μ) (s ∩ t) ≤ ρ (s ∩ t) by calc
+ (q • μ) s = (q • μ) (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
+ _ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := (measure_union_le _ _)
+ _ ≤ ρ (s ∩ t) + (q • μ) tᶜ := by gcongr; apply inter_subset_right
+ _ = ρ (s ∩ t) := by simp [A]
+ _ ≤ ρ s := by gcongr; apply inter_subset_left
refine' v.measure_le_of_frequently_le _ (AbsolutelyContinuous.rfl.smul _) _ _
intro x hx
have I : ∀ᶠ a in v.filterAt x, (q : ℝ≥0∞) < ρ a / μ a := (tendsto_order.1 hx.2).1 _ (h hx.1)
@@ -136,7 +136,7 @@ theorem measure_le_of_frequently_le [SecondCountableTopology α] [BorelSpace α]
apply v.fineSubfamilyOn_of_frequently f s fun x hx => ?_
have :=
(hs x hx).and_eventually
- ((v.eventually_filterAt_mem_sets x).and
+ ((v.eventually_filterAt_mem_setsAt x).and
(v.eventually_filterAt_subset_of_nhds (U_open.mem_nhds (sU hx))))
apply Frequently.mono this
rintro a ⟨ρa, _, aU⟩
This PR adds a positivity extension for integer powers, i.e. a ^ (r : ℤ)
. It's basically copy-pasted from the natural power extension. Note that this makes the imports of Mathlib.Tactic.Positivity.Basic
slightly heavier since the required lemmas were not there (and the relevant file doesn't import positivity so I couldn't put it there either). It's probably not too bad, but I can put it in a new file if people think this would be better.
Co-authored-by: David Renshaw <dwrenshaw@gmail.com>
@@ -587,7 +587,6 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
zpow_add₀ t_ne_zero']
conv_rhs => rw [← mul_one (t ^ n)]
gcongr
- · apply NNReal.zpow_pos t_ne_zero' -- TODO: positivity extension for `zpow`
rw [zpow_neg_one]
exact inv_lt_one ht
calc
Following on from previous gcongr
golfing PRs #4702 and #4784.
This is a replacement for #7901: this round of golfs, first introduced there, there exposed some performance issues in gcongr
, hopefully fixed by #8731, and I am opening a new PR so that the performance can be checked against current master rather than master at the time of #7901.
@@ -170,20 +170,21 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
calc
μ s ≤ μ (s ∩ o ∪ oᶜ) := by
conv_lhs => rw [← inter_union_compl s o]
- exact measure_mono (union_subset_union_right _ (inter_subset_right _ _))
+ gcongr
+ apply inter_subset_right
_ ≤ μ (s ∩ o) + μ oᶜ := (measure_union_le _ _)
_ = μ (s ∩ o) := by rw [μo, add_zero]
_ = (ε : ℝ≥0∞)⁻¹ * (ε • μ) (s ∩ o) := by
simp only [coe_nnreal_smul_apply, ← mul_assoc, mul_comm _ (ε : ℝ≥0∞)]
rw [ENNReal.mul_inv_cancel (ENNReal.coe_pos.2 εpos).ne' ENNReal.coe_ne_top, one_mul]
_ ≤ (ε : ℝ≥0∞)⁻¹ * ρ (s ∩ o) := by
- refine' mul_le_mul_left' _ _
+ gcongr
refine' v.measure_le_of_frequently_le ρ ((Measure.AbsolutelyContinuous.refl μ).smul ε) _ _
intro x hx
rw [hs] at hx
simp only [mem_inter_iff, not_lt, not_eventually, mem_setOf_eq] at hx
exact hx.1
- _ ≤ (ε : ℝ≥0∞)⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
+ _ ≤ (ε : ℝ≥0∞)⁻¹ * ρ o := by gcongr; apply inter_subset_right
_ = 0 := by rw [ρo, mul_zero]
obtain ⟨u, _, u_pos, u_lim⟩ :
∃ u : ℕ → ℝ≥0, StrictAnti u ∧ (∀ n : ℕ, 0 < u n) ∧ Tendsto u atTop (𝓝 0) :=
@@ -403,7 +404,7 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
p * μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) :=
A
_ < q * μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) := by
- apply (ENNReal.mul_lt_mul_right h _).2 (ENNReal.coe_lt_coe.2 hpq)
+ gcongr
suffices H : (ρ + μ) (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) ≠ ∞
· simp only [not_or, ENNReal.add_eq_top, Pi.add_apply, Ne.def, coe_add] at H
exact H.2
@@ -448,10 +449,9 @@ theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
calc
ρ s = ρ (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
_ ≤ ρ (s ∩ t) + ρ (s ∩ tᶜ) := (measure_union_le _ _)
- _ ≤ p * μ (s ∩ t) + 0 :=
- (add_le_add H ((measure_mono (inter_subset_right _ _)).trans (hρ A).le))
- _ ≤ p * μ s := by
- rw [add_zero]; exact mul_le_mul_left' (measure_mono (inter_subset_left _ _)) _
+ _ ≤ (p • μ) (s ∩ t) + ρ tᶜ := by gcongr; apply inter_subset_right
+ _ ≤ p * μ (s ∩ t) := by simp [(hρ A)]
+ _ ≤ p * μ s := by gcongr; apply inter_subset_left
refine' v.measure_le_of_frequently_le (p • μ) hρ _ fun x hx => _
have I : ∀ᶠ b : Set α in v.filterAt x, ρ b / μ b < p := (tendsto_order.1 hx.2).2 _ (h hx.1)
apply I.frequently.mono fun a ha => ?_
@@ -472,12 +472,9 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
calc
(q • μ) s = (q • μ) (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
_ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := (measure_union_le _ _)
- _ ≤ ρ (s ∩ t) + q * μ tᶜ := by
- apply add_le_add H
- rw [coe_nnreal_smul_apply]
- exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
- _ ≤ ρ s := by
- rw [A, mul_zero, add_zero]; exact measure_mono (inter_subset_left _ _)
+ _ ≤ ρ (s ∩ t) + (q • μ) tᶜ := by gcongr; apply inter_subset_right
+ _ = ρ (s ∩ t) := by simp [A]
+ _ ≤ ρ s := by gcongr; apply inter_subset_left
refine' v.measure_le_of_frequently_le _ (AbsolutelyContinuous.rfl.smul _) _ _
intro x hx
have I : ∀ᶠ a in v.filterAt x, (q : ℝ≥0∞) < ρ a / μ a := (tendsto_order.1 hx.2).1 _ (h hx.1)
@@ -580,8 +577,8 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
rw [← mul_assoc, ← ENNReal.zpow_add t_ne_zero ENNReal.coe_ne_top]
congr 2
abel
- _ ≤ (t : ℝ≥0∞) ^ 2 * ρ (s ∩ f ⁻¹' I) := by
- refine' mul_le_mul_left' _ _
+ _ ≤ (t : ℝ≥0∞) ^ (2 : ℤ) * ρ (s ∩ f ⁻¹' I) := by
+ gcongr
rw [← ENNReal.coe_zpow (zero_lt_one.trans ht).ne']
apply v.mul_measure_le_of_subset_lt_limRatioMeas hρ
intro x hx
@@ -589,7 +586,8 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
rw [← ENNReal.coe_zpow (zero_lt_one.trans ht).ne', ENNReal.coe_lt_coe, sub_eq_add_neg,
zpow_add₀ t_ne_zero']
conv_rhs => rw [← mul_one (t ^ n)]
- refine' mul_lt_mul' le_rfl _ (zero_le _) (NNReal.zpow_pos t_ne_zero' _)
+ gcongr
+ · apply NNReal.zpow_pos t_ne_zero' -- TODO: positivity extension for `zpow`
rw [zpow_neg_one]
exact inv_lt_one ht
calc
@@ -866,11 +864,11 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable {f : α → E} (hf :
_ = (∫⁻ y in a, ‖f y - c‖₊ ∂μ) + ∫⁻ _ in a, ‖f x - c‖₊ ∂μ :=
(lintegral_add_right _ measurable_const)
_ ≤ ε / 2 * μ a + ε / 2 * μ a := by
- refine' add_le_add _ _
+ gcongr
· rw [ENNReal.div_lt_iff (Or.inl h'a.ne') (Or.inl h''a.ne)] at ha
exact ha.le
· simp only [lintegral_const, Measure.restrict_apply, MeasurableSet.univ, univ_inter]
- exact mul_le_mul_right' xc.le _
+ gcongr
_ = ε * μ a := by rw [← add_mul, ENNReal.add_halves]
#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -76,9 +76,6 @@ make no sense. However, the measure is not globally zero if the space is big eno
* [Herbert Federer, Geometric Measure Theory, Chapter 2.9][Federer1996]
-/
-
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
-
open MeasureTheory Metric Set Filter TopologicalSpace MeasureTheory.Measure
open scoped Filter ENNReal MeasureTheory NNReal Topology
@@ -552,13 +549,16 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
let ν := μ.withDensity (v.limRatioMeas hρ)
let f := v.limRatioMeas hρ
have f_meas : Measurable f := v.limRatioMeas_measurable hρ
- have A : ν (s ∩ f ⁻¹' {0}) ≤ ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {0}) := by
+ -- Note(kmill): smul elaborator when used for CoeFun fails to get CoeFun instance to trigger
+ -- unless you use the `(... :)` notation. Another fix is using `(2 : Nat)`, so this appears
+ -- to be an unpleasant interaction with default instances.
+ have A : ν (s ∩ f ⁻¹' {0}) ≤ ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' {0}) := by
apply le_trans _ (zero_le _)
have M : MeasurableSet (s ∩ f ⁻¹' {0}) := hs.inter (f_meas (measurableSet_singleton _))
simp only [nonpos_iff_eq_zero, M, withDensity_apply, lintegral_eq_zero_iff f_meas]
apply (ae_restrict_iff' M).2
exact eventually_of_forall fun x hx => hx.2
- have B : ν (s ∩ f ⁻¹' {∞}) ≤ ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {∞}) := by
+ have B : ν (s ∩ f ⁻¹' {∞}) ≤ ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' {∞}) := by
apply le_trans (le_of_eq _) (zero_le _)
apply withDensity_absolutelyContinuous μ _
rw [← nonpos_iff_eq_zero]
@@ -566,13 +566,13 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
have C :
∀ n : ℤ,
ν (s ∩ f ⁻¹' Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))) ≤
- ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))) := by
+ ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))) := by
intro n
let I := Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))
have M : MeasurableSet (s ∩ f ⁻¹' I) := hs.inter (f_meas measurableSet_Ico)
simp only [M, withDensity_apply, coe_nnreal_smul_apply]
calc
- (∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ) ≤ ∫⁻ x in s ∩ f ⁻¹' I, (t : ℝ≥0∞) ^ (n + 1) ∂μ :=
+ (∫⁻ x in s ∩ f ⁻¹' I, f x ∂μ) ≤ ∫⁻ _ in s ∩ f ⁻¹' I, (t : ℝ≥0∞) ^ (n + 1) ∂μ :=
lintegral_mono_ae ((ae_restrict_iff' M).2 (eventually_of_forall fun x hx => hx.2.2.le))
_ = (t : ℝ≥0∞) ^ (n + 1) * μ (s ∩ f ⁻¹' I) := by
simp only [lintegral_const, MeasurableSet.univ, Measure.restrict_apply, univ_inter]
@@ -598,10 +598,10 @@ theorem withDensity_le_mul {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
∑' n : ℤ, ν (s ∩ f ⁻¹' Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))) :=
measure_eq_measure_preimage_add_measure_tsum_Ico_zpow ν f_meas hs ht
_ ≤
- ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {0}) + ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' {∞}) +
- ∑' n : ℤ, ((t : ℝ≥0∞) ^ 2 • ρ) (s ∩ f ⁻¹' Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))) :=
+ ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' {0}) + ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' {∞}) +
+ ∑' n : ℤ, ((t : ℝ≥0∞) ^ 2 • ρ :) (s ∩ f ⁻¹' Ico (t ^ n) (t ^ (n + 1))) :=
(add_le_add (add_le_add A B) (ENNReal.tsum_le_tsum C))
- _ = ((t : ℝ≥0∞) ^ 2 • ρ) s :=
+ _ = ((t : ℝ≥0∞) ^ 2 • ρ :) s :=
(measure_eq_measure_preimage_add_measure_tsum_Ico_zpow ((t : ℝ≥0∞) ^ 2 • ρ) f_meas hs ht).symm
#align vitali_family.with_density_le_mul VitaliFamily.withDensity_le_mul
@@ -642,7 +642,7 @@ theorem le_mul_withDensity {s : Set α} (hs : MeasurableSet s) {t : ℝ≥0} (ht
intro x hx
apply hx.2.2.trans_le (le_of_eq _)
rw [ENNReal.coe_zpow t_ne_zero']
- _ = ∫⁻ x in s ∩ f ⁻¹' I, (t : ℝ≥0∞) ^ (n + 1) ∂μ := by
+ _ = ∫⁻ _ in s ∩ f ⁻¹' I, (t : ℝ≥0∞) ^ (n + 1) ∂μ := by
simp only [lintegral_const, MeasurableSet.univ, Measure.restrict_apply, univ_inter]
_ ≤ ∫⁻ x in s ∩ f ⁻¹' I, t * f x ∂μ := by
apply lintegral_mono_ae ((ae_restrict_iff' M).2 (eventually_of_forall fun x hx => ?_))
We define s-finite measures, i.e., measures which can be written as a countable sum of finite measures. We show that sigma-finite measures are s-finite, and extend a few results in the library from the sigma-finite case to the s-finite case.
@@ -767,7 +767,7 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
apply hx.congr' _
filter_upwards [v.eventually_filterAt_measurableSet x] with _ ha
congr 1
- exact measure_toMeasurable_inter_of_sigmaFinite ha _
+ exact measure_toMeasurable_inter_of_sFinite ha _
#align vitali_family.ae_tendsto_measure_inter_div VitaliFamily.ae_tendsto_measure_inter_div
/-! ### Lebesgue differentiation theorem -/
AbsolutelyContinuous
hypothesis from inv_rnDeriv
(#8351)
In order to remove that hypothesis, we also:
withDensity_rnDeriv_eq
to use the new API instead of unfolding the definitionsrnDeriv_restrict
and rnDeriv_withDensity
to possibly different measures@@ -740,7 +740,7 @@ theorem ae_tendsto_measure_inter_div_of_measurableSet {s : Set α} (hs : Measura
∀ᵐ x ∂μ, Tendsto (fun a => μ (s ∩ a) / μ a) (v.filterAt x) (𝓝 (s.indicator 1 x)) := by
haveI : IsLocallyFiniteMeasure (μ.restrict s) :=
isLocallyFiniteMeasure_of_le restrict_le_self
- filter_upwards [ae_tendsto_rnDeriv v (μ.restrict s), rnDeriv_restrict μ hs]
+ filter_upwards [ae_tendsto_rnDeriv v (μ.restrict s), rnDeriv_restrict_self μ hs]
intro x hx h'x
simpa only [h'x, restrict_apply' hs, inter_comm] using hx
#align vitali_family.ae_tendsto_measure_inter_div_of_measurable_set VitaliFamily.ae_tendsto_measure_inter_div_of_measurableSet
Rename:
tendsto_iff_norm_tendsto_one
→
tendsto_iff_norm_div_tendsto_zero
;tendsto_iff_norm_tendsto_zero
→
tendsto_iff_norm_sub_tendsto_zero
;tendsto_one_iff_norm_tendsto_one
→
tendsto_one_iff_norm_tendsto_zero
;Filter.Tendsto.continuous_of_equicontinuous_at
→
Filter.Tendsto.continuous_of_equicontinuousAt
.@@ -939,7 +939,7 @@ theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E}
(hf : LocallyIntegrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, f y ∂μ) (v.filterAt x) (𝓝 (f x)) := by
filter_upwards [v.ae_tendsto_average_norm_sub hf, v.ae_eventually_measure_pos] with x hx h'x
- rw [tendsto_iff_norm_tendsto_zero]
+ rw [tendsto_iff_norm_sub_tendsto_zero]
refine' squeeze_zero' (eventually_of_forall fun a => norm_nonneg _) _ hx
filter_upwards [h'x, v.eventually_measure_lt_top x, v.eventually_filterAt_integrableOn x hf]
with a ha h'a h''a
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -187,7 +187,7 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
simp only [mem_inter_iff, not_lt, not_eventually, mem_setOf_eq] at hx
exact hx.1
_ ≤ (ε : ℝ≥0∞)⁻¹ * ρ o := (mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _)
- _ = 0 := by rw [ρo, MulZeroClass.mul_zero]
+ _ = 0 := by rw [ρo, mul_zero]
obtain ⟨u, _, u_pos, u_lim⟩ :
∃ u : ℕ → ℝ≥0, StrictAnti u ∧ (∀ n : ℕ, 0 < u n) ∧ Tendsto u atTop (𝓝 0) :=
exists_seq_strictAnti_tendsto (0 : ℝ≥0)
@@ -480,7 +480,7 @@ theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
rw [coe_nnreal_smul_apply]
exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
_ ≤ ρ s := by
- rw [A, MulZeroClass.mul_zero, add_zero]; exact measure_mono (inter_subset_left _ _)
+ rw [A, mul_zero, add_zero]; exact measure_mono (inter_subset_left _ _)
refine' v.measure_le_of_frequently_le _ (AbsolutelyContinuous.rfl.smul _) _ _
intro x hx
have I : ∀ᶠ a in v.filterAt x, (q : ℝ≥0∞) < ρ a / μ a := (tendsto_order.1 hx.2).1 _ (h hx.1)
@@ -509,7 +509,7 @@ theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 := by
have B : Tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞)⁻¹ * ρ s) atTop (𝓝 (∞⁻¹ * ρ s)) := by
apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
- simp only [MulZeroClass.zero_mul, ENNReal.inv_top] at B
+ simp only [zero_mul, ENNReal.inv_top] at B
apply ge_of_tendsto B
exact eventually_atTop.2 ⟨1, A⟩
#align vitali_family.measure_lim_ratio_meas_top VitaliFamily.measure_limRatioMeas_top
@@ -532,7 +532,7 @@ theorem measure_limRatioMeas_zero : ρ {x | v.limRatioMeas hρ x = 0} = 0 := by
apply ENNReal.Tendsto.mul_const _ (Or.inr μs)
rw [ENNReal.tendsto_coe]
exact nhdsWithin_le_nhds
- simp only [MulZeroClass.zero_mul, ENNReal.coe_zero] at B
+ simp only [zero_mul, ENNReal.coe_zero] at B
apply ge_of_tendsto B
filter_upwards [self_mem_nhdsWithin] using A
#align vitali_family.measure_lim_ratio_meas_zero VitaliFamily.measure_limRatioMeas_zero
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -83,8 +83,8 @@ open MeasureTheory Metric Set Filter TopologicalSpace MeasureTheory.Measure
open scoped Filter ENNReal MeasureTheory NNReal Topology
-variable {α : Type _} [MetricSpace α] {m0 : MeasurableSpace α} {μ : Measure α} (v : VitaliFamily μ)
- {E : Type _} [NormedAddCommGroup E]
+variable {α : Type*} [MetricSpace α] {m0 : MeasurableSpace α} {μ : Measure α} (v : VitaliFamily μ)
+ {E : Type*} [NormedAddCommGroup E]
namespace VitaliFamily
@@ -77,7 +77,7 @@ make no sense. However, the measure is not globally zero if the space is big eno
-/
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue #2220
+local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
open MeasureTheory Metric Set Filter TopologicalSpace MeasureTheory.Measure
@@ -772,7 +772,6 @@ theorem ae_tendsto_measure_inter_div (s : Set α) :
/-! ### Lebesgue differentiation theorem -/
-
theorem ae_tendsto_lintegral_div' {f : α → ℝ≥0∞} (hf : Measurable f) (h'f : (∫⁻ y, f y ∂μ) ≠ ∞) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, f y ∂μ) / μ a) (v.filterAt x) (𝓝 (f x)) := by
let ρ := μ.withDensity f
@@ -799,7 +798,7 @@ theorem ae_tendsto_lintegral_div {f : α → ℝ≥0∞} (hf : AEMeasurable f μ
exact ae_restrict_of_ae hf.ae_eq_mk
#align vitali_family.ae_tendsto_lintegral_div VitaliFamily.ae_tendsto_lintegral_div
-theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f μ)
+theorem ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable {f : α → E} (hf : Integrable f μ)
(h'f : StronglyMeasurable f) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) := by
/- For every `c`, then `(∫⁻ y in a, ‖f y - c‖₊ ∂μ) / μ a` tends almost everywhere to `‖f x - c‖`.
@@ -873,12 +872,12 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div' {f : α → E} (hf : Integrable f
· simp only [lintegral_const, Measure.restrict_apply, MeasurableSet.univ, univ_inter]
exact mul_le_mul_right' xc.le _
_ = ε * μ a := by rw [← add_mul, ENNReal.add_halves]
-#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'
+#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div' VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable
-theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ) :
+theorem ae_tendsto_lintegral_nnnorm_sub_div_of_integrable {f : α → E} (hf : Integrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) := by
have I : Integrable (hf.1.mk f) μ := hf.congr hf.1.ae_eq_mk
- filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div' I hf.1.stronglyMeasurable_mk,
+ filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div'_of_integrable I hf.1.stronglyMeasurable_mk,
hf.1.ae_eq_mk] with x hx h'x
apply hx.congr _
intro a
@@ -887,45 +886,69 @@ theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : Integrable f μ
apply ae_restrict_of_ae
filter_upwards [hf.1.ae_eq_mk] with y hy
rw [hy, h'x]
-#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div
+#align vitali_family.ae_tendsto_lintegral_nnnorm_sub_div VitaliFamily.ae_tendsto_lintegral_nnnorm_sub_div_of_integrable
+
+theorem ae_tendsto_lintegral_nnnorm_sub_div {f : α → E} (hf : LocallyIntegrable f μ) :
+ ∀ᵐ x ∂μ, Tendsto (fun a => (∫⁻ y in a, ‖f y - f x‖₊ ∂μ) / μ a) (v.filterAt x) (𝓝 0) := by
+ rcases hf.exists_nat_integrableOn with ⟨u, u_open, u_univ, hu⟩
+ have : ∀ n, ∀ᵐ x ∂μ,
+ Tendsto (fun a => (∫⁻ y in a, ‖(u n).indicator f y - (u n).indicator f x‖₊ ∂μ) / μ a)
+ (v.filterAt x) (𝓝 0) := by
+ intro n
+ apply ae_tendsto_lintegral_nnnorm_sub_div_of_integrable
+ exact (integrable_indicator_iff (u_open n).measurableSet).2 (hu n)
+ filter_upwards [ae_all_iff.2 this] with x hx
+ obtain ⟨n, hn⟩ : ∃ n, x ∈ u n := by simpa only [← u_univ, mem_iUnion] using mem_univ x
+ apply Tendsto.congr' _ (hx n)
+ filter_upwards [v.eventually_filterAt_subset_of_nhds ((u_open n).mem_nhds hn),
+ v.eventually_filterAt_measurableSet x] with a ha h'a
+ congr 1
+ refine' set_lintegral_congr_fun h'a (eventually_of_forall (fun y hy ↦ _))
+ rw [indicator_of_mem (ha hy) f, indicator_of_mem hn f]
+
+theorem eventually_filterAt_integrableOn (x : α) {f : α → E} (hf : LocallyIntegrable f μ) :
+ ∀ᶠ a in v.filterAt x, IntegrableOn f a μ := by
+ rcases hf x with ⟨w, w_nhds, hw⟩
+ filter_upwards [v.eventually_filterAt_subset_of_nhds w_nhds] with a ha
+ exact hw.mono_set ha
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
average of `‖f y - f x‖` on `a` tends to `0` as `a` shrinks to `x` along a Vitali family.-/
-theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
+theorem ae_tendsto_average_norm_sub {f : α → E} (hf : LocallyIntegrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, ‖f y - f x‖ ∂μ) (v.filterAt x) (𝓝 0) := by
- filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf, v.ae_eventually_measure_pos] with x hx
- h'x
+ filter_upwards [v.ae_tendsto_lintegral_nnnorm_sub_div hf] with x hx
have := (ENNReal.tendsto_toReal ENNReal.zero_ne_top).comp hx
simp only [ENNReal.zero_toReal] at this
apply Tendsto.congr' _ this
- filter_upwards [h'x, v.eventually_measure_lt_top x] with a _ h'a
+ filter_upwards [v.eventually_measure_lt_top x, v.eventually_filterAt_integrableOn x hf]
+ with a h'a h''a
simp only [Function.comp_apply, ENNReal.toReal_div, setAverage_eq, div_eq_inv_mul]
have A : IntegrableOn (fun y => (‖f y - f x‖₊ : ℝ)) a μ := by
simp_rw [coe_nnnorm]
- exact (hf.integrableOn.sub (integrableOn_const.2 (Or.inr h'a))).norm
+ exact (h''a.sub (integrableOn_const.2 (Or.inr h'a))).norm
rw [lintegral_coe_eq_integral _ A, ENNReal.toReal_ofReal]
· simp_rw [coe_nnnorm]
rfl
· apply integral_nonneg
intro x
exact NNReal.coe_nonneg _
-#align vitali_family.ae_tendsto_average_norm_sub VitaliFamily.ae_tendsto_average_norm_sub
/-- *Lebesgue differentiation theorem*: for almost every point `x`, the
average of `f` on `a` tends to `f x` as `a` shrinks to `x` along a Vitali family.-/
-theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E} (hf : Integrable f μ) :
+theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E}
+ (hf : LocallyIntegrable f μ) :
∀ᵐ x ∂μ, Tendsto (fun a => ⨍ y in a, f y ∂μ) (v.filterAt x) (𝓝 (f x)) := by
filter_upwards [v.ae_tendsto_average_norm_sub hf, v.ae_eventually_measure_pos] with x hx h'x
rw [tendsto_iff_norm_tendsto_zero]
refine' squeeze_zero' (eventually_of_forall fun a => norm_nonneg _) _ hx
- filter_upwards [h'x, v.eventually_measure_lt_top x] with a ha h'a
+ filter_upwards [h'x, v.eventually_measure_lt_top x, v.eventually_filterAt_integrableOn x hf]
+ with a ha h'a h''a
nth_rw 1 [← setAverage_const ha.ne' h'a.ne (f x)]
simp_rw [setAverage_eq']
rw [← integral_sub]
· exact norm_integral_le_integral_norm _
- · exact (integrable_inv_smul_measure ha.ne' h'a.ne).2 hf.integrableOn
+ · exact (integrable_inv_smul_measure ha.ne' h'a.ne).2 h''a
· exact (integrable_inv_smul_measure ha.ne' h'a.ne).2 (integrableOn_const.2 (Or.inr h'a))
-#align vitali_family.ae_tendsto_average VitaliFamily.ae_tendsto_average
end
@@ -2,11 +2,6 @@
Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module measure_theory.covering.differentiation
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.MeasureTheory.Covering.VitaliFamily
import Mathlib.MeasureTheory.Measure.Regular
@@ -15,6 +10,8 @@ import Mathlib.MeasureTheory.Integral.Lebesgue
import Mathlib.MeasureTheory.Integral.Average
import Mathlib.MeasureTheory.Decomposition.Lebesgue
+#align_import measure_theory.covering.differentiation from "leanprover-community/mathlib"@"57ac39bd365c2f80589a700f9fbb664d3a1a30c2"
+
/-!
# Differentiation of measures
Match https://github.com/leanprover-community/mathlib/pull/19199
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -902,7 +902,7 @@ theorem ae_tendsto_average_norm_sub {f : α → E} (hf : Integrable f μ) :
simp only [ENNReal.zero_toReal] at this
apply Tendsto.congr' _ this
filter_upwards [h'x, v.eventually_measure_lt_top x] with a _ h'a
- simp only [Function.comp_apply, ENNReal.toReal_div, set_average_eq, div_eq_inv_mul]
+ simp only [Function.comp_apply, ENNReal.toReal_div, setAverage_eq, div_eq_inv_mul]
have A : IntegrableOn (fun y => (‖f y - f x‖₊ : ℝ)) a μ := by
simp_rw [coe_nnnorm]
exact (hf.integrableOn.sub (integrableOn_const.2 (Or.inr h'a))).norm
@@ -922,8 +922,8 @@ theorem ae_tendsto_average [NormedSpace ℝ E] [CompleteSpace E] {f : α → E}
rw [tendsto_iff_norm_tendsto_zero]
refine' squeeze_zero' (eventually_of_forall fun a => norm_nonneg _) _ hx
filter_upwards [h'x, v.eventually_measure_lt_top x] with a ha h'a
- nth_rw 1 [← set_average_const ha.ne' h'a.ne (f x)]
- simp_rw [set_average_eq']
+ nth_rw 1 [← setAverage_const ha.ne' h'a.ne (f x)]
+ simp_rw [setAverage_eq']
rw [← integral_sub]
· exact norm_integral_le_integral_norm _
· exact (integrable_inv_smul_measure ha.ne' h'a.ne).2 hf.integrableOn
@@ -171,13 +171,13 @@ theorem ae_eventually_measure_zero_of_singular (hρ : ρ ⟂ₘ μ) :
intro ε εpos
set s := {x | ¬∀ᶠ a in v.filterAt x, ρ a < ε * μ a} with hs
change μ s = 0
- obtain ⟨o, _, ρo, μo⟩ : ∃ o : Set α, MeasurableSet o ∧ ρ o = 0 ∧ μ (oᶜ) = 0 := hρ
+ obtain ⟨o, _, ρo, μo⟩ : ∃ o : Set α, MeasurableSet o ∧ ρ o = 0 ∧ μ oᶜ = 0 := hρ
apply le_antisymm _ bot_le
calc
μ s ≤ μ (s ∩ o ∪ oᶜ) := by
conv_lhs => rw [← inter_union_compl s o]
exact measure_mono (union_subset_union_right _ (inter_subset_right _ _))
- _ ≤ μ (s ∩ o) + μ (oᶜ) := (measure_union_le _ _)
+ _ ≤ μ (s ∩ o) + μ oᶜ := (measure_union_le _ _)
_ = μ (s ∩ o) := by rw [μo, add_zero]
_ = (ε : ℝ≥0∞)⁻¹ * (ε • μ) (s ∩ o) := by
simp only [coe_nnreal_smul_apply, ← mul_assoc, mul_comm _ (ε : ℝ≥0∞)]
@@ -304,8 +304,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
-- a finite measure part `o n`, taking a measurable superset here, and then taking the union over
-- `n`.
refine'
- ⟨toMeasurable μ (sᶜ) ∪ ⋃ n, toMeasurable (ρ + μ) (u n),
- toMeasurable μ (sᶜ) ∪ ⋃ n, toMeasurable (ρ + μ) (w n), _, _, _, _, _⟩
+ ⟨toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (u n),
+ toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (w n), _, _, _, _, _⟩
-- check that these sets are measurable supersets as required
· exact
(measurableSet_toMeasurable _ _).union
@@ -317,19 +317,19 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
by_cases h : x ∈ s
· refine' Or.inr (mem_iUnion.2 ⟨spanningSetsIndex (ρ + μ) x, _⟩)
exact subset_toMeasurable _ _ ⟨⟨h, hx⟩, mem_spanningSetsIndex _ _⟩
- · exact Or.inl (subset_toMeasurable μ (sᶜ) h)
+ · exact Or.inl (subset_toMeasurable μ sᶜ h)
· intro x hx
by_cases h : x ∈ s
· refine' Or.inr (mem_iUnion.2 ⟨spanningSetsIndex (ρ + μ) x, _⟩)
exact subset_toMeasurable _ _ ⟨⟨h, hx⟩, mem_spanningSetsIndex _ _⟩
- · exact Or.inl (subset_toMeasurable μ (sᶜ) h)
+ · exact Or.inl (subset_toMeasurable μ sᶜ h)
-- it remains to check the nontrivial part that these sets have zero measure intersection.
-- it suffices to do it for fixed `m` and `n`, as one is taking countable unions.
suffices H : ∀ m n : ℕ, μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) = 0
· have A :
- (toMeasurable μ (sᶜ) ∪ ⋃ n, toMeasurable (ρ + μ) (u n)) ∩
- (toMeasurable μ (sᶜ) ∪ ⋃ n, toMeasurable (ρ + μ) (w n)) ⊆
- toMeasurable μ (sᶜ) ∪
+ (toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (u n)) ∩
+ (toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (w n)) ⊆
+ toMeasurable μ sᶜ ∪
⋃ (m) (n), toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n) := by
simp only [inter_distrib_left, inter_distrib_right, true_and_iff, subset_union_left,
union_subset_iff, inter_self]
@@ -339,13 +339,13 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
· simp_rw [iUnion_inter, inter_iUnion]; exact subset_union_right _ _
refine' le_antisymm ((measure_mono A).trans _) bot_le
calc
- μ (toMeasurable μ (sᶜ) ∪
+ μ (toMeasurable μ sᶜ ∪
⋃ (m) (n), toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) ≤
- μ (toMeasurable μ (sᶜ)) +
+ μ (toMeasurable μ sᶜ) +
μ (⋃ (m) (n), toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) :=
measure_union_le _ _
_ = μ (⋃ (m) (n), toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) := by
- have : μ (sᶜ) = 0 := v.ae_tendsto_div hρ; rw [measure_toMeasurable, this, zero_add]
+ have : μ sᶜ = 0 := v.ae_tendsto_div hρ; rw [measure_toMeasurable, this, zero_add]
_ ≤ ∑' (m) (n), μ (toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n)) :=
((measure_iUnion_le _).trans (ENNReal.tsum_le_tsum fun m => measure_iUnion_le _))
_ = 0 := by simp only [H, tsum_zero]
@@ -448,7 +448,7 @@ proved in `measure_le_of_frequently_le`. Since `ρ a / μ a` tends almost everyw
theorem measure_le_mul_of_subset_limRatioMeas_lt {p : ℝ≥0} {s : Set α}
(h : s ⊆ {x | v.limRatioMeas hρ x < p}) : ρ s ≤ p * μ s := by
let t := {x : α | Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x))}
- have A : μ (tᶜ) = 0 := v.ae_tendsto_limRatioMeas hρ
+ have A : μ tᶜ = 0 := v.ae_tendsto_limRatioMeas hρ
suffices H : ρ (s ∩ t) ≤ (p • μ) (s ∩ t);
exact
calc
@@ -472,13 +472,13 @@ proved in `measure_le_of_frequently_le`. Since `ρ a / μ a` tends almost everyw
theorem mul_measure_le_of_subset_lt_limRatioMeas {q : ℝ≥0} {s : Set α}
(h : s ⊆ {x | (q : ℝ≥0∞) < v.limRatioMeas hρ x}) : (q : ℝ≥0∞) * μ s ≤ ρ s := by
let t := {x : α | Tendsto (fun a => ρ a / μ a) (v.filterAt x) (𝓝 (v.limRatioMeas hρ x))}
- have A : μ (tᶜ) = 0 := v.ae_tendsto_limRatioMeas hρ
+ have A : μ tᶜ = 0 := v.ae_tendsto_limRatioMeas hρ
suffices H : (q • μ) (s ∩ t) ≤ ρ (s ∩ t);
exact
calc
(q • μ) s = (q • μ) (s ∩ t ∪ s ∩ tᶜ) := by rw [inter_union_compl]
_ ≤ (q • μ) (s ∩ t) + (q • μ) (s ∩ tᶜ) := (measure_union_le _ _)
- _ ≤ ρ (s ∩ t) + q * μ (tᶜ) := by
+ _ ≤ ρ (s ∩ t) + q * μ tᶜ := by
apply add_le_add H
rw [coe_nnreal_smul_apply]
exact mul_le_mul_left' (measure_mono (inter_subset_right _ _)) _
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file