measure_theory.integral.vitali_caratheodory
⟷
Mathlib.MeasureTheory.Integral.VitaliCaratheodory
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
@@ -6,7 +6,7 @@ Authors: Sébastien Gouëzel
import MeasureTheory.Measure.Regular
import Topology.Semicontinuous
import MeasureTheory.Integral.Bochner
-import Topology.Instances.Ereal
+import Topology.Instances.EReal
#align_import measure_theory.integral.vitali_caratheodory from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
@@ -89,7 +89,7 @@ local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (u «expr ⊇ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (u «expr ⊇ » s) -/
#print MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
@@ -332,7 +332,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (F «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (F «expr ⊆ » s) -/
#print MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -250,9 +250,9 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
refine' ⟨fun x => g0 x + g1 x, fun x => _, g0_cont.add g1_cont, _⟩
· by_cases h : x ∈ s
· have := le_g1 x
- simp only [h, Set.indicator_of_mem, top_le_iff] at this
+ simp only [h, Set.indicator_of_mem, top_le_iff] at this
simp [this]
- · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs ; exact hs h
+ · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs; exact hs h
rw [this]
exact (f_lt_g0 x).trans_le le_self_add
·
@@ -413,8 +413,8 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
by
have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [ENNReal.biSup_add] at this <;> [skip; exact ⟨0, fun x => by simp⟩]
- simp only [lt_iSup_iff] at this
+ erw [ENNReal.biSup_add] at this <;> [skip; exact ⟨0, fun x => by simp⟩]
+ simp only [lt_iSup_iff] at this
rcases this with ⟨fs, fs_le_f, int_fs⟩
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
convert int_fs.le
@@ -449,7 +449,7 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
Integrable (fun x => (g x : ℝ)) μ ∧ ∫ x, (f x : ℝ) ∂μ - ε ≤ ∫ x, g x ∂μ :=
by
lift ε to ℝ≥0 using εpos.le
- rw [NNReal.coe_pos, ← ENNReal.coe_pos] at εpos
+ rw [NNReal.coe_pos, ← ENNReal.coe_pos] at εpos
have If : ∫⁻ x, f x ∂μ < ∞ := has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral
rcases exists_upper_semicontinuous_le_lintegral_le f If.ne εpos.ne' with ⟨g, gf, gcont, gint⟩
have Ig : ∫⁻ x, g x ∂μ < ∞ :=
@@ -586,8 +586,8 @@ theorem exists_upperSemicontinuous_lt_integral_gt [SigmaFinite μ] (f : α →
ext x
simp
· simpa [bot_lt_iff_ne_bot, lt_top_iff_ne_top] using g_lt_top
- · simp_rw [integral_neg, lt_neg_add_iff_add_lt] at gint
- rw [add_comm] at gint
+ · simp_rw [integral_neg, lt_neg_add_iff_add_lt] at gint
+ rw [add_comm] at gint
simpa [integral_neg] using gint
#align measure_theory.exists_upper_semicontinuous_lt_integral_gt MeasureTheory.exists_upperSemicontinuous_lt_integral_gt
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ 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.Measure.Regular
-import Mathbin.Topology.Semicontinuous
-import Mathbin.MeasureTheory.Integral.Bochner
-import Mathbin.Topology.Instances.Ereal
+import MeasureTheory.Measure.Regular
+import Topology.Semicontinuous
+import MeasureTheory.Integral.Bochner
+import Topology.Instances.Ereal
#align_import measure_theory.integral.vitali_caratheodory from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
@@ -89,7 +89,7 @@ local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (u «expr ⊇ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (u «expr ⊇ » s) -/
#print MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
@@ -332,7 +332,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (F «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (F «expr ⊆ » s) -/
#print MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
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.integral.vitali_caratheodory
-! leanprover-community/mathlib commit 36938f775671ff28bea1c0310f1608e4afbb22e0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.MeasureTheory.Measure.Regular
import Mathbin.Topology.Semicontinuous
import Mathbin.MeasureTheory.Integral.Bochner
import Mathbin.Topology.Instances.Ereal
+#align_import measure_theory.integral.vitali_caratheodory from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
+
/-!
# Vitali-Carathéodory theorem
@@ -92,7 +89,7 @@ local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (u «expr ⊇ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (u «expr ⊇ » s) -/
#print MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
@@ -335,7 +332,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (F «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (F «expr ⊆ » s) -/
#print MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -87,13 +87,13 @@ variable {α : Type _} [TopologicalSpace α] [MeasurableSpace α] [BorelSpace α
namespace MeasureTheory
--- mathport name: «expr →ₛ »
local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (u «expr ⊇ » s) -/
+#print MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -158,9 +158,11 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
conv_lhs => rw [← ENNReal.add_halves ε]
abel
#align measure_theory.simple_func.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge
+-/
open SimpleFunc (eapproxDiff tsum_eapproxDiff)
+#print MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge /-
/-- Given a measurable function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -198,7 +200,9 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
· simp_rw [tsum_eapprox_diff f hf, le_refl]
· intro n; exact (simple_func.measurable _).coe_nnreal_ennreal.AEMeasurable
#align measure_theory.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge
+-/
+#print MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge /-
/-- Given a measurable function `f` with values in `ℝ≥0` in a sigma-finite space, there exists a
lower semicontinuous function `g > f` with integral arbitrarily close to that of `f`.
Formulation in terms of `lintegral`.
@@ -227,7 +231,9 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
_ ≤ ∫⁻ x : α, f x ∂μ + ε / 2 + ε / 2 := (add_le_add_right (add_le_add_left wint.le _) _)
_ = ∫⁻ x : α, f x ∂μ + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge
+-/
+#print MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable /-
/-- Given an almost everywhere measurable function `f` with values in `ℝ≥0` in a sigma-finite space,
there exists a lower semicontinuous function `g > f` with integral arbitrarily close to that of `f`.
Formulation in terms of `lintegral`.
@@ -266,9 +272,11 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
_ = ∫⁻ x, f x ∂μ + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable
+-/
variable {μ}
+#print MeasureTheory.exists_lt_lowerSemicontinuous_integral_gt_nnreal /-
/-- Given an integrable function `f` with values in `ℝ≥0` in a sigma-finite space, there exists a
lower semicontinuous function `g > f` with integral arbitrarily close to that of `f`.
Formulation in terms of `integral`.
@@ -322,11 +330,13 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
· apply Filter.eventually_of_forall fun x => _; simp
· apply gcont.measurable.ennreal_to_real.ae_measurable.ae_strongly_measurable
#align measure_theory.exists_lt_lower_semicontinuous_integral_gt_nnreal MeasureTheory.exists_lt_lowerSemicontinuous_integral_gt_nnreal
+-/
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (F «expr ⊆ » s) -/
+#print MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le /-
/-- Given a simple function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -390,7 +400,9 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
conv_lhs => rw [← ENNReal.add_halves ε]
abel
#align measure_theory.simple_func.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le
+-/
+#print MeasureTheory.exists_upperSemicontinuous_le_lintegral_le /-
/-- Given an integrable function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -425,7 +437,9 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
_ ≤ ∫⁻ x, g x ∂μ + ε / 2 + ε / 2 := (add_le_add gint le_rfl)
_ = ∫⁻ x, g x ∂μ + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.exists_upperSemicontinuous_le_lintegral_le
+-/
+#print MeasureTheory.exists_upperSemicontinuous_le_integral_le /-
/-- Given an integrable function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`integral`.
@@ -460,10 +474,12 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
· apply Filter.eventually_of_forall; simp
· exact fint.ae_strongly_measurable
#align measure_theory.exists_upper_semicontinuous_le_integral_le MeasureTheory.exists_upperSemicontinuous_le_integral_le
+-/
/-! ### Vitali-Carathéodory theorem -/
+#print MeasureTheory.exists_lt_lowerSemicontinuous_integral_lt /-
/-- **Vitali-Carathéodory Theorem**: given an integrable real function `f`, there exists an
integrable function `g > f` which is lower semicontinuous, with integral arbitrarily close
to that of `f`. This function has to be `ereal`-valued in general. -/
@@ -547,7 +563,9 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
· intro x
exact EReal.continuousAt_add (by simp) (by simp)
#align measure_theory.exists_lt_lower_semicontinuous_integral_lt MeasureTheory.exists_lt_lowerSemicontinuous_integral_lt
+-/
+#print MeasureTheory.exists_upperSemicontinuous_lt_integral_gt /-
/-- **Vitali-Carathéodory Theorem**: given an integrable real function `f`, there exists an
integrable function `g < f` which is upper semicontinuous, with integral arbitrarily close to that
of `f`. This function has to be `ereal`-valued in general. -/
@@ -575,6 +593,7 @@ theorem exists_upperSemicontinuous_lt_integral_gt [SigmaFinite μ] (f : α →
rw [add_comm] at gint
simpa [integral_neg] using gint
#align measure_theory.exists_upper_semicontinuous_lt_integral_gt MeasureTheory.exists_upperSemicontinuous_lt_integral_gt
+-/
end MeasureTheory
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -100,11 +100,11 @@ function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation i
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ≥0) {ε : ℝ≥0∞}
(ε0 : ε ≠ 0) :
- ∃ g : α → ℝ≥0, (∀ x, f x ≤ g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
+ ∃ g : α → ℝ≥0, (∀ x, f x ≤ g x) ∧ LowerSemicontinuous g ∧ ∫⁻ x, g x ∂μ ≤ ∫⁻ x, f x ∂μ + ε :=
by
induction' f using MeasureTheory.SimpleFunc.induction with c s hs f₁ f₂ H h₁ h₂ generalizing ε
· let f := simple_func.piecewise s hs (simple_func.const α c) (simple_func.const α 0)
- by_cases h : (∫⁻ x, f x ∂μ) = ⊤
+ by_cases h : ∫⁻ x, f x ∂μ = ⊤
· refine'
⟨fun x => c, fun x => _, lowerSemicontinuous_const, by
simp only [_root_.top_add, le_top, h]⟩
@@ -167,16 +167,14 @@ function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation i
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf : Measurable f) {ε : ℝ≥0∞}
(εpos : ε ≠ 0) :
- ∃ g : α → ℝ≥0∞,
- (∀ x, f x ≤ g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
+ ∃ g : α → ℝ≥0∞, (∀ x, f x ≤ g x) ∧ LowerSemicontinuous g ∧ ∫⁻ x, g x ∂μ ≤ ∫⁻ x, f x ∂μ + ε :=
by
rcases ENNReal.exists_pos_sum_of_countable' εpos ℕ with ⟨δ, δpos, hδ⟩
have :
∀ n,
∃ g : α → ℝ≥0,
(∀ x, simple_func.eapprox_diff f n x ≤ g x) ∧
- LowerSemicontinuous g ∧
- (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, simple_func.eapprox_diff f n x ∂μ) + δ n :=
+ LowerSemicontinuous g ∧ ∫⁻ x, g x ∂μ ≤ ∫⁻ x, simple_func.eapprox_diff f n x ∂μ + δ n :=
fun n =>
simple_func.exists_le_lower_semicontinuous_lintegral_ge μ (simple_func.eapprox_diff f n)
(δpos n).ne'
@@ -190,11 +188,11 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
ENNReal.coe_le_coe.2 hxy
·
calc
- (∫⁻ x, ∑' n : ℕ, g n x ∂μ) = ∑' n, ∫⁻ x, g n x ∂μ := by
+ ∫⁻ x, ∑' n : ℕ, g n x ∂μ = ∑' n, ∫⁻ x, g n x ∂μ := by
rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nnreal_ennreal.AEMeasurable]
- _ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := (ENNReal.tsum_le_tsum hg)
- _ = (∑' n, ∫⁻ x, eapprox_diff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
- _ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
+ _ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ + δ n) := (ENNReal.tsum_le_tsum hg)
+ _ = ∑' n, ∫⁻ x, eapprox_diff f n x ∂μ + ∑' n, δ n := ENNReal.tsum_add
+ _ ≤ ∫⁻ x : α, f x ∂μ + ε := by
refine' add_le_add _ hδ.le
rw [← lintegral_tsum]
· simp_rw [tsum_eapprox_diff f hf, le_refl]
@@ -208,7 +206,7 @@ Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous
theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α → ℝ≥0)
(fmeas : Measurable f) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
∃ g : α → ℝ≥0∞,
- (∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
+ (∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ ∫⁻ x, g x ∂μ ≤ ∫⁻ x, f x ∂μ + ε :=
by
have : ε / 2 ≠ 0 := (ENNReal.half_pos ε0).ne'
rcases exists_pos_lintegral_lt_of_sigma_finite μ this with ⟨w, wpos, wmeas, wint⟩
@@ -223,11 +221,11 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
_ ≤ g x := le_g x
·
calc
- (∫⁻ x : α, g x ∂μ) ≤ (∫⁻ x : α, f x + w x ∂μ) + ε / 2 := gint
- _ = ((∫⁻ x : α, f x ∂μ) + ∫⁻ x : α, w x ∂μ) + ε / 2 := by
+ ∫⁻ x : α, g x ∂μ ≤ ∫⁻ x : α, f x + w x ∂μ + ε / 2 := gint
+ _ = ∫⁻ x : α, f x ∂μ + ∫⁻ x : α, w x ∂μ + ε / 2 := by
rw [lintegral_add_right _ wmeas.coe_nnreal_ennreal]
- _ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := (add_le_add_right (add_le_add_left wint.le _) _)
- _ = (∫⁻ x : α, f x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
+ _ ≤ ∫⁻ x : α, f x ∂μ + ε / 2 + ε / 2 := (add_le_add_right (add_le_add_left wint.le _) _)
+ _ = ∫⁻ x : α, f x ∂μ + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge
/-- Given an almost everywhere measurable function `f` with values in `ℝ≥0` in a sigma-finite space,
@@ -237,7 +235,7 @@ Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous
theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite μ] (f : α → ℝ≥0)
(fmeas : AEMeasurable f μ) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
∃ g : α → ℝ≥0∞,
- (∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
+ (∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ ∫⁻ x, g x ∂μ ≤ ∫⁻ x, f x ∂μ + ε :=
by
have : ε / 2 ≠ 0 := (ENNReal.half_pos ε0).ne'
rcases exists_lt_lower_semicontinuous_lintegral_ge μ (fmeas.mk f) fmeas.measurable_mk this with
@@ -256,9 +254,9 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
exact (f_lt_g0 x).trans_le le_self_add
·
calc
- (∫⁻ x, g0 x + g1 x ∂μ) = (∫⁻ x, g0 x ∂μ) + ∫⁻ x, g1 x ∂μ :=
+ ∫⁻ x, g0 x + g1 x ∂μ = ∫⁻ x, g0 x ∂μ + ∫⁻ x, g1 x ∂μ :=
lintegral_add_left g0_cont.measurable _
- _ ≤ (∫⁻ x, f x ∂μ) + ε / 2 + (0 + ε / 2) :=
+ _ ≤ ∫⁻ x, f x ∂μ + ε / 2 + (0 + ε / 2) :=
by
refine' add_le_add _ _
· convert g0_int using 2
@@ -266,7 +264,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
· convert g1_int
simp only [smeas, μs, lintegral_const, Set.univ_inter, MeasurableSet.univ,
lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
- _ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
+ _ = ∫⁻ x, f x ∂μ + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable
variable {μ}
@@ -281,7 +279,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
(∀ x, (f x : ℝ≥0∞) < g x) ∧
LowerSemicontinuous g ∧
(∀ᵐ x ∂μ, g x < ⊤) ∧
- Integrable (fun x => (g x).toReal) μ ∧ (∫ x, (g x).toReal ∂μ) < (∫ x, f x ∂μ) + ε :=
+ Integrable (fun x => (g x).toReal) μ ∧ ∫ x, (g x).toReal ∂μ < ∫ x, f x ∂μ + ε :=
by
have fmeas : AEMeasurable f μ :=
by
@@ -289,14 +287,14 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
simp only [Real.toNNReal_coe]
lift ε to ℝ≥0 using εpos.le
obtain ⟨δ, δpos, hδε⟩ : ∃ δ : ℝ≥0, 0 < δ ∧ δ < ε; exact exists_between εpos
- have int_f_ne_top : (∫⁻ a : α, f a ∂μ) ≠ ∞ :=
+ have int_f_ne_top : ∫⁻ a : α, f a ∂μ ≠ ∞ :=
(has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral).Ne
rcases exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable μ f fmeas
(ENNReal.coe_ne_zero.2 δpos.ne') with
⟨g, f_lt_g, gcont, gint⟩
- have gint_ne : (∫⁻ x : α, g x ∂μ) ≠ ∞ := ne_top_of_le_ne_top (by simpa) gint
+ have gint_ne : ∫⁻ x : α, g x ∂μ ≠ ∞ := ne_top_of_le_ne_top (by simpa) gint
have g_lt_top : ∀ᵐ x : α ∂μ, g x < ∞ := ae_lt_top gcont.measurable gint_ne
- have Ig : (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) = ∫⁻ a : α, g a ∂μ :=
+ have Ig : ∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ = ∫⁻ a : α, g a ∂μ :=
by
apply lintegral_congr_ae
filter_upwards [g_lt_top] with _ hx
@@ -311,7 +309,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
ENNReal.toReal (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) =
ENNReal.toReal (∫⁻ a : α, g a ∂μ) :=
by congr 1
- _ ≤ ENNReal.toReal ((∫⁻ a : α, f a ∂μ) + δ) :=
+ _ ≤ ENNReal.toReal (∫⁻ a : α, f a ∂μ + δ) :=
by
apply ENNReal.toReal_mono _ gint
simpa using int_f_ne_top
@@ -334,8 +332,8 @@ function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation i
`lintegral`.
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ≥0)
- (int_f : (∫⁻ x, f x ∂μ) ≠ ∞) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
- ∃ g : α → ℝ≥0, (∀ x, g x ≤ f x) ∧ UpperSemicontinuous g ∧ (∫⁻ x, f x ∂μ) ≤ (∫⁻ x, g x ∂μ) + ε :=
+ (int_f : ∫⁻ x, f x ∂μ ≠ ∞) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
+ ∃ g : α → ℝ≥0, (∀ x, g x ≤ f x) ∧ UpperSemicontinuous g ∧ ∫⁻ x, f x ∂μ ≤ ∫⁻ x, g x ∂μ + ε :=
by
induction' f using MeasureTheory.SimpleFunc.induction with c s hs f₁ f₂ H h₁ h₂ generalizing ε
· let f := simple_func.piecewise s hs (simple_func.const α c) (simple_func.const α 0)
@@ -376,7 +374,7 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
simp_rw [mul_add]
rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
simpa using hc
- · have A : ((∫⁻ x : α, f₁ x ∂μ) + ∫⁻ x : α, f₂ x ∂μ) ≠ ⊤ := by
+ · have A : ∫⁻ x : α, f₁ x ∂μ + ∫⁻ x : α, f₂ x ∂μ ≠ ⊤ := by
rwa [← lintegral_add_left f₁.measurable.coe_nnreal_ennreal]
rcases h₁ (ENNReal.add_ne_top.1 A).1 (ENNReal.half_pos ε0).ne' with
⟨g₁, f₁_le_g₁, g₁cont, g₁int⟩
@@ -397,12 +395,12 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
-theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f : (∫⁻ x, f x ∂μ) ≠ ∞)
+theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f : ∫⁻ x, f x ∂μ ≠ ∞)
{ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
- ∃ g : α → ℝ≥0, (∀ x, g x ≤ f x) ∧ UpperSemicontinuous g ∧ (∫⁻ x, f x ∂μ) ≤ (∫⁻ x, g x ∂μ) + ε :=
+ ∃ g : α → ℝ≥0, (∀ x, g x ≤ f x) ∧ UpperSemicontinuous g ∧ ∫⁻ x, f x ∂μ ≤ ∫⁻ x, g x ∂μ + ε :=
by
obtain ⟨fs, fs_le_f, int_fs⟩ :
- ∃ fs : α →ₛ ℝ≥0, (∀ x, fs x ≤ f x) ∧ (∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 :=
+ ∃ fs : α →ₛ ℝ≥0, (∀ x, fs x ≤ f x) ∧ ∫⁻ x, f x ∂μ ≤ ∫⁻ x, fs x ∂μ + ε / 2 :=
by
have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
@@ -413,19 +411,19 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
convert int_fs.le
rw [← simple_func.lintegral_eq_lintegral]
rfl
- have int_fs_lt_top : (∫⁻ x, fs x ∂μ) ≠ ∞ :=
+ have int_fs_lt_top : ∫⁻ x, fs x ∂μ ≠ ∞ :=
by
apply ne_top_of_le_ne_top int_f (lintegral_mono fun x => _)
simpa only [ENNReal.coe_le_coe] using fs_le_f x
obtain ⟨g, g_le_fs, gcont, gint⟩ :
∃ g : α → ℝ≥0,
- (∀ x, g x ≤ fs x) ∧ UpperSemicontinuous g ∧ (∫⁻ x, fs x ∂μ) ≤ (∫⁻ x, g x ∂μ) + ε / 2 :=
+ (∀ x, g x ≤ fs x) ∧ UpperSemicontinuous g ∧ ∫⁻ x, fs x ∂μ ≤ ∫⁻ x, g x ∂μ + ε / 2 :=
fs.exists_upper_semicontinuous_le_lintegral_le int_fs_lt_top (ENNReal.half_pos ε0).ne'
refine' ⟨g, fun x => (g_le_fs x).trans (fs_le_f x), gcont, _⟩
calc
- (∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 := int_fs
- _ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := (add_le_add gint le_rfl)
- _ = (∫⁻ x, g x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
+ ∫⁻ x, f x ∂μ ≤ ∫⁻ x, fs x ∂μ + ε / 2 := int_fs
+ _ ≤ ∫⁻ x, g x ∂μ + ε / 2 + ε / 2 := (add_le_add gint le_rfl)
+ _ = ∫⁻ x, g x ∂μ + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.exists_upperSemicontinuous_le_lintegral_le
/-- Given an integrable function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
@@ -437,13 +435,13 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
∃ g : α → ℝ≥0,
(∀ x, g x ≤ f x) ∧
UpperSemicontinuous g ∧
- Integrable (fun x => (g x : ℝ)) μ ∧ (∫ x, (f x : ℝ) ∂μ) - ε ≤ ∫ x, g x ∂μ :=
+ Integrable (fun x => (g x : ℝ)) μ ∧ ∫ x, (f x : ℝ) ∂μ - ε ≤ ∫ x, g x ∂μ :=
by
lift ε to ℝ≥0 using εpos.le
rw [NNReal.coe_pos, ← ENNReal.coe_pos] at εpos
- have If : (∫⁻ x, f x ∂μ) < ∞ := has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral
+ have If : ∫⁻ x, f x ∂μ < ∞ := has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral
rcases exists_upper_semicontinuous_le_lintegral_le f If.ne εpos.ne' with ⟨g, gf, gcont, gint⟩
- have Ig : (∫⁻ x, g x ∂μ) < ∞ :=
+ have Ig : ∫⁻ x, g x ∂μ < ∞ :=
by
apply lt_of_le_of_lt (lintegral_mono fun x => _) If
simpa using gf x
@@ -475,7 +473,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
(∀ x, (f x : EReal) < g x) ∧
LowerSemicontinuous g ∧
Integrable (fun x => EReal.toReal (g x)) μ ∧
- (∀ᵐ x ∂μ, g x < ⊤) ∧ (∫ x, EReal.toReal (g x) ∂μ) < (∫ x, f x ∂μ) + ε :=
+ (∀ᵐ x ∂μ, g x < ⊤) ∧ ∫ x, EReal.toReal (g x) ∂μ < ∫ x, f x ∂μ + ε :=
by
let δ : ℝ≥0 := ⟨ε / 2, (half_pos εpos).le⟩
have δpos : 0 < δ := half_pos εpos
@@ -498,24 +496,24 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
convert gp_integrable.sub gm_integrable
ext x
simp
- show (∫ x : α, (g x).toReal ∂μ) < (∫ x : α, f x ∂μ) + ε;
+ show ∫ x : α, (g x).toReal ∂μ < ∫ x : α, f x ∂μ + ε;
exact
calc
- (∫ x : α, (g x).toReal ∂μ) = ∫ x : α, EReal.toReal (gp x) - EReal.toReal (gm x) ∂μ :=
+ ∫ x : α, (g x).toReal ∂μ = ∫ x : α, EReal.toReal (gp x) - EReal.toReal (gm x) ∂μ :=
integral_congr_ae ae_g
- _ = (∫ x : α, EReal.toReal (gp x) ∂μ) - ∫ x : α, gm x ∂μ :=
+ _ = ∫ x : α, EReal.toReal (gp x) ∂μ - ∫ x : α, gm x ∂μ :=
by
simp only [EReal.toReal_coe_ennreal, ENNReal.coe_toReal, coe_coe]
exact integral_sub gp_integrable gm_integrable
- _ < (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ∫ x : α, gm x ∂μ :=
+ _ < ∫ x : α, ↑(fp x) ∂μ + ↑δ - ∫ x : α, gm x ∂μ :=
by
apply sub_lt_sub_right
convert gpint
simp only [EReal.toReal_coe_ennreal]
- _ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, fm x ∂μ) - δ) := (sub_le_sub_left gmint _)
- _ = (∫ x : α, f x ∂μ) + 2 * δ := by
+ _ ≤ ∫ x : α, ↑(fp x) ∂μ + ↑δ - (∫ x : α, fm x ∂μ - δ) := (sub_le_sub_left gmint _)
+ _ = ∫ x : α, f x ∂μ + 2 * δ := by
simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf, fp, fm]; ring
- _ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [δ, mul_comm]
+ _ = ∫ x : α, f x ∂μ + ε := by congr 1; field_simp [δ, mul_comm]
show ∀ᵐ x : α ∂μ, g x < ⊤
· filter_upwards [gp_lt_top] with _ hx
simp only [g, sub_eq_add_neg, coe_coe, Ne.def, (EReal.add_lt_top _ _).Ne, lt_top_iff_ne_top,
@@ -559,7 +557,7 @@ theorem exists_upperSemicontinuous_lt_integral_gt [SigmaFinite μ] (f : α →
(∀ x, (g x : EReal) < f x) ∧
UpperSemicontinuous g ∧
Integrable (fun x => EReal.toReal (g x)) μ ∧
- (∀ᵐ x ∂μ, ⊥ < g x) ∧ (∫ x, f x ∂μ) < (∫ x, EReal.toReal (g x) ∂μ) + ε :=
+ (∀ᵐ x ∂μ, ⊥ < g x) ∧ ∫ x, f x ∂μ < ∫ x, EReal.toReal (g x) ∂μ + ε :=
by
rcases exists_lt_lower_semicontinuous_integral_lt (fun x => -f x) hf.neg εpos with
⟨g, g_lt_f, gcont, g_integrable, g_lt_top, gint⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -146,7 +146,6 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simp_rw [mul_add]
rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
simpa using hc
-
· rcases h₁ (ENNReal.half_pos ε0).ne' with ⟨g₁, f₁_le_g₁, g₁cont, g₁int⟩
rcases h₂ (ENNReal.half_pos ε0).ne' with ⟨g₂, f₂_le_g₂, g₂cont, g₂int⟩
refine'
@@ -200,7 +199,6 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
rw [← lintegral_tsum]
· simp_rw [tsum_eapprox_diff f hf, le_refl]
· intro n; exact (simple_func.measurable _).coe_nnreal_ennreal.AEMeasurable
-
#align measure_theory.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge
/-- Given a measurable function `f` with values in `ℝ≥0` in a sigma-finite space, there exists a
@@ -223,7 +221,6 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
calc
(f x : ℝ≥0∞) < f' x := by simpa [← ENNReal.coe_lt_coe] using add_lt_add_left (wpos x) (f x)
_ ≤ g x := le_g x
-
·
calc
(∫⁻ x : α, g x ∂μ) ≤ (∫⁻ x : α, f x + w x ∂μ) + ε / 2 := gint
@@ -231,7 +228,6 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
rw [lintegral_add_right _ wmeas.coe_nnreal_ennreal]
_ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := (add_le_add_right (add_le_add_left wint.le _) _)
_ = (∫⁻ x : α, f x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
-
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge
/-- Given an almost everywhere measurable function `f` with values in `ℝ≥0` in a sigma-finite space,
@@ -271,7 +267,6 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
simp only [smeas, μs, lintegral_const, Set.univ_inter, MeasurableSet.univ,
lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
_ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
-
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable
variable {μ}
@@ -324,7 +319,6 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
rw [ENNReal.toReal_add int_f_ne_top ENNReal.coe_ne_top, ENNReal.coe_toReal]
_ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := (add_lt_add_left hδε _)
_ = (∫⁻ a : α, ENNReal.ofReal ↑(f a) ∂μ).toReal + ε := by simp
-
· apply Filter.eventually_of_forall fun x => _; simp
· exact fmeas.coe_nnreal_real.ae_strongly_measurable
· apply Filter.eventually_of_forall fun x => _; simp
@@ -382,7 +376,6 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
simp_rw [mul_add]
rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
simpa using hc
-
· have A : ((∫⁻ x : α, f₁ x ∂μ) + ∫⁻ x : α, f₂ x ∂μ) ≠ ⊤ := by
rwa [← lintegral_add_left f₁.measurable.coe_nnreal_ennreal]
rcases h₁ (ENNReal.add_ne_top.1 A).1 (ENNReal.half_pos ε0).ne' with
@@ -433,7 +426,6 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
(∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 := int_fs
_ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := (add_le_add gint le_rfl)
_ = (∫⁻ x, g x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
-
#align measure_theory.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.exists_upperSemicontinuous_le_lintegral_le
/-- Given an integrable function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
@@ -524,7 +516,6 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
_ = (∫ x : α, f x ∂μ) + 2 * δ := by
simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf, fp, fm]; ring
_ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [δ, mul_comm]
-
show ∀ᵐ x : α ∂μ, g x < ⊤
· filter_upwards [gp_lt_top] with _ hx
simp only [g, sub_eq_add_neg, coe_coe, Ne.def, (EReal.add_lt_top _ _).Ne, lt_top_iff_ne_top,
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -93,7 +93,7 @@ local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (u «expr ⊇ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (u «expr ⊇ » s) -/
/-- Given a simple function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -334,7 +334,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (F «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (F «expr ⊆ » s) -/
/-- Given a simple function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/58a272265b5e05f258161260dd2c5d247213cbd3
@@ -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.integral.vitali_caratheodory
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
+! leanprover-community/mathlib commit 36938f775671ff28bea1c0310f1608e4afbb22e0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Instances.Ereal
/-!
# Vitali-Carathéodory theorem
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Vitali-Carathéodory theorem asserts the following. Consider an integrable function `f : α → ℝ` on
a space with a regular measure. Then there exists a function `g : α → ereal` such that `f x < g x`
everywhere, `g` is lower semicontinuous, and the integral of `g` is arbitrarily close to that of
mathlib commit https://github.com/leanprover-community/mathlib/commit/13361559d66b84f80b6d5a1c4a26aa5054766725
@@ -235,7 +235,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
there exists a lower semicontinuous function `g > f` with integral arbitrarily close to that of `f`.
Formulation in terms of `lintegral`.
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
-theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable [SigmaFinite μ] (f : α → ℝ≥0)
+theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite μ] (f : α → ℝ≥0)
(fmeas : AEMeasurable f μ) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
∃ g : α → ℝ≥0∞,
(∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
@@ -269,7 +269,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable [SigmaFinite
lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
_ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
-#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable
+#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable
variable {μ}
@@ -277,7 +277,7 @@ variable {μ}
lower semicontinuous function `g > f` with integral arbitrarily close to that of `f`.
Formulation in terms of `integral`.
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
-theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f : α → ℝ≥0)
+theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f : α → ℝ≥0)
(fint : Integrable (fun x => (f x : ℝ)) μ) {ε : ℝ} (εpos : 0 < ε) :
∃ g : α → ℝ≥0∞,
(∀ x, (f x : ℝ≥0∞) < g x) ∧
@@ -326,7 +326,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
· exact fmeas.coe_nnreal_real.ae_strongly_measurable
· apply Filter.eventually_of_forall fun x => _; simp
· apply gcont.measurable.ennreal_to_real.ae_measurable.ae_strongly_measurable
-#align measure_theory.exists_lt_lower_semicontinuous_integral_gt_nnreal MeasureTheory.exists_lt_lowerSemicontinuous_integral_gt_nNReal
+#align measure_theory.exists_lt_lower_semicontinuous_integral_gt_nnreal MeasureTheory.exists_lt_lowerSemicontinuous_integral_gt_nnreal
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -301,7 +301,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
have Ig : (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) = ∫⁻ a : α, g a ∂μ :=
by
apply lintegral_congr_ae
- filter_upwards [g_lt_top]with _ hx
+ filter_upwards [g_lt_top] with _ hx
simp only [hx.ne, ENNReal.ofReal_toReal, Ne.def, not_false_iff]
refine' ⟨g, f_lt_g, gcont, g_lt_top, _, _⟩
· refine' ⟨gcont.measurable.ennreal_to_real.ae_measurable.ae_strongly_measurable, _⟩
@@ -495,7 +495,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
let g : α → EReal := fun x => (gp x : EReal) - gm x
have ae_g : ∀ᵐ x ∂μ, (g x).toReal = (gp x : EReal).toReal - (gm x : EReal).toReal :=
by
- filter_upwards [gp_lt_top]with _ hx
+ filter_upwards [gp_lt_top] with _ hx
rw [EReal.toReal_sub] <;> simp [hx.ne]
refine' ⟨g, _, _, _, _, _⟩
show integrable (fun x => EReal.toReal (g x)) μ
@@ -523,7 +523,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
_ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [δ, mul_comm]
show ∀ᵐ x : α ∂μ, g x < ⊤
- · filter_upwards [gp_lt_top]with _ hx
+ · filter_upwards [gp_lt_top] with _ hx
simp only [g, sub_eq_add_neg, coe_coe, Ne.def, (EReal.add_lt_top _ _).Ne, lt_top_iff_ne_top,
lt_top_iff_ne_top.1 hx, EReal.coe_ennreal_eq_top_iff, not_false_iff, EReal.neg_eq_top_iff,
EReal.coe_ennreal_ne_bot]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -125,7 +125,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
or_false_iff, lintegral_indicator, ENNReal.coe_eq_zero, Ne.def, not_false_iff,
simple_func.coe_zero, Set.piecewise_eq_indicator, simple_func.coe_piecewise, false_and_iff,
restrict_apply] using h
- obtain ⟨u, su, u_open, μu⟩ : ∃ (u : _)(_ : u ⊇ s), IsOpen u ∧ μ u < μ s + ε / c :=
+ obtain ⟨u, su, u_open, μu⟩ : ∃ (u : _) (_ : u ⊇ s), IsOpen u ∧ μ u < μ s + ε / c :=
s.exists_is_open_lt_of_lt _ this
refine'
⟨Set.indicator u fun x => c, fun x => _, u_open.lower_semicontinuous_indicator (zero_le _), _⟩
@@ -250,9 +250,9 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable [SigmaFinite
refine' ⟨fun x => g0 x + g1 x, fun x => _, g0_cont.add g1_cont, _⟩
· by_cases h : x ∈ s
· have := le_g1 x
- simp only [h, Set.indicator_of_mem, top_le_iff] at this
+ simp only [h, Set.indicator_of_mem, top_le_iff] at this
simp [this]
- · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs; exact hs h
+ · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs ; exact hs h
rw [this]
exact (f_lt_g0 x).trans_le le_self_add
·
@@ -360,7 +360,7 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
simple_func.coe_zero, Set.piecewise_eq_indicator, simple_func.coe_piecewise,
false_and_iff] using int_f
have : (0 : ℝ≥0∞) < ε / c := ENNReal.div_pos_iff.2 ⟨ε0, ENNReal.coe_ne_top⟩
- obtain ⟨F, Fs, F_closed, μF⟩ : ∃ (F : _)(_ : F ⊆ s), IsClosed F ∧ μ s < μ F + ε / c :=
+ obtain ⟨F, Fs, F_closed, μF⟩ : ∃ (F : _) (_ : F ⊆ s), IsClosed F ∧ μ s < μ F + ε / c :=
hs.exists_is_closed_lt_add μs_lt_top.ne this.ne'
refine'
⟨Set.indicator F fun x => c, fun x => _, F_closed.upper_semicontinuous_indicator (zero_le _),
@@ -410,8 +410,8 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
by
have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [ENNReal.biSup_add] at this <;> [skip;exact ⟨0, fun x => by simp⟩]
- simp only [lt_iSup_iff] at this
+ erw [ENNReal.biSup_add] at this <;> [skip; exact ⟨0, fun x => by simp⟩]
+ simp only [lt_iSup_iff] at this
rcases this with ⟨fs, fs_le_f, int_fs⟩
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
convert int_fs.le
@@ -445,7 +445,7 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
Integrable (fun x => (g x : ℝ)) μ ∧ (∫ x, (f x : ℝ) ∂μ) - ε ≤ ∫ x, g x ∂μ :=
by
lift ε to ℝ≥0 using εpos.le
- rw [NNReal.coe_pos, ← ENNReal.coe_pos] at εpos
+ rw [NNReal.coe_pos, ← ENNReal.coe_pos] at εpos
have If : (∫⁻ x, f x ∂μ) < ∞ := has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral
rcases exists_upper_semicontinuous_le_lintegral_le f If.ne εpos.ne' with ⟨g, gf, gcont, gint⟩
have Ig : (∫⁻ x, g x ∂μ) < ∞ :=
@@ -579,8 +579,8 @@ theorem exists_upperSemicontinuous_lt_integral_gt [SigmaFinite μ] (f : α →
ext x
simp
· simpa [bot_lt_iff_ne_bot, lt_top_iff_ne_top] using g_lt_top
- · simp_rw [integral_neg, lt_neg_add_iff_add_lt] at gint
- rw [add_comm] at gint
+ · simp_rw [integral_neg, lt_neg_add_iff_add_lt] at gint
+ rw [add_comm] at gint
simpa [integral_neg] using gint
#align measure_theory.exists_upper_semicontinuous_lt_integral_gt MeasureTheory.exists_upperSemicontinuous_lt_integral_gt
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -75,7 +75,7 @@ See result `measure_theory.Lp.continuous_map_dense`, in the file
-/
-open ENNReal NNReal
+open scoped ENNReal NNReal
open MeasureTheory MeasureTheory.Measure
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -196,8 +196,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
refine' add_le_add _ hδ.le
rw [← lintegral_tsum]
· simp_rw [tsum_eapprox_diff f hf, le_refl]
- · intro n
- exact (simple_func.measurable _).coe_nnreal_ennreal.AEMeasurable
+ · intro n; exact (simple_func.measurable _).coe_nnreal_ennreal.AEMeasurable
#align measure_theory.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge
@@ -253,9 +252,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable [SigmaFinite
· have := le_g1 x
simp only [h, Set.indicator_of_mem, top_le_iff] at this
simp [this]
- · have : f x = fmeas.mk f x := by
- rw [Set.compl_subset_comm] at hs
- exact hs h
+ · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs; exact hs h
rw [this]
exact (f_lt_g0 x).trans_le le_self_add
·
@@ -290,12 +287,10 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
by
have fmeas : AEMeasurable f μ :=
by
- convert fint.ae_strongly_measurable.real_to_nnreal.ae_measurable
- ext1 x
+ convert fint.ae_strongly_measurable.real_to_nnreal.ae_measurable; ext1 x
simp only [Real.toNNReal_coe]
lift ε to ℝ≥0 using εpos.le
- obtain ⟨δ, δpos, hδε⟩ : ∃ δ : ℝ≥0, 0 < δ ∧ δ < ε
- exact exists_between εpos
+ obtain ⟨δ, δpos, hδε⟩ : ∃ δ : ℝ≥0, 0 < δ ∧ δ < ε; exact exists_between εpos
have int_f_ne_top : (∫⁻ a : α, f a ∂μ) ≠ ∞ :=
(has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral).Ne
rcases exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable μ f fmeas
@@ -327,11 +322,9 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
_ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := (add_lt_add_left hδε _)
_ = (∫⁻ a : α, ENNReal.ofReal ↑(f a) ∂μ).toReal + ε := by simp
- · apply Filter.eventually_of_forall fun x => _
- simp
+ · apply Filter.eventually_of_forall fun x => _; simp
· exact fmeas.coe_nnreal_real.ae_strongly_measurable
- · apply Filter.eventually_of_forall fun x => _
- simp
+ · apply Filter.eventually_of_forall fun x => _; simp
· apply gcont.measurable.ennreal_to_real.ae_measurable.ae_strongly_measurable
#align measure_theory.exists_lt_lower_semicontinuous_integral_gt_nnreal MeasureTheory.exists_lt_lowerSemicontinuous_integral_gt_nNReal
@@ -467,14 +460,11 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
· rw [sub_le_iff_le_add]
convert ENNReal.toReal_mono _ gint
· simp
- · rw [ENNReal.toReal_add Ig.ne ENNReal.coe_ne_top]
- simp
+ · rw [ENNReal.toReal_add Ig.ne ENNReal.coe_ne_top]; simp
· simpa using Ig.ne
- · apply Filter.eventually_of_forall
- simp
+ · apply Filter.eventually_of_forall; simp
· exact gcont.measurable.coe_nnreal_real.ae_measurable.ae_strongly_measurable
- · apply Filter.eventually_of_forall
- simp
+ · apply Filter.eventually_of_forall; simp
· exact fint.ae_strongly_measurable
#align measure_theory.exists_upper_semicontinuous_le_integral_le MeasureTheory.exists_upperSemicontinuous_le_integral_le
@@ -513,7 +503,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
convert gp_integrable.sub gm_integrable
ext x
simp
- show (∫ x : α, (g x).toReal ∂μ) < (∫ x : α, f x ∂μ) + ε
+ show (∫ x : α, (g x).toReal ∂μ) < (∫ x : α, f x ∂μ) + ε;
exact
calc
(∫ x : α, (g x).toReal ∂μ) = ∫ x : α, EReal.toReal (gp x) - EReal.toReal (gm x) ∂μ :=
@@ -528,13 +518,9 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
convert gpint
simp only [EReal.toReal_coe_ennreal]
_ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, fm x ∂μ) - δ) := (sub_le_sub_left gmint _)
- _ = (∫ x : α, f x ∂μ) + 2 * δ :=
- by
- simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf, fp, fm]
- ring
- _ = (∫ x : α, f x ∂μ) + ε := by
- congr 1
- field_simp [δ, mul_comm]
+ _ = (∫ x : α, f x ∂μ) + 2 * δ := by
+ simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf, fp, fm]; ring
+ _ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [δ, mul_comm]
show ∀ᵐ x : α ∂μ, g x < ⊤
· filter_upwards [gp_lt_top]with _ hx
@@ -545,8 +531,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
· intro x
rw [EReal.coe_real_ereal_eq_coe_toNNReal_sub_coe_toNNReal (f x)]
refine' EReal.sub_lt_sub_of_lt_of_le _ _ _ _
- · simp only [EReal.coe_ennreal_lt_coe_ennreal_iff, coe_coe]
- exact fp_lt_gp x
+ · simp only [EReal.coe_ennreal_lt_coe_ennreal_iff, coe_coe]; exact fp_lt_gp x
· simp only [ENNReal.coe_le_coe, EReal.coe_ennreal_le_coe_ennreal_iff, coe_coe]
exact gm_le_fm x
· simp only [EReal.coe_ennreal_ne_bot, Ne.def, not_false_iff, coe_coe]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -417,7 +417,7 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
by
have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [ENNReal.biSup_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
+ erw [ENNReal.biSup_add] at this <;> [skip;exact ⟨0, fun x => by simp⟩]
simp only [lt_iSup_iff] at this
rcases this with ⟨fs, fs_le_f, int_fs⟩
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -189,7 +189,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
·
calc
(∫⁻ x, ∑' n : ℕ, g n x ∂μ) = ∑' n, ∫⁻ x, g n x ∂μ := by
- rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nNReal_eNNReal.AEMeasurable]
+ rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nnreal_ennreal.AEMeasurable]
_ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := (ENNReal.tsum_le_tsum hg)
_ = (∑' n, ∫⁻ x, eapprox_diff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
_ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
@@ -197,7 +197,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
rw [← lintegral_tsum]
· simp_rw [tsum_eapprox_diff f hf, le_refl]
· intro n
- exact (simple_func.measurable _).coe_nNReal_eNNReal.AEMeasurable
+ exact (simple_func.measurable _).coe_nnreal_ennreal.AEMeasurable
#align measure_theory.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge
@@ -213,7 +213,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
have : ε / 2 ≠ 0 := (ENNReal.half_pos ε0).ne'
rcases exists_pos_lintegral_lt_of_sigma_finite μ this with ⟨w, wpos, wmeas, wint⟩
let f' x := ((f x + w x : ℝ≥0) : ℝ≥0∞)
- rcases exists_le_lower_semicontinuous_lintegral_ge μ f' (fmeas.add wmeas).coe_nNReal_eNNReal
+ rcases exists_le_lower_semicontinuous_lintegral_ge μ f' (fmeas.add wmeas).coe_nnreal_ennreal
this with
⟨g, le_g, gcont, gint⟩
refine' ⟨g, fun x => _, gcont, _⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -417,8 +417,8 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
by
have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [ENNReal.bsupᵢ_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
- simp only [lt_supᵢ_iff] at this
+ erw [ENNReal.biSup_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
+ simp only [lt_iSup_iff] at this
rcases this with ⟨fs, fs_le_f, int_fs⟩
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
convert int_fs.le
mathlib commit https://github.com/leanprover-community/mathlib/commit/92c69b77c5a7dc0f7eeddb552508633305157caa
@@ -189,7 +189,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
·
calc
(∫⁻ x, ∑' n : ℕ, g n x ∂μ) = ∑' n, ∫⁻ x, g n x ∂μ := by
- rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nNReal_eNNReal.AeMeasurable]
+ rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nNReal_eNNReal.AEMeasurable]
_ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := (ENNReal.tsum_le_tsum hg)
_ = (∑' n, ∫⁻ x, eapprox_diff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
_ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
@@ -197,7 +197,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
rw [← lintegral_tsum]
· simp_rw [tsum_eapprox_diff f hf, le_refl]
· intro n
- exact (simple_func.measurable _).coe_nNReal_eNNReal.AeMeasurable
+ exact (simple_func.measurable _).coe_nNReal_eNNReal.AEMeasurable
#align measure_theory.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge
@@ -236,8 +236,8 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
there exists a lower semicontinuous function `g > f` with integral arbitrarily close to that of `f`.
Formulation in terms of `lintegral`.
Auxiliary lemma for Vitali-Carathéodory theorem `exists_lt_lower_semicontinuous_integral_lt`. -/
-theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable [SigmaFinite μ] (f : α → ℝ≥0)
- (fmeas : AeMeasurable f μ) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
+theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable [SigmaFinite μ] (f : α → ℝ≥0)
+ (fmeas : AEMeasurable f μ) {ε : ℝ≥0∞} (ε0 : ε ≠ 0) :
∃ g : α → ℝ≥0∞,
(∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
by
@@ -272,7 +272,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable [SigmaFinite
lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
_ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
-#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable
+#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aEMeasurable
variable {μ}
@@ -288,7 +288,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
(∀ᵐ x ∂μ, g x < ⊤) ∧
Integrable (fun x => (g x).toReal) μ ∧ (∫ x, (g x).toReal ∂μ) < (∫ x, f x ∂μ) + ε :=
by
- have fmeas : AeMeasurable f μ :=
+ have fmeas : AEMeasurable f μ :=
by
convert fint.ae_strongly_measurable.real_to_nnreal.ae_measurable
ext1 x
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -114,7 +114,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simp only [hc, Set.indicator_zero', Pi.zero_apply, simple_func.const_zero, imp_true_iff,
eq_self_iff_true, simple_func.coe_zero, Set.piecewise_eq_indicator,
simple_func.coe_piecewise, le_zero_iff]
- · simp only [lintegral_const, zero_mul, zero_le, ENNReal.coe_zero]
+ · simp only [lintegral_const, MulZeroClass.zero_mul, zero_le, ENNReal.coe_zero]
have : μ s < μ s + ε / c :=
by
have : (0 : ℝ≥0∞) < ε / c := ENNReal.div_pos_iff.2 ⟨ε0, ENNReal.coe_ne_top⟩
@@ -269,7 +269,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable [SigmaFinite
exact lintegral_congr_ae (fmeas.ae_eq_mk.fun_comp _)
· convert g1_int
simp only [smeas, μs, lintegral_const, Set.univ_inter, MeasurableSet.univ,
- lintegral_indicator, mul_zero, restrict_apply]
+ lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
_ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable
@@ -356,7 +356,7 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
eq_self_iff_true, simple_func.coe_zero, Set.piecewise_eq_indicator,
simple_func.coe_piecewise, le_zero_iff]
·
- simp only [hc, Set.indicator_zero', lintegral_const, zero_mul, Pi.zero_apply,
+ simp only [hc, Set.indicator_zero', lintegral_const, MulZeroClass.zero_mul, Pi.zero_apply,
simple_func.const_zero, zero_add, zero_le', simple_func.coe_zero,
Set.piecewise_eq_indicator, ENNReal.coe_zero, simple_func.coe_piecewise, zero_le]
have μs_lt_top : μ s < ∞ := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/ddec54a71a0dd025c05445d467f1a2b7d586a3ba
@@ -417,7 +417,7 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
by
have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [ENNReal.bsupr_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
+ erw [ENNReal.bsupᵢ_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
simp only [lt_supᵢ_iff] at this
rcases this with ⟨fs, fs_le_f, int_fs⟩
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -90,7 +90,7 @@ local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (u «expr ⊇ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (u «expr ⊇ » s) -/
/-- Given a simple function `f` with values in `ℝ≥0`, there exists a lower semicontinuous
function `g ≥ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -190,7 +190,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
calc
(∫⁻ x, ∑' n : ℕ, g n x ∂μ) = ∑' n, ∫⁻ x, g n x ∂μ := by
rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nNReal_eNNReal.AeMeasurable]
- _ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := ENNReal.tsum_le_tsum hg
+ _ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := (ENNReal.tsum_le_tsum hg)
_ = (∑' n, ∫⁻ x, eapprox_diff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
_ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
refine' add_le_add _ hδ.le
@@ -227,7 +227,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
(∫⁻ x : α, g x ∂μ) ≤ (∫⁻ x : α, f x + w x ∂μ) + ε / 2 := gint
_ = ((∫⁻ x : α, f x ∂μ) + ∫⁻ x : α, w x ∂μ) + ε / 2 := by
rw [lintegral_add_right _ wmeas.coe_nnreal_ennreal]
- _ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := add_le_add_right (add_le_add_left wint.le _) _
+ _ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := (add_le_add_right (add_le_add_left wint.le _) _)
_ = (∫⁻ x : α, f x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge
@@ -324,7 +324,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
simpa using int_f_ne_top
_ = ENNReal.toReal (∫⁻ a : α, f a ∂μ) + δ := by
rw [ENNReal.toReal_add int_f_ne_top ENNReal.coe_ne_top, ENNReal.coe_toReal]
- _ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := add_lt_add_left hδε _
+ _ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := (add_lt_add_left hδε _)
_ = (∫⁻ a : α, ENNReal.ofReal ↑(f a) ∂μ).toReal + ε := by simp
· apply Filter.eventually_of_forall fun x => _
@@ -338,7 +338,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
/-! ### Upper semicontinuous lower bound for nonnegative functions -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (F «expr ⊆ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (F «expr ⊆ » s) -/
/-- Given a simple function `f` with values in `ℝ≥0`, there exists an upper semicontinuous
function `g ≤ f` with integral arbitrarily close to that of `f`. Formulation in terms of
`lintegral`.
@@ -435,7 +435,7 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
refine' ⟨g, fun x => (g_le_fs x).trans (fs_le_f x), gcont, _⟩
calc
(∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 := int_fs
- _ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := add_le_add gint le_rfl
+ _ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := (add_le_add gint le_rfl)
_ = (∫⁻ x, g x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.exists_upperSemicontinuous_le_lintegral_le
@@ -527,7 +527,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
apply sub_lt_sub_right
convert gpint
simp only [EReal.toReal_coe_ennreal]
- _ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, fm x ∂μ) - δ) := sub_le_sub_left gmint _
+ _ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, fm x ∂μ) - δ) := (sub_le_sub_left gmint _)
_ = (∫ x : α, f x ∂μ) + 2 * δ :=
by
simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf, fp, fm]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -486,11 +486,11 @@ integrable function `g > f` which is lower semicontinuous, with integral arbitra
to that of `f`. This function has to be `ereal`-valued in general. -/
theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α → ℝ) (hf : Integrable f μ)
{ε : ℝ} (εpos : 0 < ε) :
- ∃ g : α → Ereal,
- (∀ x, (f x : Ereal) < g x) ∧
+ ∃ g : α → EReal,
+ (∀ x, (f x : EReal) < g x) ∧
LowerSemicontinuous g ∧
- Integrable (fun x => Ereal.toReal (g x)) μ ∧
- (∀ᵐ x ∂μ, g x < ⊤) ∧ (∫ x, Ereal.toReal (g x) ∂μ) < (∫ x, f x ∂μ) + ε :=
+ Integrable (fun x => EReal.toReal (g x)) μ ∧
+ (∀ᵐ x ∂μ, g x < ⊤) ∧ (∫ x, EReal.toReal (g x) ∂μ) < (∫ x, f x ∂μ) + ε :=
by
let δ : ℝ≥0 := ⟨ε / 2, (half_pos εpos).le⟩
have δpos : 0 < δ := half_pos εpos
@@ -502,13 +502,13 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
have int_fm : integrable (fun x => (fm x : ℝ)) μ := hf.neg.real_to_nnreal
rcases exists_upper_semicontinuous_le_integral_le fm int_fm δpos with
⟨gm, gm_le_fm, gmcont, gm_integrable, gmint⟩
- let g : α → Ereal := fun x => (gp x : Ereal) - gm x
- have ae_g : ∀ᵐ x ∂μ, (g x).toReal = (gp x : Ereal).toReal - (gm x : Ereal).toReal :=
+ let g : α → EReal := fun x => (gp x : EReal) - gm x
+ have ae_g : ∀ᵐ x ∂μ, (g x).toReal = (gp x : EReal).toReal - (gm x : EReal).toReal :=
by
filter_upwards [gp_lt_top]with _ hx
- rw [Ereal.toReal_sub] <;> simp [hx.ne]
+ rw [EReal.toReal_sub] <;> simp [hx.ne]
refine' ⟨g, _, _, _, _, _⟩
- show integrable (fun x => Ereal.toReal (g x)) μ
+ show integrable (fun x => EReal.toReal (g x)) μ
· rw [integrable_congr ae_g]
convert gp_integrable.sub gm_integrable
ext x
@@ -516,17 +516,17 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
show (∫ x : α, (g x).toReal ∂μ) < (∫ x : α, f x ∂μ) + ε
exact
calc
- (∫ x : α, (g x).toReal ∂μ) = ∫ x : α, Ereal.toReal (gp x) - Ereal.toReal (gm x) ∂μ :=
+ (∫ x : α, (g x).toReal ∂μ) = ∫ x : α, EReal.toReal (gp x) - EReal.toReal (gm x) ∂μ :=
integral_congr_ae ae_g
- _ = (∫ x : α, Ereal.toReal (gp x) ∂μ) - ∫ x : α, gm x ∂μ :=
+ _ = (∫ x : α, EReal.toReal (gp x) ∂μ) - ∫ x : α, gm x ∂μ :=
by
- simp only [Ereal.toReal_coe_eNNReal, ENNReal.coe_toReal, coe_coe]
+ simp only [EReal.toReal_coe_ennreal, ENNReal.coe_toReal, coe_coe]
exact integral_sub gp_integrable gm_integrable
_ < (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ∫ x : α, gm x ∂μ :=
by
apply sub_lt_sub_right
convert gpint
- simp only [Ereal.toReal_coe_eNNReal]
+ simp only [EReal.toReal_coe_ennreal]
_ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, fm x ∂μ) - δ) := sub_le_sub_left gmint _
_ = (∫ x : α, f x ∂μ) + 2 * δ :=
by
@@ -538,37 +538,37 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
show ∀ᵐ x : α ∂μ, g x < ⊤
· filter_upwards [gp_lt_top]with _ hx
- simp only [g, sub_eq_add_neg, coe_coe, Ne.def, (Ereal.add_lt_top _ _).Ne, lt_top_iff_ne_top,
- lt_top_iff_ne_top.1 hx, Ereal.coe_eNNReal_eq_top_iff, not_false_iff, Ereal.neg_eq_top_iff,
- Ereal.coe_eNNReal_ne_bot]
- show ∀ x, (f x : Ereal) < g x
+ simp only [g, sub_eq_add_neg, coe_coe, Ne.def, (EReal.add_lt_top _ _).Ne, lt_top_iff_ne_top,
+ lt_top_iff_ne_top.1 hx, EReal.coe_ennreal_eq_top_iff, not_false_iff, EReal.neg_eq_top_iff,
+ EReal.coe_ennreal_ne_bot]
+ show ∀ x, (f x : EReal) < g x
· intro x
- rw [Ereal.coe_real_ereal_eq_coe_toNNReal_sub_coe_toNNReal (f x)]
- refine' Ereal.sub_lt_sub_of_lt_of_le _ _ _ _
- · simp only [Ereal.coe_eNNReal_lt_coe_eNNReal_iff, coe_coe]
+ rw [EReal.coe_real_ereal_eq_coe_toNNReal_sub_coe_toNNReal (f x)]
+ refine' EReal.sub_lt_sub_of_lt_of_le _ _ _ _
+ · simp only [EReal.coe_ennreal_lt_coe_ennreal_iff, coe_coe]
exact fp_lt_gp x
- · simp only [ENNReal.coe_le_coe, Ereal.coe_eNNReal_le_coe_eNNReal_iff, coe_coe]
+ · simp only [ENNReal.coe_le_coe, EReal.coe_ennreal_le_coe_ennreal_iff, coe_coe]
exact gm_le_fm x
- · simp only [Ereal.coe_eNNReal_ne_bot, Ne.def, not_false_iff, coe_coe]
- · simp only [Ereal.coe_nNReal_ne_top, Ne.def, not_false_iff, coe_coe]
+ · simp only [EReal.coe_ennreal_ne_bot, Ne.def, not_false_iff, coe_coe]
+ · simp only [EReal.coe_nnreal_ne_top, Ne.def, not_false_iff, coe_coe]
show LowerSemicontinuous g
· apply LowerSemicontinuous.add'
·
exact
continuous_coe_ennreal_ereal.comp_lower_semicontinuous gpcont fun x y hxy =>
- Ereal.coe_eNNReal_le_coe_eNNReal_iff.2 hxy
+ EReal.coe_ennreal_le_coe_ennreal_iff.2 hxy
· apply
ereal.continuous_neg.comp_upper_semicontinuous_antitone _ fun x y hxy =>
- Ereal.neg_le_neg_iff.2 hxy
+ EReal.neg_le_neg_iff.2 hxy
dsimp
apply
continuous_coe_ennreal_ereal.comp_upper_semicontinuous _ fun x y hxy =>
- Ereal.coe_eNNReal_le_coe_eNNReal_iff.2 hxy
+ EReal.coe_ennreal_le_coe_ennreal_iff.2 hxy
exact
ennreal.continuous_coe.comp_upper_semicontinuous gmcont fun x y hxy =>
ENNReal.coe_le_coe.2 hxy
· intro x
- exact Ereal.continuousAt_add (by simp) (by simp)
+ exact EReal.continuousAt_add (by simp) (by simp)
#align measure_theory.exists_lt_lower_semicontinuous_integral_lt MeasureTheory.exists_lt_lowerSemicontinuous_integral_lt
/-- **Vitali-Carathéodory Theorem**: given an integrable real function `f`, there exists an
@@ -576,20 +576,20 @@ integrable function `g < f` which is upper semicontinuous, with integral arbitra
of `f`. This function has to be `ereal`-valued in general. -/
theorem exists_upperSemicontinuous_lt_integral_gt [SigmaFinite μ] (f : α → ℝ) (hf : Integrable f μ)
{ε : ℝ} (εpos : 0 < ε) :
- ∃ g : α → Ereal,
- (∀ x, (g x : Ereal) < f x) ∧
+ ∃ g : α → EReal,
+ (∀ x, (g x : EReal) < f x) ∧
UpperSemicontinuous g ∧
- Integrable (fun x => Ereal.toReal (g x)) μ ∧
- (∀ᵐ x ∂μ, ⊥ < g x) ∧ (∫ x, f x ∂μ) < (∫ x, Ereal.toReal (g x) ∂μ) + ε :=
+ Integrable (fun x => EReal.toReal (g x)) μ ∧
+ (∀ᵐ x ∂μ, ⊥ < g x) ∧ (∫ x, f x ∂μ) < (∫ x, EReal.toReal (g x) ∂μ) + ε :=
by
rcases exists_lt_lower_semicontinuous_integral_lt (fun x => -f x) hf.neg εpos with
⟨g, g_lt_f, gcont, g_integrable, g_lt_top, gint⟩
refine' ⟨fun x => -g x, _, _, _, _, _⟩
- · exact fun x => Ereal.neg_lt_iff_neg_lt.1 (by simpa only [Ereal.coe_neg] using g_lt_f x)
+ · exact fun x => EReal.neg_lt_iff_neg_lt.1 (by simpa only [EReal.coe_neg] using g_lt_f x)
·
exact
ereal.continuous_neg.comp_lower_semicontinuous_antitone gcont fun x y hxy =>
- Ereal.neg_le_neg_iff.2 hxy
+ EReal.neg_le_neg_iff.2 hxy
· convert g_integrable.neg
ext x
simp
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.integral.vitali_caratheodory
-! leanprover-community/mathlib commit 83871f6cff322a1eafaa382ef70e9515fe240abd
+! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -104,7 +104,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
by_cases h : (∫⁻ x, f x ∂μ) = ⊤
· refine'
⟨fun x => c, fun x => _, lowerSemicontinuous_const, by
- simp only [ENNReal.top_add, le_top, h]⟩
+ simp only [_root_.top_add, le_top, h]⟩
simp only [simple_func.coe_const, simple_func.const_zero, simple_func.coe_zero,
Set.piecewise_eq_indicator, simple_func.coe_piecewise]
exact Set.indicator_le_self _ _ _
@@ -138,7 +138,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simple_func.const_zero, lintegral_indicator, simple_func.coe_zero,
Set.piecewise_eq_indicator, simple_func.coe_piecewise, restrict_apply]
calc
- (c : ℝ≥0∞) * μ u ≤ c * (μ s + ε / c) := ENNReal.mul_le_mul le_rfl μu.le
+ (c : ℝ≥0∞) * μ u ≤ c * (μ s + ε / c) := mul_le_mul_left' μu.le _
_ = c * μ s + ε := by
simp_rw [mul_add]
rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
@@ -381,7 +381,7 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
simple_func.const_zero, lintegral_indicator, simple_func.coe_zero,
Set.piecewise_eq_indicator, simple_func.coe_piecewise, restrict_apply]
calc
- (c : ℝ≥0∞) * μ s ≤ c * (μ F + ε / c) := ENNReal.mul_le_mul le_rfl μF.le
+ (c : ℝ≥0∞) * μ s ≤ c * (μ F + ε / c) := mul_le_mul_left' μF.le _
_ = c * μ F + ε := by
simp_rw [mul_add]
rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -75,7 +75,7 @@ See result `measure_theory.Lp.continuous_map_dense`, in the file
-/
-open Ennreal NNReal
+open ENNReal NNReal
open MeasureTheory MeasureTheory.Measure
@@ -104,7 +104,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
by_cases h : (∫⁻ x, f x ∂μ) = ⊤
· refine'
⟨fun x => c, fun x => _, lowerSemicontinuous_const, by
- simp only [Ennreal.top_add, le_top, h]⟩
+ simp only [ENNReal.top_add, le_top, h]⟩
simp only [simple_func.coe_const, simple_func.const_zero, simple_func.coe_zero,
Set.piecewise_eq_indicator, simple_func.coe_piecewise]
exact Set.indicator_le_self _ _ _
@@ -114,15 +114,15 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simp only [hc, Set.indicator_zero', Pi.zero_apply, simple_func.const_zero, imp_true_iff,
eq_self_iff_true, simple_func.coe_zero, Set.piecewise_eq_indicator,
simple_func.coe_piecewise, le_zero_iff]
- · simp only [lintegral_const, zero_mul, zero_le, Ennreal.coe_zero]
+ · simp only [lintegral_const, zero_mul, zero_le, ENNReal.coe_zero]
have : μ s < μ s + ε / c :=
by
- have : (0 : ℝ≥0∞) < ε / c := Ennreal.div_pos_iff.2 ⟨ε0, Ennreal.coe_ne_top⟩
- simpa using Ennreal.add_lt_add_left _ this
+ have : (0 : ℝ≥0∞) < ε / c := ENNReal.div_pos_iff.2 ⟨ε0, ENNReal.coe_ne_top⟩
+ simpa using ENNReal.add_lt_add_left _ this
simpa only [hs, hc, lt_top_iff_ne_top, true_and_iff, simple_func.coe_const,
- Function.const_apply, lintegral_const, Ennreal.coe_indicator, Set.univ_inter,
- Ennreal.coe_ne_top, MeasurableSet.univ, WithTop.mul_eq_top_iff, simple_func.const_zero,
- or_false_iff, lintegral_indicator, Ennreal.coe_eq_zero, Ne.def, not_false_iff,
+ Function.const_apply, lintegral_const, ENNReal.coe_indicator, Set.univ_inter,
+ ENNReal.coe_ne_top, MeasurableSet.univ, WithTop.mul_eq_top_iff, simple_func.const_zero,
+ or_false_iff, lintegral_indicator, ENNReal.coe_eq_zero, Ne.def, not_false_iff,
simple_func.coe_zero, Set.piecewise_eq_indicator, simple_func.coe_piecewise, false_and_iff,
restrict_apply] using h
obtain ⟨u, su, u_open, μu⟩ : ∃ (u : _)(_ : u ⊇ s), IsOpen u ∧ μ u < μ s + ε / c :=
@@ -134,26 +134,26 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
exact Set.indicator_le_indicator_of_subset su (fun x => zero_le _) _
· suffices (c : ℝ≥0∞) * μ u ≤ c * μ s + ε by
simpa only [hs, u_open.measurable_set, simple_func.coe_const, Function.const_apply,
- lintegral_const, Ennreal.coe_indicator, Set.univ_inter, MeasurableSet.univ,
+ lintegral_const, ENNReal.coe_indicator, Set.univ_inter, MeasurableSet.univ,
simple_func.const_zero, lintegral_indicator, simple_func.coe_zero,
Set.piecewise_eq_indicator, simple_func.coe_piecewise, restrict_apply]
calc
- (c : ℝ≥0∞) * μ u ≤ c * (μ s + ε / c) := Ennreal.mul_le_mul le_rfl μu.le
+ (c : ℝ≥0∞) * μ u ≤ c * (μ s + ε / c) := ENNReal.mul_le_mul le_rfl μu.le
_ = c * μ s + ε := by
simp_rw [mul_add]
- rw [Ennreal.mul_div_cancel' _ Ennreal.coe_ne_top]
+ rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
simpa using hc
- · rcases h₁ (Ennreal.half_pos ε0).ne' with ⟨g₁, f₁_le_g₁, g₁cont, g₁int⟩
- rcases h₂ (Ennreal.half_pos ε0).ne' with ⟨g₂, f₂_le_g₂, g₂cont, g₂int⟩
+ · rcases h₁ (ENNReal.half_pos ε0).ne' with ⟨g₁, f₁_le_g₁, g₁cont, g₁int⟩
+ rcases h₂ (ENNReal.half_pos ε0).ne' with ⟨g₂, f₂_le_g₂, g₂cont, g₂int⟩
refine'
⟨fun x => g₁ x + g₂ x, fun x => add_le_add (f₁_le_g₁ x) (f₂_le_g₂ x), g₁cont.add g₂cont, _⟩
- simp only [simple_func.coe_add, Ennreal.coe_add, Pi.add_apply]
+ simp only [simple_func.coe_add, ENNReal.coe_add, Pi.add_apply]
rw [lintegral_add_left f₁.measurable.coe_nnreal_ennreal,
lintegral_add_left g₁cont.measurable.coe_nnreal_ennreal]
convert add_le_add g₁int g₂int using 1
simp only
- conv_lhs => rw [← Ennreal.add_halves ε]
+ conv_lhs => rw [← ENNReal.add_halves ε]
abel
#align measure_theory.simple_func.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge
@@ -168,7 +168,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
∃ g : α → ℝ≥0∞,
(∀ x, f x ≤ g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
by
- rcases Ennreal.exists_pos_sum_of_countable' εpos ℕ with ⟨δ, δpos, hδ⟩
+ rcases ENNReal.exists_pos_sum_of_countable' εpos ℕ with ⟨δ, δpos, hδ⟩
have :
∀ n,
∃ g : α → ℝ≥0,
@@ -181,23 +181,23 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
choose g f_le_g gcont hg using this
refine' ⟨fun x => ∑' n, g n x, fun x => _, _, _⟩
· rw [← tsum_eapprox_diff f hf]
- exact Ennreal.tsum_le_tsum fun n => Ennreal.coe_le_coe.2 (f_le_g n x)
+ exact ENNReal.tsum_le_tsum fun n => ENNReal.coe_le_coe.2 (f_le_g n x)
· apply lowerSemicontinuous_tsum fun n => _
exact
ennreal.continuous_coe.comp_lower_semicontinuous (gcont n) fun x y hxy =>
- Ennreal.coe_le_coe.2 hxy
+ ENNReal.coe_le_coe.2 hxy
·
calc
(∫⁻ x, ∑' n : ℕ, g n x ∂μ) = ∑' n, ∫⁻ x, g n x ∂μ := by
- rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nNReal_ennreal.AeMeasurable]
- _ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := Ennreal.tsum_le_tsum hg
- _ = (∑' n, ∫⁻ x, eapprox_diff f n x ∂μ) + ∑' n, δ n := Ennreal.tsum_add
+ rw [lintegral_tsum fun n => (gcont n).Measurable.coe_nNReal_eNNReal.AeMeasurable]
+ _ ≤ ∑' n, (∫⁻ x, eapprox_diff f n x ∂μ) + δ n := ENNReal.tsum_le_tsum hg
+ _ = (∑' n, ∫⁻ x, eapprox_diff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
_ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
refine' add_le_add _ hδ.le
rw [← lintegral_tsum]
· simp_rw [tsum_eapprox_diff f hf, le_refl]
· intro n
- exact (simple_func.measurable _).coe_nNReal_ennreal.AeMeasurable
+ exact (simple_func.measurable _).coe_nNReal_eNNReal.AeMeasurable
#align measure_theory.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.exists_le_lowerSemicontinuous_lintegral_ge
@@ -210,16 +210,16 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
∃ g : α → ℝ≥0∞,
(∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
by
- have : ε / 2 ≠ 0 := (Ennreal.half_pos ε0).ne'
+ have : ε / 2 ≠ 0 := (ENNReal.half_pos ε0).ne'
rcases exists_pos_lintegral_lt_of_sigma_finite μ this with ⟨w, wpos, wmeas, wint⟩
let f' x := ((f x + w x : ℝ≥0) : ℝ≥0∞)
- rcases exists_le_lower_semicontinuous_lintegral_ge μ f' (fmeas.add wmeas).coe_nNReal_ennreal
+ rcases exists_le_lower_semicontinuous_lintegral_ge μ f' (fmeas.add wmeas).coe_nNReal_eNNReal
this with
⟨g, le_g, gcont, gint⟩
refine' ⟨g, fun x => _, gcont, _⟩
·
calc
- (f x : ℝ≥0∞) < f' x := by simpa [← Ennreal.coe_lt_coe] using add_lt_add_left (wpos x) (f x)
+ (f x : ℝ≥0∞) < f' x := by simpa [← ENNReal.coe_lt_coe] using add_lt_add_left (wpos x) (f x)
_ ≤ g x := le_g x
·
@@ -228,7 +228,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
_ = ((∫⁻ x : α, f x ∂μ) + ∫⁻ x : α, w x ∂μ) + ε / 2 := by
rw [lintegral_add_right _ wmeas.coe_nnreal_ennreal]
_ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := add_le_add_right (add_le_add_left wint.le _) _
- _ = (∫⁻ x : α, f x ∂μ) + ε := by rw [add_assoc, Ennreal.add_halves]
+ _ = (∫⁻ x : α, f x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge
@@ -241,7 +241,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable [SigmaFinite
∃ g : α → ℝ≥0∞,
(∀ x, (f x : ℝ≥0∞) < g x) ∧ LowerSemicontinuous g ∧ (∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε :=
by
- have : ε / 2 ≠ 0 := (Ennreal.half_pos ε0).ne'
+ have : ε / 2 ≠ 0 := (ENNReal.half_pos ε0).ne'
rcases exists_lt_lower_semicontinuous_lintegral_ge μ (fmeas.mk f) fmeas.measurable_mk this with
⟨g0, f_lt_g0, g0_cont, g0_int⟩
rcases exists_measurable_superset_of_null fmeas.ae_eq_mk with ⟨s, hs, smeas, μs⟩
@@ -270,7 +270,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable [SigmaFinite
· convert g1_int
simp only [smeas, μs, lintegral_const, Set.univ_inter, MeasurableSet.univ,
lintegral_indicator, mul_zero, restrict_apply]
- _ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, Ennreal.add_halves, zero_add]
+ _ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aeMeasurable
@@ -299,33 +299,33 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nNReal [SigmaFinite μ] (f :
have int_f_ne_top : (∫⁻ a : α, f a ∂μ) ≠ ∞ :=
(has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral).Ne
rcases exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable μ f fmeas
- (Ennreal.coe_ne_zero.2 δpos.ne') with
+ (ENNReal.coe_ne_zero.2 δpos.ne') with
⟨g, f_lt_g, gcont, gint⟩
have gint_ne : (∫⁻ x : α, g x ∂μ) ≠ ∞ := ne_top_of_le_ne_top (by simpa) gint
have g_lt_top : ∀ᵐ x : α ∂μ, g x < ∞ := ae_lt_top gcont.measurable gint_ne
- have Ig : (∫⁻ a : α, Ennreal.ofReal (g a).toReal ∂μ) = ∫⁻ a : α, g a ∂μ :=
+ have Ig : (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) = ∫⁻ a : α, g a ∂μ :=
by
apply lintegral_congr_ae
filter_upwards [g_lt_top]with _ hx
- simp only [hx.ne, Ennreal.ofReal_toReal, Ne.def, not_false_iff]
+ simp only [hx.ne, ENNReal.ofReal_toReal, Ne.def, not_false_iff]
refine' ⟨g, f_lt_g, gcont, g_lt_top, _, _⟩
· refine' ⟨gcont.measurable.ennreal_to_real.ae_measurable.ae_strongly_measurable, _⟩
- simp only [has_finite_integral_iff_norm, Real.norm_eq_abs, abs_of_nonneg Ennreal.toReal_nonneg]
+ simp only [has_finite_integral_iff_norm, Real.norm_eq_abs, abs_of_nonneg ENNReal.toReal_nonneg]
convert gint_ne.lt_top using 1
· rw [integral_eq_lintegral_of_nonneg_ae, integral_eq_lintegral_of_nonneg_ae]
·
calc
- Ennreal.toReal (∫⁻ a : α, Ennreal.ofReal (g a).toReal ∂μ) =
- Ennreal.toReal (∫⁻ a : α, g a ∂μ) :=
+ ENNReal.toReal (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) =
+ ENNReal.toReal (∫⁻ a : α, g a ∂μ) :=
by congr 1
- _ ≤ Ennreal.toReal ((∫⁻ a : α, f a ∂μ) + δ) :=
+ _ ≤ ENNReal.toReal ((∫⁻ a : α, f a ∂μ) + δ) :=
by
- apply Ennreal.toReal_mono _ gint
+ apply ENNReal.toReal_mono _ gint
simpa using int_f_ne_top
- _ = Ennreal.toReal (∫⁻ a : α, f a ∂μ) + δ := by
- rw [Ennreal.toReal_add int_f_ne_top Ennreal.coe_ne_top, Ennreal.coe_toReal]
- _ < Ennreal.toReal (∫⁻ a : α, f a ∂μ) + ε := add_lt_add_left hδε _
- _ = (∫⁻ a : α, Ennreal.ofReal ↑(f a) ∂μ).toReal + ε := by simp
+ _ = ENNReal.toReal (∫⁻ a : α, f a ∂μ) + δ := by
+ rw [ENNReal.toReal_add int_f_ne_top ENNReal.coe_ne_top, ENNReal.coe_toReal]
+ _ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := add_lt_add_left hδε _
+ _ = (∫⁻ a : α, ENNReal.ofReal ↑(f a) ∂μ).toReal + ε := by simp
· apply Filter.eventually_of_forall fun x => _
simp
@@ -358,15 +358,15 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
·
simp only [hc, Set.indicator_zero', lintegral_const, zero_mul, Pi.zero_apply,
simple_func.const_zero, zero_add, zero_le', simple_func.coe_zero,
- Set.piecewise_eq_indicator, Ennreal.coe_zero, simple_func.coe_piecewise, zero_le]
+ Set.piecewise_eq_indicator, ENNReal.coe_zero, simple_func.coe_piecewise, zero_le]
have μs_lt_top : μ s < ∞ := by
simpa only [hs, hc, lt_top_iff_ne_top, true_and_iff, simple_func.coe_const, or_false_iff,
- lintegral_const, Ennreal.coe_indicator, Set.univ_inter, Ennreal.coe_ne_top,
+ lintegral_const, ENNReal.coe_indicator, Set.univ_inter, ENNReal.coe_ne_top,
restrict_apply MeasurableSet.univ, WithTop.mul_eq_top_iff, simple_func.const_zero,
- Function.const_apply, lintegral_indicator, Ennreal.coe_eq_zero, Ne.def, not_false_iff,
+ Function.const_apply, lintegral_indicator, ENNReal.coe_eq_zero, Ne.def, not_false_iff,
simple_func.coe_zero, Set.piecewise_eq_indicator, simple_func.coe_piecewise,
false_and_iff] using int_f
- have : (0 : ℝ≥0∞) < ε / c := Ennreal.div_pos_iff.2 ⟨ε0, Ennreal.coe_ne_top⟩
+ have : (0 : ℝ≥0∞) < ε / c := ENNReal.div_pos_iff.2 ⟨ε0, ENNReal.coe_ne_top⟩
obtain ⟨F, Fs, F_closed, μF⟩ : ∃ (F : _)(_ : F ⊆ s), IsClosed F ∧ μ s < μ F + ε / c :=
hs.exists_is_closed_lt_add μs_lt_top.ne this.ne'
refine'
@@ -377,30 +377,30 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
exact Set.indicator_le_indicator_of_subset Fs (fun x => zero_le _) _
· suffices (c : ℝ≥0∞) * μ s ≤ c * μ F + ε by
simpa only [hs, F_closed.measurable_set, simple_func.coe_const, Function.const_apply,
- lintegral_const, Ennreal.coe_indicator, Set.univ_inter, MeasurableSet.univ,
+ lintegral_const, ENNReal.coe_indicator, Set.univ_inter, MeasurableSet.univ,
simple_func.const_zero, lintegral_indicator, simple_func.coe_zero,
Set.piecewise_eq_indicator, simple_func.coe_piecewise, restrict_apply]
calc
- (c : ℝ≥0∞) * μ s ≤ c * (μ F + ε / c) := Ennreal.mul_le_mul le_rfl μF.le
+ (c : ℝ≥0∞) * μ s ≤ c * (μ F + ε / c) := ENNReal.mul_le_mul le_rfl μF.le
_ = c * μ F + ε := by
simp_rw [mul_add]
- rw [Ennreal.mul_div_cancel' _ Ennreal.coe_ne_top]
+ rw [ENNReal.mul_div_cancel' _ ENNReal.coe_ne_top]
simpa using hc
· have A : ((∫⁻ x : α, f₁ x ∂μ) + ∫⁻ x : α, f₂ x ∂μ) ≠ ⊤ := by
rwa [← lintegral_add_left f₁.measurable.coe_nnreal_ennreal]
- rcases h₁ (Ennreal.add_ne_top.1 A).1 (Ennreal.half_pos ε0).ne' with
+ rcases h₁ (ENNReal.add_ne_top.1 A).1 (ENNReal.half_pos ε0).ne' with
⟨g₁, f₁_le_g₁, g₁cont, g₁int⟩
- rcases h₂ (Ennreal.add_ne_top.1 A).2 (Ennreal.half_pos ε0).ne' with
+ rcases h₂ (ENNReal.add_ne_top.1 A).2 (ENNReal.half_pos ε0).ne' with
⟨g₂, f₂_le_g₂, g₂cont, g₂int⟩
refine'
⟨fun x => g₁ x + g₂ x, fun x => add_le_add (f₁_le_g₁ x) (f₂_le_g₂ x), g₁cont.add g₂cont, _⟩
- simp only [simple_func.coe_add, Ennreal.coe_add, Pi.add_apply]
+ simp only [simple_func.coe_add, ENNReal.coe_add, Pi.add_apply]
rw [lintegral_add_left f₁.measurable.coe_nnreal_ennreal,
lintegral_add_left g₁cont.measurable.coe_nnreal_ennreal]
convert add_le_add g₁int g₂int using 1
simp only
- conv_lhs => rw [← Ennreal.add_halves ε]
+ conv_lhs => rw [← ENNReal.add_halves ε]
abel
#align measure_theory.simple_func.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le
@@ -415,28 +415,28 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
obtain ⟨fs, fs_le_f, int_fs⟩ :
∃ fs : α →ₛ ℝ≥0, (∀ x, fs x ≤ f x) ∧ (∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 :=
by
- have := Ennreal.lt_add_right int_f (Ennreal.half_pos ε0).ne'
+ have := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at this => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [Ennreal.bsupr_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
+ erw [ENNReal.bsupr_add] at this <;> [skip, exact ⟨0, fun x => by simp⟩]
simp only [lt_supᵢ_iff] at this
rcases this with ⟨fs, fs_le_f, int_fs⟩
- refine' ⟨fs, fun x => by simpa only [Ennreal.coe_le_coe] using fs_le_f x, _⟩
+ refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
convert int_fs.le
rw [← simple_func.lintegral_eq_lintegral]
rfl
have int_fs_lt_top : (∫⁻ x, fs x ∂μ) ≠ ∞ :=
by
apply ne_top_of_le_ne_top int_f (lintegral_mono fun x => _)
- simpa only [Ennreal.coe_le_coe] using fs_le_f x
+ simpa only [ENNReal.coe_le_coe] using fs_le_f x
obtain ⟨g, g_le_fs, gcont, gint⟩ :
∃ g : α → ℝ≥0,
(∀ x, g x ≤ fs x) ∧ UpperSemicontinuous g ∧ (∫⁻ x, fs x ∂μ) ≤ (∫⁻ x, g x ∂μ) + ε / 2 :=
- fs.exists_upper_semicontinuous_le_lintegral_le int_fs_lt_top (Ennreal.half_pos ε0).ne'
+ fs.exists_upper_semicontinuous_le_lintegral_le int_fs_lt_top (ENNReal.half_pos ε0).ne'
refine' ⟨g, fun x => (g_le_fs x).trans (fs_le_f x), gcont, _⟩
calc
(∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 := int_fs
_ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := add_le_add gint le_rfl
- _ = (∫⁻ x, g x ∂μ) + ε := by rw [add_assoc, Ennreal.add_halves]
+ _ = (∫⁻ x, g x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.exists_upperSemicontinuous_le_lintegral_le
@@ -452,7 +452,7 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
Integrable (fun x => (g x : ℝ)) μ ∧ (∫ x, (f x : ℝ) ∂μ) - ε ≤ ∫ x, g x ∂μ :=
by
lift ε to ℝ≥0 using εpos.le
- rw [NNReal.coe_pos, ← Ennreal.coe_pos] at εpos
+ rw [NNReal.coe_pos, ← ENNReal.coe_pos] at εpos
have If : (∫⁻ x, f x ∂μ) < ∞ := has_finite_integral_iff_of_nnreal.1 fint.has_finite_integral
rcases exists_upper_semicontinuous_le_lintegral_le f If.ne εpos.ne' with ⟨g, gf, gcont, gint⟩
have Ig : (∫⁻ x, g x ∂μ) < ∞ :=
@@ -465,9 +465,9 @@ theorem exists_upperSemicontinuous_le_integral_le (f : α → ℝ≥0)
exact Filter.eventually_of_forall fun x => by simp [gf x]
· rw [integral_eq_lintegral_of_nonneg_ae, integral_eq_lintegral_of_nonneg_ae]
· rw [sub_le_iff_le_add]
- convert Ennreal.toReal_mono _ gint
+ convert ENNReal.toReal_mono _ gint
· simp
- · rw [Ennreal.toReal_add Ig.ne Ennreal.coe_ne_top]
+ · rw [ENNReal.toReal_add Ig.ne ENNReal.coe_ne_top]
simp
· simpa using Ig.ne
· apply Filter.eventually_of_forall
@@ -520,13 +520,13 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
integral_congr_ae ae_g
_ = (∫ x : α, Ereal.toReal (gp x) ∂μ) - ∫ x : α, gm x ∂μ :=
by
- simp only [Ereal.toReal_coe_ennreal, Ennreal.coe_toReal, coe_coe]
+ simp only [Ereal.toReal_coe_eNNReal, ENNReal.coe_toReal, coe_coe]
exact integral_sub gp_integrable gm_integrable
_ < (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ∫ x : α, gm x ∂μ :=
by
apply sub_lt_sub_right
convert gpint
- simp only [Ereal.toReal_coe_ennreal]
+ simp only [Ereal.toReal_coe_eNNReal]
_ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, fm x ∂μ) - δ) := sub_le_sub_left gmint _
_ = (∫ x : α, f x ∂μ) + 2 * δ :=
by
@@ -539,34 +539,34 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
show ∀ᵐ x : α ∂μ, g x < ⊤
· filter_upwards [gp_lt_top]with _ hx
simp only [g, sub_eq_add_neg, coe_coe, Ne.def, (Ereal.add_lt_top _ _).Ne, lt_top_iff_ne_top,
- lt_top_iff_ne_top.1 hx, Ereal.coe_ennreal_eq_top_iff, not_false_iff, Ereal.neg_eq_top_iff,
- Ereal.coe_ennreal_ne_bot]
+ lt_top_iff_ne_top.1 hx, Ereal.coe_eNNReal_eq_top_iff, not_false_iff, Ereal.neg_eq_top_iff,
+ Ereal.coe_eNNReal_ne_bot]
show ∀ x, (f x : Ereal) < g x
· intro x
rw [Ereal.coe_real_ereal_eq_coe_toNNReal_sub_coe_toNNReal (f x)]
refine' Ereal.sub_lt_sub_of_lt_of_le _ _ _ _
- · simp only [Ereal.coe_ennreal_lt_coe_ennreal_iff, coe_coe]
+ · simp only [Ereal.coe_eNNReal_lt_coe_eNNReal_iff, coe_coe]
exact fp_lt_gp x
- · simp only [Ennreal.coe_le_coe, Ereal.coe_ennreal_le_coe_ennreal_iff, coe_coe]
+ · simp only [ENNReal.coe_le_coe, Ereal.coe_eNNReal_le_coe_eNNReal_iff, coe_coe]
exact gm_le_fm x
- · simp only [Ereal.coe_ennreal_ne_bot, Ne.def, not_false_iff, coe_coe]
+ · simp only [Ereal.coe_eNNReal_ne_bot, Ne.def, not_false_iff, coe_coe]
· simp only [Ereal.coe_nNReal_ne_top, Ne.def, not_false_iff, coe_coe]
show LowerSemicontinuous g
· apply LowerSemicontinuous.add'
·
exact
continuous_coe_ennreal_ereal.comp_lower_semicontinuous gpcont fun x y hxy =>
- Ereal.coe_ennreal_le_coe_ennreal_iff.2 hxy
+ Ereal.coe_eNNReal_le_coe_eNNReal_iff.2 hxy
· apply
ereal.continuous_neg.comp_upper_semicontinuous_antitone _ fun x y hxy =>
Ereal.neg_le_neg_iff.2 hxy
dsimp
apply
continuous_coe_ennreal_ereal.comp_upper_semicontinuous _ fun x y hxy =>
- Ereal.coe_ennreal_le_coe_ennreal_iff.2 hxy
+ Ereal.coe_eNNReal_le_coe_eNNReal_iff.2 hxy
exact
ennreal.continuous_coe.comp_upper_semicontinuous gmcont fun x y hxy =>
- Ennreal.coe_le_coe.2 hxy
+ ENNReal.coe_le_coe.2 hxy
· intro x
exact Ereal.continuousAt_add (by simp) (by simp)
#align measure_theory.exists_lt_lower_semicontinuous_integral_lt MeasureTheory.exists_lt_lowerSemicontinuous_integral_lt
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -186,7 +186,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
· calc
∫⁻ x, ∑' n : ℕ, g n x ∂μ = ∑' n, ∫⁻ x, g n x ∂μ := by
rw [lintegral_tsum fun n => (gcont n).measurable.coe_nnreal_ennreal.aemeasurable]
- _ ≤ ∑' n, ((∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + δ n) := (ENNReal.tsum_le_tsum hg)
+ _ ≤ ∑' n, ((∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + δ n) := ENNReal.tsum_le_tsum hg
_ = ∑' n, ∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ + ∑' n, δ n := ENNReal.tsum_add
_ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
refine' add_le_add _ hδ.le
@@ -219,7 +219,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge [SigmaFinite μ] (f : α →
(∫⁻ x : α, g x ∂μ) ≤ (∫⁻ x : α, f x + w x ∂μ) + ε / 2 := gint
_ = ((∫⁻ x : α, f x ∂μ) + ∫⁻ x : α, w x ∂μ) + ε / 2 := by
rw [lintegral_add_right _ wmeas.coe_nnreal_ennreal]
- _ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := (add_le_add_right (add_le_add_left wint.le _) _)
+ _ ≤ (∫⁻ x : α, f x ∂μ) + ε / 2 + ε / 2 := add_le_add_right (add_le_add_left wint.le _) _
_ = (∫⁻ x : α, f x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge
@@ -304,7 +304,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
simpa using int_f_ne_top
_ = ENNReal.toReal (∫⁻ a : α, f a ∂μ) + δ := by
rw [ENNReal.toReal_add int_f_ne_top ENNReal.coe_ne_top, ENNReal.coe_toReal]
- _ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := (add_lt_add_left hδε _)
+ _ < ENNReal.toReal (∫⁻ a : α, f a ∂μ) + ε := add_lt_add_left hδε _
_ = (∫⁻ a : α, ENNReal.ofReal ↑(f a) ∂μ).toReal + ε := by simp
· apply Filter.eventually_of_forall fun x => _; simp
@@ -410,7 +410,7 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
refine' ⟨g, fun x => (g_le_fs x).trans (fs_le_f x), gcont, _⟩
calc
(∫⁻ x, f x ∂μ) ≤ (∫⁻ x, fs x ∂μ) + ε / 2 := int_fs
- _ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := (add_le_add gint le_rfl)
+ _ ≤ (∫⁻ x, g x ∂μ) + ε / 2 + ε / 2 := add_le_add gint le_rfl
_ = (∫⁻ x, g x ∂μ) + ε := by rw [add_assoc, ENNReal.add_halves]
#align measure_theory.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.exists_upperSemicontinuous_le_lintegral_le
@@ -494,7 +494,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
apply sub_lt_sub_right
convert gpint
simp only [EReal.toReal_coe_ennreal]
- _ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, ↑(fm x) ∂μ) - δ) := (sub_le_sub_left gmint _)
+ _ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, ↑(fm x) ∂μ) - δ) := sub_le_sub_left gmint _
_ = (∫ x : α, f x ∂μ) + 2 * δ := by
simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf]; ring
_ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [δ, mul_comm]
@@ -118,7 +118,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simpa [f, hs, hc, lt_top_iff_ne_top, true_and_iff, SimpleFunc.coe_const,
Function.const_apply, lintegral_const, ENNReal.coe_indicator, Set.univ_inter,
ENNReal.coe_ne_top, MeasurableSet.univ, ENNReal.mul_eq_top, SimpleFunc.const_zero,
- or_false_iff, lintegral_indicator, ENNReal.coe_eq_zero, Ne.def, not_false_iff,
+ or_false_iff, lintegral_indicator, ENNReal.coe_eq_zero, Ne, not_false_iff,
SimpleFunc.coe_zero, Set.piecewise_eq_indicator, SimpleFunc.coe_piecewise, false_and_iff,
restrict_apply] using h
obtain ⟨u, su, u_open, μu⟩ : ∃ (u : _), u ⊇ s ∧ IsOpen u ∧ μ u < μ s + ε / c :=
@@ -289,7 +289,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
have Ig : (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) = ∫⁻ a : α, g a ∂μ := by
apply lintegral_congr_ae
filter_upwards [g_lt_top] with _ hx
- simp only [hx.ne, ENNReal.ofReal_toReal, Ne.def, not_false_iff]
+ simp only [hx.ne, ENNReal.ofReal_toReal, Ne, not_false_iff]
refine' ⟨g, f_lt_g, gcont, g_lt_top, _, _⟩
· refine' ⟨gcont.measurable.ennreal_toReal.aemeasurable.aestronglyMeasurable, _⟩
simp only [hasFiniteIntegral_iff_norm, Real.norm_eq_abs, abs_of_nonneg ENNReal.toReal_nonneg]
@@ -340,7 +340,7 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
simpa only [hs, hc, lt_top_iff_ne_top, true_and_iff, SimpleFunc.coe_const, or_false_iff,
lintegral_const, ENNReal.coe_indicator, Set.univ_inter, ENNReal.coe_ne_top,
Measure.restrict_apply MeasurableSet.univ, ENNReal.mul_eq_top, SimpleFunc.const_zero,
- Function.const_apply, lintegral_indicator, ENNReal.coe_eq_zero, Ne.def, not_false_iff,
+ Function.const_apply, lintegral_indicator, ENNReal.coe_eq_zero, Ne, not_false_iff,
SimpleFunc.coe_zero, Set.piecewise_eq_indicator, SimpleFunc.coe_piecewise,
false_and_iff] using int_f
have : (0 : ℝ≥0∞) < ε / c := ENNReal.div_pos_iff.2 ⟨ε0, ENNReal.coe_ne_top⟩
@@ -501,7 +501,7 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
case aelt =>
show ∀ᵐ x : α ∂μ, g x < ⊤
filter_upwards [gp_lt_top] with ?_ hx
- simp only [g, sub_eq_add_neg, Ne.def, (EReal.add_lt_top _ _).ne, lt_top_iff_ne_top,
+ simp only [g, sub_eq_add_neg, Ne, (EReal.add_lt_top _ _).ne, lt_top_iff_ne_top,
lt_top_iff_ne_top.1 hx, EReal.coe_ennreal_eq_top_iff, not_false_iff, EReal.neg_eq_top_iff,
EReal.coe_ennreal_ne_bot]
case lt =>
@@ -512,8 +512,8 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
· simp only [EReal.coe_ennreal_lt_coe_ennreal_iff]; exact fp_lt_gp x
· simp only [ENNReal.coe_le_coe, EReal.coe_ennreal_le_coe_ennreal_iff]
exact gm_le_fm x
- · simp only [EReal.coe_ennreal_ne_bot, Ne.def, not_false_iff]
- · simp only [EReal.coe_nnreal_ne_top, Ne.def, not_false_iff]
+ · simp only [EReal.coe_ennreal_ne_bot, Ne, not_false_iff]
+ · simp only [EReal.coe_nnreal_ne_top, Ne, not_false_iff]
case lsc =>
show LowerSemicontinuous g
apply LowerSemicontinuous.add'
@@ -278,7 +278,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
convert fint.aestronglyMeasurable.real_toNNReal.aemeasurable
simp only [Real.toNNReal_coe]
lift ε to ℝ≥0 using εpos.le
- obtain ⟨δ, δpos, hδε⟩ : ∃ δ : ℝ≥0, 0 < δ ∧ δ < ε; exact exists_between εpos
+ obtain ⟨δ, δpos, hδε⟩ : ∃ δ : ℝ≥0, 0 < δ ∧ δ < ε := exists_between εpos
have int_f_ne_top : (∫⁻ a : α, f a ∂μ) ≠ ∞ :=
(hasFiniteIntegral_iff_ofNNReal.1 fint.hasFiniteIntegral).ne
rcases exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable μ f fmeas
@@ -115,7 +115,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simpa using ENNReal.add_lt_add_left ?aux this
case aux =>
classical
- simpa [hs, hc, lt_top_iff_ne_top, true_and_iff, SimpleFunc.coe_const,
+ simpa [f, hs, hc, lt_top_iff_ne_top, true_and_iff, SimpleFunc.coe_const,
Function.const_apply, lintegral_const, ENNReal.coe_indicator, Set.univ_inter,
ENNReal.coe_ne_top, MeasurableSet.univ, ENNReal.mul_eq_top, SimpleFunc.const_zero,
or_false_iff, lintegral_indicator, ENNReal.coe_eq_zero, Ne.def, not_false_iff,
@@ -497,11 +497,11 @@ theorem exists_lt_lowerSemicontinuous_integral_lt [SigmaFinite μ] (f : α →
_ ≤ (∫ x : α, ↑(fp x) ∂μ) + ↑δ - ((∫ x : α, ↑(fm x) ∂μ) - δ) := (sub_le_sub_left gmint _)
_ = (∫ x : α, f x ∂μ) + 2 * δ := by
simp_rw [integral_eq_integral_pos_part_sub_integral_neg_part hf]; ring
- _ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [mul_comm]
+ _ = (∫ x : α, f x ∂μ) + ε := by congr 1; field_simp [δ, mul_comm]
case aelt =>
show ∀ᵐ x : α ∂μ, g x < ⊤
filter_upwards [gp_lt_top] with ?_ hx
- simp only [sub_eq_add_neg, Ne.def, (EReal.add_lt_top _ _).ne, lt_top_iff_ne_top,
+ simp only [g, sub_eq_add_neg, Ne.def, (EReal.add_lt_top _ _).ne, lt_top_iff_ne_top,
lt_top_iff_ne_top.1 hx, EReal.coe_ennreal_eq_top_iff, not_false_iff, EReal.neg_eq_top_iff,
EReal.coe_ennreal_ne_bot]
case lt =>
@@ -62,8 +62,8 @@ Finally, we glue them together to obtain the main statement
## Related results
Are you looking for a result on approximation by continuous functions (not just semicontinuous)?
-See result `measure_theory.Lp.continuous_map_dense`, in the file
-`measure_theory.continuous_map_dense`.
+See result `MeasureTheory.Lp.boundedContinuousFunction_dense`, in the file
+`Mathlib/MeasureTheory/Function/ContinuousMapDense.lean`.
## References
@@ -81,7 +81,6 @@ variable {α : Type*} [TopologicalSpace α] [MeasurableSpace α] [BorelSpace α]
namespace MeasureTheory
--- mathport name: «expr →ₛ »
local infixr:25 " →ₛ " => SimpleFunc
/-! ### Lower semicontinuous upper bound for nonnegative functions -/
@@ -400,7 +399,7 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
convert int_fs.le
rw [← SimpleFunc.lintegral_eq_lintegral]
- rfl
+ simp only [SimpleFunc.coe_map, Function.comp_apply]
have int_fs_lt_top : (∫⁻ x, fs x ∂μ) ≠ ∞ := by
refine' ne_top_of_le_ne_top int_f (lintegral_mono fun x => _)
simpa only [ENNReal.coe_le_coe] using fs_le_f x
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).
@@ -110,7 +110,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
simp only [hc, Set.indicator_zero', Pi.zero_apply, SimpleFunc.const_zero, imp_true_iff,
eq_self_iff_true, SimpleFunc.coe_zero, Set.piecewise_eq_indicator,
SimpleFunc.coe_piecewise, le_zero_iff]
- · simp only [lintegral_const, MulZeroClass.zero_mul, zero_le, ENNReal.coe_zero]
+ · simp only [lintegral_const, zero_mul, zero_le, ENNReal.coe_zero]
have : μ s < μ s + ε / c := by
have : (0 : ℝ≥0∞) < ε / c := ENNReal.div_pos_iff.2 ⟨ε0, ENNReal.coe_ne_top⟩
simpa using ENNReal.add_lt_add_left ?aux this
@@ -257,7 +257,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
exact lintegral_congr_ae (fmeas.ae_eq_mk.fun_comp _)
· convert g1_int
simp only [smeas, μs, lintegral_const, Set.univ_inter, MeasurableSet.univ,
- lintegral_indicator, MulZeroClass.mul_zero, restrict_apply]
+ lintegral_indicator, mul_zero, restrict_apply]
_ = (∫⁻ x, f x ∂μ) + ε := by simp only [add_assoc, ENNReal.add_halves, zero_add]
#align measure_theory.exists_lt_lower_semicontinuous_lintegral_ge_of_ae_measurable MeasureTheory.exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable
@@ -333,7 +333,7 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
eq_self_iff_true, SimpleFunc.coe_zero, Set.piecewise_eq_indicator,
SimpleFunc.coe_piecewise, le_zero_iff]
· classical
- simp only [hc, Set.indicator_zero', lintegral_const, MulZeroClass.zero_mul, Pi.zero_apply,
+ simp only [hc, Set.indicator_zero', lintegral_const, zero_mul, Pi.zero_apply,
SimpleFunc.const_zero, zero_add, zero_le', SimpleFunc.coe_zero,
Set.piecewise_eq_indicator, ENNReal.coe_zero, SimpleFunc.coe_piecewise, zero_le]
have μs_lt_top : μ s < ∞ := by
@@ -149,7 +149,6 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
rw [lintegral_add_left f₁.measurable.coe_nnreal_ennreal,
lintegral_add_left g₁cont.measurable.coe_nnreal_ennreal]
convert add_le_add g₁int g₂int using 1
- simp only
conv_lhs => rw [← ENNReal.add_halves ε]
abel
#align measure_theory.simple_func.exists_le_lower_semicontinuous_lintegral_ge MeasureTheory.SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge
@@ -378,7 +377,6 @@ theorem SimpleFunc.exists_upperSemicontinuous_le_lintegral_le (f : α →ₛ ℝ
rw [lintegral_add_left f₁.measurable.coe_nnreal_ennreal,
lintegral_add_left g₁cont.measurable.coe_nnreal_ennreal]
convert add_le_add g₁int g₂int using 1
- simp only
conv_lhs => rw [← ENNReal.add_halves ε]
abel
#align measure_theory.simple_func.exists_upper_semicontinuous_le_lintegral_le MeasureTheory.SimpleFunc.exists_upperSemicontinuous_le_lintegral_le
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -76,7 +76,7 @@ open scoped ENNReal NNReal
open MeasureTheory MeasureTheory.Measure
-variable {α : Type _} [TopologicalSpace α] [MeasurableSpace α] [BorelSpace α] (μ : Measure α)
+variable {α : Type*} [TopologicalSpace α] [MeasurableSpace α] [BorelSpace α] (μ : Measure α)
[WeaklyRegular μ]
namespace MeasureTheory
@@ -2,17 +2,14 @@
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.integral.vitali_caratheodory
-! 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.Measure.Regular
import Mathlib.Topology.Semicontinuous
import Mathlib.MeasureTheory.Integral.Bochner
import Mathlib.Topology.Instances.EReal
+#align_import measure_theory.integral.vitali_caratheodory from "leanprover-community/mathlib"@"57ac39bd365c2f80589a700f9fbb664d3a1a30c2"
+
/-!
# Vitali-Carathéodory theorem
@@ -399,7 +399,7 @@ theorem exists_upperSemicontinuous_le_lintegral_le (f : α → ℝ≥0) (int_f :
-- Porting note: need to name identifier (not `this`), because `conv_rhs at this` errors
have aux := ENNReal.lt_add_right int_f (ENNReal.half_pos ε0).ne'
conv_rhs at aux => rw [lintegral_eq_nnreal (fun x => (f x : ℝ≥0∞)) μ]
- erw [ENNReal.biSup_add] at aux <;> [skip; exact ⟨0, fun x => by simp⟩]
+ erw [ENNReal.biSup_add] at aux <;> [skip; exact ⟨0, fun x => by simp⟩]
simp only [lt_iSup_iff] at aux
rcases aux with ⟨fs, fs_le_f, int_fs⟩
refine' ⟨fs, fun x => by simpa only [ENNReal.coe_le_coe] using fs_le_f x, _⟩
This is the second half of the changes originally in #5699, removing all occurrences of ;
after a space and implementing a linter rule to enforce it.
In most cases this 2-character substring has a space after it, so the following command was run first:
find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;
The remaining cases were few enough in number that they were done manually.
@@ -249,7 +249,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
· have := le_g1 x
simp only [h, Set.indicator_of_mem, top_le_iff] at this
simp [this]
- · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs ; exact hs h
+ · have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs; exact hs h
rw [this]
exact (f_lt_g0 x).trans_le le_self_add
· calc
This PR is the result of running
find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;
which firstly replaces .
focusing dots with ·
and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.
@@ -252,8 +252,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
· have : f x = fmeas.mk f x := by rw [Set.compl_subset_comm] at hs ; exact hs h
rw [this]
exact (f_lt_g0 x).trans_le le_self_add
- ·
- calc
+ · calc
∫⁻ x, g0 x + g1 x ∂μ = (∫⁻ x, g0 x ∂μ) + ∫⁻ x, g1 x ∂μ :=
lintegral_add_left g0_cont.measurable _
_ ≤ (∫⁻ x, f x ∂μ) + ε / 2 + (0 + ε / 2) := by
@@ -301,8 +300,7 @@ theorem exists_lt_lowerSemicontinuous_integral_gt_nnreal [SigmaFinite μ] (f :
simp only [hasFiniteIntegral_iff_norm, Real.norm_eq_abs, abs_of_nonneg ENNReal.toReal_nonneg]
convert gint_ne.lt_top using 1
· rw [integral_eq_lintegral_of_nonneg_ae, integral_eq_lintegral_of_nonneg_ae]
- ·
- calc
+ · calc
ENNReal.toReal (∫⁻ a : α, ENNReal.ofReal (g a).toReal ∂μ) =
ENNReal.toReal (∫⁻ a : α, g a ∂μ) :=
by congr 1
∑'
precedence (#5615)
∑
, ∏
and variants).([^a-zA-Zα-ωΑ-Ω'𝓝ℳ₀𝕂ₛ)]) \(([∑∏][^()∑∏]*,[^()∑∏:]*)\) ([⊂⊆=<≤])
replaced by $1 $2 $3
@@ -191,8 +191,8 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
· calc
∫⁻ x, ∑' n : ℕ, g n x ∂μ = ∑' n, ∫⁻ x, g n x ∂μ := by
rw [lintegral_tsum fun n => (gcont n).measurable.coe_nnreal_ennreal.aemeasurable]
- _ ≤ ∑' n, (∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + δ n := (ENNReal.tsum_le_tsum hg)
- _ = (∑' n, ∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
+ _ ≤ ∑' n, ((∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + δ n) := (ENNReal.tsum_le_tsum hg)
+ _ = ∑' n, ∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ + ∑' n, δ n := ENNReal.tsum_add
_ ≤ (∫⁻ x : α, f x ∂μ) + ε := by
refine' add_le_add _ hδ.le
rw [← lintegral_tsum]
@@ -100,7 +100,7 @@ theorem SimpleFunc.exists_le_lowerSemicontinuous_lintegral_ge (f : α →ₛ ℝ
(∫⁻ x, g x ∂μ) ≤ (∫⁻ x, f x ∂μ) + ε := by
induction' f using MeasureTheory.SimpleFunc.induction with c s hs f₁ f₂ _ h₁ h₂ generalizing ε
· let f := SimpleFunc.piecewise s hs (SimpleFunc.const α c) (SimpleFunc.const α 0)
- by_cases h : (∫⁻ x, f x ∂μ) = ⊤
+ by_cases h : ∫⁻ x, f x ∂μ = ⊤
· refine'
⟨fun _ => c, fun x => _, lowerSemicontinuous_const, by
simp only [_root_.top_add, le_top, h]⟩
@@ -189,7 +189,7 @@ theorem exists_le_lowerSemicontinuous_lintegral_ge (f : α → ℝ≥0∞) (hf :
ENNReal.continuous_coe.comp_lowerSemicontinuous (gcont n) fun x y hxy =>
ENNReal.coe_le_coe.2 hxy
· calc
- (∫⁻ x, ∑' n : ℕ, g n x ∂μ) = ∑' n, ∫⁻ x, g n x ∂μ := by
+ ∫⁻ x, ∑' n : ℕ, g n x ∂μ = ∑' n, ∫⁻ x, g n x ∂μ := by
rw [lintegral_tsum fun n => (gcont n).measurable.coe_nnreal_ennreal.aemeasurable]
_ ≤ ∑' n, (∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + δ n := (ENNReal.tsum_le_tsum hg)
_ = (∑' n, ∫⁻ x, SimpleFunc.eapproxDiff f n x ∂μ) + ∑' n, δ n := ENNReal.tsum_add
@@ -254,7 +254,7 @@ theorem exists_lt_lowerSemicontinuous_lintegral_ge_of_aemeasurable [SigmaFinite
exact (f_lt_g0 x).trans_le le_self_add
·
calc
- (∫⁻ x, g0 x + g1 x ∂μ) = (∫⁻ x, g0 x ∂μ) + ∫⁻ x, g1 x ∂μ :=
+ ∫⁻ x, g0 x + g1 x ∂μ = (∫⁻ x, g0 x ∂μ) + ∫⁻ x, g1 x ∂μ :=
lintegral_add_left g0_cont.measurable _
_ ≤ (∫⁻ x, f x ∂μ) + ε / 2 + (0 + ε / 2) := by
refine' add_le_add _ _
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
init.data.list.default
algebra.order.monoid.cancel.basic
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file