[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α →ₛ ℝ≥0∞
μ : Measure α
⊢ ∫⁻ (a : α), ↑f a ∂μ = lintegral f μ
[PROOFSTEP]
rw [MeasureTheory.lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α →ₛ ℝ≥0∞
μ : Measure α
⊢ ⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => ↑f a), lintegral g μ = lintegral f μ
[PROOFSTEP]
exact le_antisymm (iSup₂_le fun g hg => lintegral_mono hg <| le_rfl) (le_iSup₂_of_le f le_rfl le_rfl)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν✝ : Measure α
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
f g : α → ℝ≥0∞
hfg : f ≤ g
⊢ ∫⁻ (a : α), f a ∂μ ≤ ∫⁻ (a : α), g a ∂ν
[PROOFSTEP]
rw [lintegral, lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν✝ : Measure α
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
f g : α → ℝ≥0∞
hfg : f ≤ g
⊢ ⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => f a), SimpleFunc.lintegral g μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => g a), SimpleFunc.lintegral g_1 ν
[PROOFSTEP]
exact iSup_mono fun φ => iSup_mono' fun hφ => ⟨le_trans hφ hfg, lintegral_mono (le_refl φ) hμν⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ⨆ (g : α → ℝ≥0∞) (_ : Measurable g) (_ : g ≤ f), ∫⁻ (a : α), g a ∂μ = ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
apply le_antisymm
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ⨆ (g : α → ℝ≥0∞) (_ : Measurable g) (_ : g ≤ f), ∫⁻ (a : α), g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
exact iSup_le fun i => iSup_le fun _ => iSup_le fun h'i => lintegral_mono h'i
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂μ ≤ ⨆ (g : α → ℝ≥0∞) (_ : Measurable g) (_ : g ≤ f), ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rw [lintegral]
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => f a), SimpleFunc.lintegral g μ ≤
    ⨆ (g : α → ℝ≥0∞) (_ : Measurable g) (_ : g ≤ f), ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
refine' iSup₂_le fun i hi => le_iSup₂_of_le i i.measurable <| le_iSup_of_le hi _
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
i : α →ₛ ℝ≥0∞
hi : ↑i ≤ fun a => f a
⊢ SimpleFunc.lintegral i μ ≤ ∫⁻ (a : α), ↑i a ∂μ
[PROOFSTEP]
exact le_of_eq (i.lintegral_eq_lintegral _).symm
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
⊢ ∫⁻ (x : α), c ∂μ = c * ↑↑μ univ
[PROOFSTEP]
rw [← SimpleFunc.const_lintegral, ← SimpleFunc.lintegral_eq_lintegral, SimpleFunc.coe_const]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
⊢ ∫⁻ (x : α), c ∂μ = ∫⁻ (a : α), Function.const α c a ∂μ
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
⊢ ∫⁻ (x : α), 0 ∂μ = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
⊢ ∫⁻ (x : α), 1 ∂μ = ↑↑μ univ
[PROOFSTEP]
rw [lintegral_const, one_mul]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
c : ℝ≥0∞
⊢ ∫⁻ (x : α) in s, c ∂μ = c * ↑↑μ s
[PROOFSTEP]
rw [lintegral_const, Measure.restrict_apply_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
⊢ ∫⁻ (x : α) in s, 1 ∂μ = ↑↑μ s
[PROOFSTEP]
rw [set_lintegral_const, one_mul]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : IsFiniteMeasure μ
s : Set α
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ ∫⁻ (x : α) in s, c ∂μ < ⊤
[PROOFSTEP]
rw [lintegral_const]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : IsFiniteMeasure μ
s : Set α
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ c * ↑↑(Measure.restrict μ s) univ < ⊤
[PROOFSTEP]
exact ENNReal.mul_lt_top hc (measure_ne_top (μ.restrict s) univ)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : IsFiniteMeasure μ
c : ℝ≥0∞
hc : c ≠ ⊤
⊢ ∫⁻ (x : α), c ∂μ < ⊤
[PROOFSTEP]
simpa only [Measure.restrict_univ] using set_lintegral_const_lt_top (univ : Set α) hc
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
cases' eq_or_ne (∫⁻ a, f a ∂μ) 0 with h₀ h₀
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ = 0
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
exact ⟨0, measurable_zero, zero_le f, h₀.trans lintegral_zero.symm⟩
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rcases exists_seq_strictMono_tendsto' h₀.bot_lt with ⟨L, _, hLf, hL_tendsto⟩
[GOAL]
case inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
have : ∀ n, ∃ g : α → ℝ≥0∞, Measurable g ∧ g ≤ f ∧ L n < ∫⁻ a, g a ∂μ :=
  by
  intro n
  simpa only [← iSup_lintegral_measurable_le_eq_lintegral f, lt_iSup_iff, exists_prop] using (hLf n).2
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
⊢ ∀ (n : ℕ), ∃ g, Measurable g ∧ g ≤ f ∧ L n < ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
n : ℕ
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ L n < ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
simpa only [← iSup_lintegral_measurable_le_eq_lintegral f, lt_iSup_iff, exists_prop] using (hLf n).2
[GOAL]
case inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
this : ∀ (n : ℕ), ∃ g, Measurable g ∧ g ≤ f ∧ L n < ∫⁻ (a : α), g a ∂μ
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
choose g hgm hgf hLg using this
[GOAL]
case inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
g : ℕ → α → ℝ≥0∞
hgm : ∀ (n : ℕ), Measurable (g n)
hgf : ∀ (n : ℕ), g n ≤ f
hLg : ∀ (n : ℕ), L n < ∫⁻ (a : α), g n a ∂μ
⊢ ∃ g, Measurable g ∧ g ≤ f ∧ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
refine' ⟨fun x => ⨆ n, g n x, measurable_iSup hgm, fun x => iSup_le fun n => hgf n x, le_antisymm _ _⟩
[GOAL]
case inr.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
g : ℕ → α → ℝ≥0∞
hgm : ∀ (n : ℕ), Measurable (g n)
hgf : ∀ (n : ℕ), g n ≤ f
hLg : ∀ (n : ℕ), L n < ∫⁻ (a : α), g n a ∂μ
⊢ ∫⁻ (a : α), f a ∂μ ≤ ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), g n x) a ∂μ
[PROOFSTEP]
refine' le_of_tendsto' hL_tendsto fun n => (hLg n).le.trans <| lintegral_mono fun x => _
[GOAL]
case inr.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
g : ℕ → α → ℝ≥0∞
hgm : ∀ (n : ℕ), Measurable (g n)
hgf : ∀ (n : ℕ), g n ≤ f
hLg : ∀ (n : ℕ), L n < ∫⁻ (a : α), g n a ∂μ
n : ℕ
x : α
⊢ g n x ≤ (fun x => ⨆ (n : ℕ), g n x) x
[PROOFSTEP]
exact le_iSup (fun n => g n x) n
[GOAL]
case inr.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h₀ : ∫⁻ (a : α), f a ∂μ ≠ 0
L : ℕ → ℝ≥0∞
left✝ : StrictMono L
hLf : ∀ (n : ℕ), L n ∈ Ioo ⊥ (∫⁻ (a : α), f a ∂μ)
hL_tendsto : Tendsto L atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
g : ℕ → α → ℝ≥0∞
hgm : ∀ (n : ℕ), Measurable (g n)
hgf : ∀ (n : ℕ), g n ≤ f
hLg : ∀ (n : ℕ), L n < ∫⁻ (a : α), g n a ∂μ
⊢ ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), g n x) a ∂μ ≤ ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
exact lintegral_mono fun x => iSup_le fun n => hgf n x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
⊢ ∫⁻ (a : α), f a ∂μ =
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
rw [lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
⊢ ⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => f a), SimpleFunc.lintegral g μ =
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
refine' le_antisymm (iSup₂_le fun φ hφ => _) (iSup_mono' fun φ => ⟨φ.map ((↑) : ℝ≥0 → ℝ≥0∞), le_rfl⟩)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
by_cases h : ∀ᵐ a ∂μ, φ a ≠ ∞
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
let ψ := φ.map ENNReal.toNNReal
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
ψ : α →ₛ ℝ≥0 := SimpleFunc.map ENNReal.toNNReal φ
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
replace h : ψ.map ((↑) : ℝ≥0 → ℝ≥0∞) =ᵐ[μ] φ := h.mono fun a => ENNReal.coe_toNNReal
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
ψ : α →ₛ ℝ≥0 := SimpleFunc.map ENNReal.toNNReal φ
h : ↑(SimpleFunc.map ENNReal.some ψ) =ᵐ[μ] ↑φ
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
have : ∀ x, ↑(ψ x) ≤ f x := fun x => le_trans ENNReal.coe_toNNReal_le_self (hφ x)
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
ψ : α →ₛ ℝ≥0 := SimpleFunc.map ENNReal.toNNReal φ
h : ↑(SimpleFunc.map ENNReal.some ψ) =ᵐ[μ] ↑φ
this : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
exact le_iSup_of_le (φ.map ENNReal.toNNReal) (le_iSup_of_le this (ge_of_eq <| lintegral_congr h))
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
have h_meas : μ (φ ⁻¹' {∞}) ≠ 0 := mt measure_zero_iff_ae_nmem.1 h
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
⊢ SimpleFunc.lintegral φ μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
refine' le_trans le_top (ge_of_eq <| (iSup_eq_top _).2 fun b hb => _)
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
⊢ ∃ i, b < ⨆ (_ : ∀ (x : α), ↑(↑i x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ
[PROOFSTEP]
obtain ⟨n, hn⟩ : ∃ n : ℕ, b < n * μ (φ ⁻¹' {∞})
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
⊢ ∃ n, b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
n : ℕ
hn : b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
⊢ ∃ i, b < ⨆ (_ : ∀ (x : α), ↑(↑i x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ
[PROOFSTEP]
exact exists_nat_mul_gt h_meas (ne_of_lt hb)
[GOAL]
case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
n : ℕ
hn : b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
⊢ ∃ i, b < ⨆ (_ : ∀ (x : α), ↑(↑i x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ
[PROOFSTEP]
use(const α (n : ℝ≥0)).restrict (φ ⁻¹' {∞})
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
n : ℕ
hn : b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
⊢ b <
    ⨆ (_ : ∀ (x : α), ↑(↑(restrict (const α ↑n) (↑φ ⁻¹' {⊤})) x) ≤ f x),
      SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (restrict (const α ↑n) (↑φ ⁻¹' {⊤}))) μ
[PROOFSTEP]
simp only [lt_iSup_iff, exists_prop, coe_restrict, φ.measurableSet_preimage, coe_const, ENNReal.coe_indicator,
  map_coe_ennreal_restrict, SimpleFunc.map_const, ENNReal.coe_nat, restrict_const_lintegral]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
n : ℕ
hn : b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
⊢ (∀ (x : α), indicator (↑φ ⁻¹' {⊤}) (fun x => ↑(Function.const α (↑n) x)) x ≤ f x) ∧ b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
[PROOFSTEP]
refine' ⟨indicator_le fun x hx => le_trans _ (hφ _), hn⟩
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
n : ℕ
hn : b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
x : α
hx : x ∈ ↑φ ⁻¹' {⊤}
⊢ ↑(Function.const α (↑n) x) ≤ ↑φ x
[PROOFSTEP]
simp only [mem_preimage, mem_singleton_iff] at hx 
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ : Measure α
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
h : ¬∀ᵐ (a : α) ∂μ, ↑φ a ≠ ⊤
h_meas : ↑↑μ (↑φ ⁻¹' {⊤}) ≠ 0
b : ℝ≥0∞
hb : b < ⊤
n : ℕ
hn : b < ↑n * ↑↑μ (↑φ ⁻¹' {⊤})
x : α
hx : ↑φ x = ⊤
⊢ ↑(Function.const α (↑n) x) ≤ ↑φ x
[PROOFSTEP]
simp only [hx, le_top]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
rw [lintegral_eq_nnreal] at h 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
have := ENNReal.lt_add_right h hε
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
this :
  ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ <
    (⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ) + ε
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
erw [ENNReal.biSup_add] at this  <;> [skip; exact ⟨0, fun x => zero_le _⟩]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
this :
  ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ <
    (⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ) + ε
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
erw [ENNReal.biSup_add] at this 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
this :
  ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ <
    ⨆ (i : α →ₛ ℝ≥0) (_ : i ∈ fun φ => ∀ (x : α), ↑(↑φ x) ≤ f x),
      SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ + ε
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
skip
[GOAL]
case hs
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
this :
  ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ <
    (⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ) + ε
⊢ Set.Nonempty fun φ => ∀ (x : α), ↑(↑φ x) ≤ f x
[PROOFSTEP]
exact ⟨0, fun x => zero_le _⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
this :
  ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ <
    ⨆ (i : α →ₛ ℝ≥0) (_ : i ∈ fun φ => ∀ (x : α), ↑(↑φ x) ≤ f x),
      SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ + ε
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
simp_rw [lt_iSup_iff, iSup_lt_iff, iSup_le_iff] at this 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
this :
  ∃ i h b,
    b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ + ε ∧
      ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
rcases this with ⟨φ, hle : ∀ x, ↑(φ x) ≤ f x, b, hbφ, hb⟩
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
⊢ ∃ φ,
    (∀ (x : α), ↑(↑φ x) ≤ f x) ∧
      ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
refine' ⟨φ, hle, fun ψ hψ => _⟩
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
have : (map (↑) φ).lintegral μ ≠ ∞ := ne_top_of_le_ne_top h (by exact le_iSup₂ (α := ℝ≥0∞) φ hle)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≤
    ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ
[PROOFSTEP]
exact le_iSup₂ (α := ℝ≥0∞) φ hle
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
this : SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε
[PROOFSTEP]
rw [← ENNReal.add_lt_add_iff_left this, ← add_lintegral, ← SimpleFunc.map_add @ENNReal.coe_add]
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
this : SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (φ + (ψ - φ))) μ <
    SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
[PROOFSTEP]
refine' (hb _ fun x => le_trans _ (max_le (hle x) (hψ x))).trans_lt hbφ
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
this : SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
x : α
⊢ ↑(↑(φ + (ψ - φ)) x) ≤ max ↑(↑φ x) ↑(↑ψ x)
[PROOFSTEP]
norm_cast
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
this : SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
x : α
⊢ ↑(φ + (ψ - φ)) x ≤ max (↑φ x) (↑ψ x)
[PROOFSTEP]
simp only [add_apply, sub_apply, add_tsub_eq_max]
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ f x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
φ : α →ₛ ℝ≥0
hle : ∀ (x : α), ↑(↑φ x) ≤ f x
b : ℝ≥0∞
hbφ : b < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ + ε
hb : ∀ (i : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ ≤ b
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
this : SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≠ ⊤
x : α
⊢ max (↑φ x) (↑ψ x) ≤ max (↑φ x) (↑ψ x)
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
f : ι → α → ℝ≥0∞
⊢ ⨆ (i : ι), ∫⁻ (a : α), f i a ∂μ ≤ ∫⁻ (a : α), ⨆ (i : ι), f i a ∂μ
[PROOFSTEP]
simp only [← iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
f : ι → α → ℝ≥0∞
⊢ ⨆ (i : ι), ∫⁻ (a : α), f i a ∂μ ≤ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ
[PROOFSTEP]
exact (monotone_lintegral μ).le_map_iSup
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
ι' : ι → Sort u_6
f : (i : ι) → ι' i → α → ℝ≥0∞
⊢ ⨆ (i : ι) (j : ι' i), ∫⁻ (a : α), f i j a ∂μ ≤ ∫⁻ (a : α), ⨆ (i : ι) (j : ι' i), f i j a ∂μ
[PROOFSTEP]
convert (monotone_lintegral μ).le_map_iSup₂ f with a
[GOAL]
case h.e'_4.h.e'_4.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
ι' : ι → Sort u_6
f : (i : ι) → ι' i → α → ℝ≥0∞
a : α
⊢ ⨆ (i : ι) (j : ι' i), f i j a = iSup (fun i => ⨆ (j : ι' i), f i j) a
[PROOFSTEP]
simp only [iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
f : ι → α → ℝ≥0∞
⊢ ∫⁻ (a : α), ⨅ (i : ι), f i a ∂μ ≤ ⨅ (i : ι), ∫⁻ (a : α), f i a ∂μ
[PROOFSTEP]
simp only [← iInf_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
f : ι → α → ℝ≥0∞
⊢ ∫⁻ (a : α), iInf (fun i => f i) a ∂μ ≤ ⨅ (i : ι), ∫⁻ (a : α), f i a ∂μ
[PROOFSTEP]
exact (monotone_lintegral μ).map_iInf_le
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
ι' : ι → Sort u_6
f : (i : ι) → ι' i → α → ℝ≥0∞
⊢ ∫⁻ (a : α), ⨅ (i : ι) (h : ι' i), f i h a ∂μ ≤ ⨅ (i : ι) (h : ι' i), ∫⁻ (a : α), f i h a ∂μ
[PROOFSTEP]
convert (monotone_lintegral μ).map_iInf₂_le f with a
[GOAL]
case h.e'_3.h.e'_4.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Sort u_5
ι' : ι → Sort u_6
f : (i : ι) → ι' i → α → ℝ≥0∞
a : α
⊢ ⨅ (i : ι) (h : ι' i), f i h a = iInf (fun i => ⨅ (j : ι' i), f i j) a
[PROOFSTEP]
simp only [iInf_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
⊢ ∫⁻ (a : α), f a ∂μ ≤ ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rcases exists_measurable_superset_of_null h with ⟨t, hts, ht, ht0⟩
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
⊢ ∫⁻ (a : α), f a ∂μ ≤ ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
have : ∀ᵐ x ∂μ, x ∉ t := measure_zero_iff_ae_nmem.1 ht0
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
⊢ ∫⁻ (a : α), f a ∂μ ≤ ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rw [lintegral, lintegral]
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
⊢ ⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => f a), SimpleFunc.lintegral g μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => g a), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
refine' iSup_le fun s => iSup_le fun hfs => le_iSup_of_le (s.restrict tᶜ) <| le_iSup_of_le _ _
[GOAL]
case intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
⊢ ↑(restrict s tᶜ) ≤ fun a => g a
[PROOFSTEP]
intro a
[GOAL]
case intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
⊢ ↑(restrict s tᶜ) a ≤ (fun a => g a) a
[PROOFSTEP]
by_cases h : a ∈ t
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h✝ : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
h : a ∈ t
⊢ ↑(restrict s tᶜ) a ≤ (fun a => g a) a
[PROOFSTEP]
simp [h, restrict_apply s ht.compl, ht.compl]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h✝ : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
h : ¬a ∈ t
⊢ ↑(restrict s tᶜ) a ≤ (fun a => g a) a
[PROOFSTEP]
simp [h, restrict_apply s ht.compl, ht.compl]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h✝ : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
h : ¬a ∈ t
⊢ ↑s a ≤ g a
[PROOFSTEP]
exact le_trans (hfs a) (_root_.by_contradiction fun hnfg => h (hts hnfg))
[GOAL]
case intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
⊢ SimpleFunc.lintegral s μ ≤ SimpleFunc.lintegral (restrict s tᶜ) μ
[PROOFSTEP]
refine' le_of_eq (SimpleFunc.lintegral_congr <| this.mono fun a hnt => _)
[GOAL]
case intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
hnt : ¬a ∈ t
⊢ ↑s a = ↑(restrict s tᶜ) a
[PROOFSTEP]
by_cases hat : a ∈ t
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
hnt : ¬a ∈ t
hat : a ∈ t
⊢ ↑s a = ↑(restrict s tᶜ) a
[PROOFSTEP]
simp [hat, restrict_apply s ht.compl]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
hnt hat : ¬a ∈ t
⊢ ↑s a = ↑(restrict s tᶜ) a
[PROOFSTEP]
simp [hat, restrict_apply s ht.compl]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ᵐ (a : α) ∂μ, f a ≤ g a
t : Set α
hts : {x | (fun a => f a ≤ g a) x}ᶜ ⊆ t
ht : MeasurableSet t
ht0 : ↑↑μ t = 0
this : ∀ᵐ (x : α) ∂μ, ¬x ∈ t
s : α →ₛ ℝ≥0∞
hfs : ↑s ≤ fun a => f a
a : α
hnt : ¬a ∈ t
hat : a ∈ t
⊢ ↑s a = 0
[PROOFSTEP]
exact (hnt hat).elim
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : ∀ (a : α), f a = g a
⊢ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
simp only [h]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s t : Set α
h : s =ᵐ[μ] t
⊢ ∫⁻ (x : α) in s, f x ∂μ = ∫⁻ (x : α) in t, f x ∂μ
[PROOFSTEP]
rw [Measure.restrict_congr_set h]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → f x = g x
⊢ ∫⁻ (x : α) in s, f x ∂μ = ∫⁻ (x : α) in s, g x ∂μ
[PROOFSTEP]
rw [lintegral_congr_ae]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → f x = g x
⊢ (fun x => f x) =ᵐ[Measure.restrict μ s] fun a => g a
[PROOFSTEP]
rw [EventuallyEq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → f x = g x
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ s, f x = g x
[PROOFSTEP]
rwa [ae_restrict_iff' hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
⊢ ∫⁻ (x : α), ENNReal.ofReal (f x) ∂μ ≤ ∫⁻ (x : α), ↑‖f x‖₊ ∂μ
[PROOFSTEP]
simp_rw [← ofReal_norm_eq_coe_nnnorm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
⊢ ∫⁻ (x : α), ENNReal.ofReal (f x) ∂μ ≤ ∫⁻ (x : α), ENNReal.ofReal ‖f x‖ ∂μ
[PROOFSTEP]
refine' lintegral_mono fun x => ENNReal.ofReal_le_ofReal _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
x : α
⊢ f x ≤ ‖f x‖
[PROOFSTEP]
rw [Real.norm_eq_abs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
x : α
⊢ f x ≤ |f x|
[PROOFSTEP]
exact le_abs_self (f x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
h_nonneg : 0 ≤ᵐ[μ] f
⊢ ∫⁻ (x : α), ↑‖f x‖₊ ∂μ = ∫⁻ (x : α), ENNReal.ofReal (f x) ∂μ
[PROOFSTEP]
apply lintegral_congr_ae
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
h_nonneg : 0 ≤ᵐ[μ] f
⊢ (fun a => ↑‖f a‖₊) =ᵐ[μ] fun a => ENNReal.ofReal (f a)
[PROOFSTEP]
filter_upwards [h_nonneg] with x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
h_nonneg : 0 ≤ᵐ[μ] f
x : α
hx : OfNat.ofNat 0 x ≤ f x
⊢ ↑‖f x‖₊ = ENNReal.ofReal (f x)
[PROOFSTEP]
rw [Real.nnnorm_of_nonneg hx, ENNReal.ofReal_eq_coe_nnreal hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
⊢ ∫⁻ (a : α), ⨆ (n : ℕ), f n a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
set c : ℝ≥0 → ℝ≥0∞ := (↑)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
⊢ ∫⁻ (a : α), ⨆ (n : ℕ), f n a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
set F := fun a : α => ⨆ n, f n a
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
⊢ lintegral μ F = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have _ : Measurable F := measurable_iSup hf
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
⊢ lintegral μ F = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
refine' le_antisymm _ (iSup_lintegral_le _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
⊢ lintegral μ F ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
rw [lintegral_eq_nnreal]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
⊢ ⨆ (φ : α →ₛ ℝ≥0) (_ : ∀ (x : α), ↑(↑φ x) ≤ ⨆ (n : ℕ), f n x), SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) μ ≤
    ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
refine' iSup_le fun s => iSup_le fun hsf => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
refine' ENNReal.le_of_forall_lt_one_mul_le fun a ha => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
a : ℝ≥0∞
ha : a < 1
⊢ a * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
rcases ENNReal.lt_iff_exists_coe.1 ha with ⟨r, rfl, _⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha : ↑r < 1
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have ha : r < 1 := ENNReal.coe_lt_coe.1 ha
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
let rs := s.map fun a => r * a
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have eq_rs : (const α r : α →ₛ ℝ≥0∞) * map c s = rs.map c :=
  by
  ext1 a
  exact ENNReal.coe_mul.symm
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
⊢ const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
[PROOFSTEP]
ext1 a
[GOAL]
case H
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
a : α
⊢ ↑(const α ↑r * SimpleFunc.map c s) a = ↑(SimpleFunc.map c rs) a
[PROOFSTEP]
exact ENNReal.coe_mul.symm
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have eq : ∀ p, rs.map c ⁻¹' { p } = ⋃ n, rs.map c ⁻¹' { p } ∩ {a | p ≤ f n a} :=
  by
  intro p
  rw [← inter_iUnion]; nth_rw 1 [← inter_univ (map c rs ⁻¹' { p })]
  refine' Set.ext fun x => and_congr_right fun hx => true_iff_iff.2 _
  by_cases p_eq : p = 0
  · simp [p_eq]
  simp [-ENNReal.coe_mul] at hx 
  subst hx
  have : r * s x ≠ 0 := by rwa [Ne, ← ENNReal.coe_eq_zero]
  have : s x ≠ 0 := by
    refine' mt _ this
    intro h
    rw [h, mul_zero]
  have : (rs.map c) x < ⨆ n : ℕ, f n x :=
    by
    refine' lt_of_lt_of_le (ENNReal.coe_lt_coe.2 _) (hsf x)
    suffices : r * s x < 1 * s x
    simpa
    exact mul_lt_mul_of_pos_right ha (pos_iff_ne_zero.2 this)
  rcases lt_iSup_iff.1 this with ⟨i, hi⟩
  exact mem_iUnion.2 ⟨i, le_of_lt hi⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
⊢ ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
[PROOFSTEP]
intro p
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
⊢ ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
[PROOFSTEP]
rw [← inter_iUnion]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
⊢ ↑(SimpleFunc.map c rs) ⁻¹' {p} = ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ ⋃ (i : ℕ), {a | p ≤ f i a}
[PROOFSTEP]
nth_rw 1 [← inter_univ (map c rs ⁻¹' { p })]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
⊢ ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ univ = ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ ⋃ (i : ℕ), {a | p ≤ f i a}
[PROOFSTEP]
refine' Set.ext fun x => and_congr_right fun hx => true_iff_iff.2 _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
x : α
hx : x ∈ ↑(SimpleFunc.map c rs) ⁻¹' {p}
⊢ x ∈ ⋃ (i : ℕ), {a | p ≤ f i a}
[PROOFSTEP]
by_cases p_eq : p = 0
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
x : α
hx : x ∈ ↑(SimpleFunc.map c rs) ⁻¹' {p}
p_eq : p = 0
⊢ x ∈ ⋃ (i : ℕ), {a | p ≤ f i a}
[PROOFSTEP]
simp [p_eq]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
x : α
hx : x ∈ ↑(SimpleFunc.map c rs) ⁻¹' {p}
p_eq : ¬p = 0
⊢ x ∈ ⋃ (i : ℕ), {a | p ≤ f i a}
[PROOFSTEP]
simp [-ENNReal.coe_mul] at hx 
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
p : ℝ≥0∞
x : α
p_eq : ¬p = 0
hx : ↑(r * ↑s x) = p
⊢ x ∈ ⋃ (i : ℕ), {a | p ≤ f i a}
[PROOFSTEP]
subst hx
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
⊢ x ∈ ⋃ (i : ℕ), {a | ↑(r * ↑s x) ≤ f i a}
[PROOFSTEP]
have : r * s x ≠ 0 := by rwa [Ne, ← ENNReal.coe_eq_zero]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
⊢ r * ↑s x ≠ 0
[PROOFSTEP]
rwa [Ne, ← ENNReal.coe_eq_zero]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this : r * ↑s x ≠ 0
⊢ x ∈ ⋃ (i : ℕ), {a | ↑(r * ↑s x) ≤ f i a}
[PROOFSTEP]
have : s x ≠ 0 := by
  refine' mt _ this
  intro h
  rw [h, mul_zero]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this : r * ↑s x ≠ 0
⊢ ↑s x ≠ 0
[PROOFSTEP]
refine' mt _ this
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this : r * ↑s x ≠ 0
⊢ ↑s x = 0 → r * ↑s x = 0
[PROOFSTEP]
intro h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this : r * ↑s x ≠ 0
h : ↑s x = 0
⊢ r * ↑s x = 0
[PROOFSTEP]
rw [h, mul_zero]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝ : r * ↑s x ≠ 0
this : ↑s x ≠ 0
⊢ x ∈ ⋃ (i : ℕ), {a | ↑(r * ↑s x) ≤ f i a}
[PROOFSTEP]
have : (rs.map c) x < ⨆ n : ℕ, f n x :=
  by
  refine' lt_of_lt_of_le (ENNReal.coe_lt_coe.2 _) (hsf x)
  suffices : r * s x < 1 * s x
  simpa
  exact mul_lt_mul_of_pos_right ha (pos_iff_ne_zero.2 this)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝ : r * ↑s x ≠ 0
this : ↑s x ≠ 0
⊢ ↑(SimpleFunc.map c rs) x < ⨆ (n : ℕ), f n x
[PROOFSTEP]
refine' lt_of_lt_of_le (ENNReal.coe_lt_coe.2 _) (hsf x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝ : r * ↑s x ≠ 0
this : ↑s x ≠ 0
⊢ ↑rs x < ↑s x
[PROOFSTEP]
suffices : r * s x < 1 * s x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝¹ : r * ↑s x ≠ 0
this✝ : ↑s x ≠ 0
this : r * ↑s x < 1 * ↑s x
⊢ ↑rs x < ↑s x
case this
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝ : r * ↑s x ≠ 0
this : ↑s x ≠ 0
⊢ r * ↑s x < 1 * ↑s x
[PROOFSTEP]
simpa
[GOAL]
case this
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝ : r * ↑s x ≠ 0
this : ↑s x ≠ 0
⊢ r * ↑s x < 1 * ↑s x
[PROOFSTEP]
exact mul_lt_mul_of_pos_right ha (pos_iff_ne_zero.2 this)
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝¹ : r * ↑s x ≠ 0
this✝ : ↑s x ≠ 0
this : ↑(SimpleFunc.map c rs) x < ⨆ (n : ℕ), f n x
⊢ x ∈ ⋃ (i : ℕ), {a | ↑(r * ↑s x) ≤ f i a}
[PROOFSTEP]
rcases lt_iSup_iff.1 this with ⟨i, hi⟩
[GOAL]
case neg.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
x : α
p_eq : ¬↑(r * ↑s x) = 0
this✝¹ : r * ↑s x ≠ 0
this✝ : ↑s x ≠ 0
this : ↑(SimpleFunc.map c rs) x < ⨆ (n : ℕ), f n x
i : ℕ
hi : ↑(SimpleFunc.map c rs) x < f i x
⊢ x ∈ ⋃ (i : ℕ), {a | ↑(r * ↑s x) ≤ f i a}
[PROOFSTEP]
exact mem_iUnion.2 ⟨i, le_of_lt hi⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have mono : ∀ r : ℝ≥0∞, Monotone fun n => rs.map c ⁻¹' { r } ∩ {a | r ≤ f n a} :=
  by
  intro r i j h
  refine' inter_subset_inter (Subset.refl _) _
  intro x (hx : r ≤ f i x)
  exact le_trans hx (h_mono h x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
⊢ ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
[PROOFSTEP]
intro r i j h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r✝ : ℝ≥0
right✝ ha✝ : ↑r✝ < 1
ha : r✝ < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r✝ * a) s
eq_rs : const α ↑r✝ * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
r : ℝ≥0∞
i j : ℕ
h : i ≤ j
⊢ (fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) i ≤
    (fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) j
[PROOFSTEP]
refine' inter_subset_inter (Subset.refl _) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r✝ : ℝ≥0
right✝ ha✝ : ↑r✝ < 1
ha : r✝ < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r✝ * a) s
eq_rs : const α ↑r✝ * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
r : ℝ≥0∞
i j : ℕ
h : i ≤ j
⊢ {a | r ≤ f i a} ⊆ {a | r ≤ f j a}
[PROOFSTEP]
intro x (hx : r ≤ f i x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r✝ : ℝ≥0
right✝ ha✝ : ↑r✝ < 1
ha : r✝ < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r✝ * a) s
eq_rs : const α ↑r✝ * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
r : ℝ≥0∞
i j : ℕ
h : i ≤ j
x : α
hx : r ≤ f i x
⊢ x ∈ {a | r ≤ f j a}
[PROOFSTEP]
exact le_trans hx (h_mono h x)
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have h_meas : ∀ n, MeasurableSet {a : α | (⇑(map c rs)) a ≤ f n a} := fun n =>
  measurableSet_le (SimpleFunc.measurable _) (hf n)
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map ENNReal.some s) μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
calc
  (r : ℝ≥0∞) * (s.map c).lintegral μ = ∑ r in (rs.map c).range, r * μ (rs.map c ⁻¹' { r }) := by
    rw [← const_mul_lintegral, eq_rs, SimpleFunc.lintegral]
  _ = ∑ r in (rs.map c).range, r * μ (⋃ n, rs.map c ⁻¹' { r } ∩ {a | r ≤ f n a}) := by simp only [(eq _).symm]
  _ = ∑ r in (rs.map c).range, ⨆ n, r * μ (rs.map c ⁻¹' { r } ∩ {a | r ≤ f n a}) :=
    (Finset.sum_congr rfl fun x _ => by rw [measure_iUnion_eq_iSup (directed_of_sup <| mono x), ENNReal.mul_iSup])
  _ = ⨆ n, ∑ r in (rs.map c).range, r * μ (rs.map c ⁻¹' { r } ∩ {a | r ≤ f n a}) :=
    by
    rw [ENNReal.finset_sum_iSup_nat]
    intro p i j h
    exact mul_le_mul_left' (measure_mono <| mono p h) _
  _ ≤ ⨆ n : ℕ, ((rs.map c).restrict {a | (rs.map c) a ≤ f n a}).lintegral μ :=
    by
    refine' iSup_mono fun n => _
    rw [restrict_lintegral _ (h_meas n)]
    · refine' le_of_eq (Finset.sum_congr rfl fun r _ => _)
      congr 2 with a
      refine' and_congr_right _
      simp (config := { contextual := true })
  _ ≤ ⨆ n, ∫⁻ a, f n a ∂μ := by
    refine' iSup_mono fun n => _
    rw [← SimpleFunc.lintegral_eq_lintegral]
    refine' lintegral_mono fun a => _
    simp only [map_apply] at h_meas 
    simp only [coe_map, restrict_apply _ (h_meas _), (· ∘ ·)]
    exact indicator_apply_le id
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ↑r * SimpleFunc.lintegral (SimpleFunc.map c s) μ =
    ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r})
[PROOFSTEP]
rw [← const_mul_lintegral, eq_rs, SimpleFunc.lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r}) =
    ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a})
[PROOFSTEP]
simp only [(eq _).symm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝¹ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
x : ℝ≥0∞
x✝ : x ∈ SimpleFunc.range (SimpleFunc.map c rs)
⊢ x * ↑↑μ (⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {x} ∩ {a | x ≤ f n a}) =
    ⨆ (n : ℕ), x * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {x} ∩ {a | x ≤ f n a})
[PROOFSTEP]
rw [measure_iUnion_eq_iSup (directed_of_sup <| mono x), ENNReal.mul_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ∑ r in SimpleFunc.range (SimpleFunc.map c rs), ⨆ (n : ℕ), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) =
    ⨆ (n : ℕ), ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a})
[PROOFSTEP]
rw [ENNReal.finset_sum_iSup_nat]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ∀ (a : ℝ≥0∞), Monotone fun n => a * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {a} ∩ {a_1 | a ≤ f n a_1})
[PROOFSTEP]
intro p i j h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
p : ℝ≥0∞
i j : ℕ
h : i ≤ j
⊢ (fun n => p * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a})) i ≤
    (fun n => p * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a})) j
[PROOFSTEP]
exact mul_le_mul_left' (measure_mono <| mono p h) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ⨆ (n : ℕ), ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) ≤
    ⨆ (n : ℕ), SimpleFunc.lintegral (restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) μ
[PROOFSTEP]
refine' iSup_mono fun n => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
⊢ ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) ≤
    SimpleFunc.lintegral (restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) μ
[PROOFSTEP]
rw [restrict_lintegral _ (h_meas n)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
⊢ ∑ r in SimpleFunc.range (SimpleFunc.map c rs), r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) ≤
    ∑ r in SimpleFunc.range (SimpleFunc.map c rs),
      r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | ↑(SimpleFunc.map c rs) a ≤ f n a})
[PROOFSTEP]
refine' le_of_eq (Finset.sum_congr rfl fun r _ => _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝¹ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r✝ : ℝ≥0
right✝ ha✝ : ↑r✝ < 1
ha : r✝ < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r✝ * a) s
eq_rs : const α ↑r✝ * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
r : ℝ≥0∞
x✝ : r ∈ SimpleFunc.range (SimpleFunc.map c rs)
⊢ r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}) =
    r * ↑↑μ (↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | ↑(SimpleFunc.map c rs) a ≤ f n a})
[PROOFSTEP]
congr 2 with a
[GOAL]
case e_a.e_a.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝¹ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r✝ : ℝ≥0
right✝ ha✝ : ↑r✝ < 1
ha : r✝ < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r✝ * a) s
eq_rs : const α ↑r✝ * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
r : ℝ≥0∞
x✝ : r ∈ SimpleFunc.range (SimpleFunc.map c rs)
a : α
⊢ a ∈ ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a} ↔
    a ∈ ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
[PROOFSTEP]
refine' and_congr_right _
[GOAL]
case e_a.e_a.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝¹ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r✝ : ℝ≥0
right✝ ha✝ : ↑r✝ < 1
ha : r✝ < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r✝ * a) s
eq_rs : const α ↑r✝ * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
r : ℝ≥0∞
x✝ : r ∈ SimpleFunc.range (SimpleFunc.map c rs)
a : α
⊢ a ∈ ↑(SimpleFunc.map c rs) ⁻¹' {r} → (a ∈ {a | r ≤ f n a} ↔ a ∈ {a | ↑(SimpleFunc.map c rs) a ≤ f n a})
[PROOFSTEP]
simp (config := { contextual := true })
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
⊢ ⨆ (n : ℕ), SimpleFunc.lintegral (restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) μ ≤
    ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
refine' iSup_mono fun n => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
⊢ SimpleFunc.lintegral (restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) μ ≤ ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
rw [← SimpleFunc.lintegral_eq_lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
⊢ ∫⁻ (a : α), ↑(restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) a ∂μ ≤ ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
refine' lintegral_mono fun a => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(SimpleFunc.map c rs) a ≤ f n a}
n : ℕ
a : α
⊢ ↑(restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) a ≤ f n a
[PROOFSTEP]
simp only [map_apply] at h_meas 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(r * ↑s a) ≤ f n a}
n : ℕ
a : α
⊢ ↑(restrict (SimpleFunc.map c rs) {a | ↑(SimpleFunc.map c rs) a ≤ f n a}) a ≤ f n a
[PROOFSTEP]
simp only [coe_map, restrict_apply _ (h_meas _), (· ∘ ·)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : Monotone f
c : ℝ≥0 → ℝ≥0∞ := ENNReal.some
F : α → ℝ≥0∞ := fun a => ⨆ (n : ℕ), f n a
x✝ : Measurable F
s : α →ₛ ℝ≥0
hsf : ∀ (x : α), ↑(↑s x) ≤ ⨆ (n : ℕ), f n x
r : ℝ≥0
right✝ ha✝ : ↑r < 1
ha : r < 1
rs : α →ₛ ℝ≥0 := SimpleFunc.map (fun a => r * a) s
eq_rs : const α ↑r * SimpleFunc.map c s = SimpleFunc.map c rs
eq : ∀ (p : ℝ≥0∞), ↑(SimpleFunc.map c rs) ⁻¹' {p} = ⋃ (n : ℕ), ↑(SimpleFunc.map c rs) ⁻¹' {p} ∩ {a | p ≤ f n a}
mono : ∀ (r : ℝ≥0∞), Monotone fun n => ↑(SimpleFunc.map c rs) ⁻¹' {r} ∩ {a | r ≤ f n a}
h_meas : ∀ (n : ℕ), MeasurableSet {a | ↑(r * ↑s a) ≤ f n a}
n : ℕ
a : α
⊢ indicator {a | ↑(r * ↑s a) ≤ f n a} (fun x => ↑(r * ↑s x)) a ≤ f n a
[PROOFSTEP]
exact indicator_apply_le id
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
⊢ ∫⁻ (a : α), ⨆ (n : ℕ), f n a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
simp_rw [← iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
let p : α → (ℕ → ℝ≥0∞) → Prop := fun _ f' => Monotone f'
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have hp : ∀ᵐ x ∂μ, p x fun i => f i x := h_mono
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
have h_ae_seq_mono : Monotone (aeSeq hf p) := by
  intro n m hnm x
  by_cases hx : x ∈ aeSeqSet hf p
  · exact aeSeq.prop_of_mem_aeSeqSet hf hx hnm
  · simp only [aeSeq, hx, if_false]
    exact le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
⊢ Monotone (aeSeq hf p)
[PROOFSTEP]
intro n m hnm x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
n m : ℕ
hnm : n ≤ m
x : α
⊢ aeSeq hf p n x ≤ aeSeq hf p m x
[PROOFSTEP]
by_cases hx : x ∈ aeSeqSet hf p
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
n m : ℕ
hnm : n ≤ m
x : α
hx : x ∈ aeSeqSet hf p
⊢ aeSeq hf p n x ≤ aeSeq hf p m x
[PROOFSTEP]
exact aeSeq.prop_of_mem_aeSeqSet hf hx hnm
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
n m : ℕ
hnm : n ≤ m
x : α
hx : ¬x ∈ aeSeqSet hf p
⊢ aeSeq hf p n x ≤ aeSeq hf p m x
[PROOFSTEP]
simp only [aeSeq, hx, if_false]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
n m : ℕ
hnm : n ≤ m
x : α
hx : ¬x ∈ aeSeqSet hf p
⊢ Nonempty.some (_ : Nonempty ℝ≥0∞) ≤ Nonempty.some (_ : Nonempty ℝ≥0∞)
[PROOFSTEP]
exact le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_mono : Monotone (aeSeq hf p)
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
rw [lintegral_congr_ae (aeSeq.iSup hf hp).symm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_mono : Monotone (aeSeq hf p)
⊢ ∫⁻ (a : α), iSup (fun n => aeSeq hf (fun x => p x) n) a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
simp_rw [iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_mono : Monotone (aeSeq hf p)
⊢ ∫⁻ (a : α), ⨆ (i : ℕ), aeSeq hf (fun x f' => Monotone f') i a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
rw [@lintegral_iSup _ _ μ _ (aeSeq.measurable hf p) h_ae_seq_mono]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_mono : Monotone (aeSeq hf p)
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), aeSeq hf p n a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
congr
[GOAL]
case e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
p : α → (ℕ → ℝ≥0∞) → Prop := fun x f' => Monotone f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_mono : Monotone (aeSeq hf p)
⊢ (fun n => ∫⁻ (a : α), aeSeq hf p n a ∂μ) = fun n => ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
exact funext fun n => lintegral_congr_ae (aeSeq.aeSeq_n_eq_fun_n_ae hf hp n)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (∫⁻ (x : α), F x ∂μ))
[PROOFSTEP]
have : Monotone fun n => ∫⁻ x, f n x ∂μ := fun i j hij => lintegral_mono_ae (h_mono.mono fun x hx => hx hij)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (∫⁻ (x : α), F x ∂μ))
[PROOFSTEP]
suffices key : ∫⁻ x, F x ∂μ = ⨆ n, ∫⁻ x, f n x ∂μ
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
key : ∫⁻ (x : α), F x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (∫⁻ (x : α), F x ∂μ))
[PROOFSTEP]
rw [key]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
key : ∫⁻ (x : α), F x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ
⊢ Tendsto (fun n => ∫⁻ (x : α), f n x ∂μ) atTop (𝓝 (⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ))
[PROOFSTEP]
exact tendsto_atTop_iSup this
[GOAL]
case key
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ ∫⁻ (x : α), F x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), f n x ∂μ
[PROOFSTEP]
rw [← lintegral_iSup' hf h_mono]
[GOAL]
case key
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ ∫⁻ (x : α), F x ∂μ = ∫⁻ (a : α), ⨆ (n : ℕ), f n a ∂μ
[PROOFSTEP]
refine' lintegral_congr_ae _
[GOAL]
case key
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
F : α → ℝ≥0∞
hf : ∀ (n : ℕ), AEMeasurable (f n)
h_mono : ∀ᵐ (x : α) ∂μ, Monotone fun n => f n x
h_tendsto : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (F x))
this : Monotone fun n => ∫⁻ (x : α), f n x ∂μ
⊢ (fun x => F x) =ᵐ[μ] fun a => ⨆ (n : ℕ), f n a
[PROOFSTEP]
filter_upwards [h_mono, h_tendsto] with _ hx_mono hx_tendsto using
  tendsto_nhds_unique hx_tendsto (tendsto_atTop_iSup hx_mono)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), ⨆ (n : ℕ), ↑(eapprox f n) a ∂μ
[PROOFSTEP]
congr
[GOAL]
case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun a => f a) = fun a => ⨆ (n : ℕ), ↑(eapprox f n) a
[PROOFSTEP]
ext a
[GOAL]
case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ f a = ⨆ (n : ℕ), ↑(eapprox f n) a
[PROOFSTEP]
rw [iSup_eapprox_apply f hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), ⨆ (n : ℕ), ↑(eapprox f n) a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), ↑(eapprox f n) a ∂μ
[PROOFSTEP]
rw [lintegral_iSup]
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ (n : ℕ), Measurable fun a => ↑(eapprox f n) a
[PROOFSTEP]
measurability
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ Monotone fun n a => ↑(eapprox f n) a
[PROOFSTEP]
intro i j h
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
i j : ℕ
h : i ≤ j
⊢ (fun n a => ↑(eapprox f n) a) i ≤ (fun n a => ↑(eapprox f n) a) j
[PROOFSTEP]
exact monotone_eapprox f h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), ↑(eapprox f n) a ∂μ = ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
congr
[GOAL]
case e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun n => ∫⁻ (a : α), ↑(eapprox f n) a ∂μ) = fun n => SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
ext n
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
n : ℕ
⊢ ∫⁻ (a : α), ↑(eapprox f n) a ∂μ = SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
rw [(eapprox f n).lintegral_eq_lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ δ, δ > 0 ∧ ∀ (s : Set α), ↑↑μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
[PROOFSTEP]
rcases exists_between hε.bot_lt with ⟨ε₂, hε₂0 : 0 < ε₂, hε₂ε⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
⊢ ∃ δ, δ > 0 ∧ ∀ (s : Set α), ↑↑μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
[PROOFSTEP]
rcases exists_between hε₂0 with ⟨ε₁, hε₁0, hε₁₂⟩
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
⊢ ∃ δ, δ > 0 ∧ ∀ (s : Set α), ↑↑μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
[PROOFSTEP]
rcases exists_simpleFunc_forall_lintegral_sub_lt_of_pos h hε₁0.ne' with ⟨φ, _, hφ⟩
[GOAL]
case intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
⊢ ∃ δ, δ > 0 ∧ ∀ (s : Set α), ↑↑μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
[PROOFSTEP]
rcases φ.exists_forall_le with ⟨C, hC⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
⊢ ∃ δ, δ > 0 ∧ ∀ (s : Set α), ↑↑μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
[PROOFSTEP]
use(ε₂ - ε₁) / C, ENNReal.div_pos_iff.2 ⟨(tsub_pos_iff_lt.2 hε₁₂).ne', ENNReal.coe_ne_top⟩
[GOAL]
case right
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
⊢ ∀ (s : Set α), ↑↑μ s < (ε₂ - ε₁) / ↑C → ∫⁻ (x : α) in s, f x ∂μ < ε
[PROOFSTEP]
refine' fun s hs => lt_of_le_of_lt _ hε₂ε
[GOAL]
case right
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
⊢ ∫⁻ (x : α) in s, f x ∂μ ≤ ε₂
[PROOFSTEP]
simp only [lintegral_eq_nnreal, iSup_le_iff]
[GOAL]
case right
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
⊢ ∀ (i : α →ₛ ℝ≥0),
    (∀ (x : α), ↑(↑i x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) (Measure.restrict μ s) ≤ ε₂
[PROOFSTEP]
intro ψ hψ
[GOAL]
case right
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some ψ) (Measure.restrict μ s) ≤ ε₂
[PROOFSTEP]
calc
  (map (↑) ψ).lintegral (μ.restrict s) ≤
      (map (↑) φ).lintegral (μ.restrict s) + (map (↑) (ψ - φ)).lintegral (μ.restrict s) :=
    by
    rw [← SimpleFunc.add_lintegral, ← SimpleFunc.map_add @ENNReal.coe_add]
    refine' SimpleFunc.lintegral_mono (fun x => _) le_rfl
    simp only [add_tsub_eq_max, le_max_right, coe_map, Function.comp_apply, SimpleFunc.coe_add, SimpleFunc.coe_sub,
      Pi.add_apply, Pi.sub_apply, WithTop.coe_max (φ x) (ψ x), ENNReal.some]
  _ ≤ (map (↑) φ).lintegral (μ.restrict s) + ε₁ :=
    by
    refine' add_le_add le_rfl (le_trans _ (hφ _ hψ).le)
    exact SimpleFunc.lintegral_mono le_rfl Measure.restrict_le_self
  _ ≤ (SimpleFunc.const α (C : ℝ≥0∞)).lintegral (μ.restrict s) + ε₁ :=
    (add_le_add (SimpleFunc.lintegral_mono (fun x => by exact coe_le_coe.2 (hC x)) le_rfl) le_rfl)
  _ = C * μ s + ε₁ := by
    simp only [← SimpleFunc.lintegral_eq_lintegral, coe_const, lintegral_const, Measure.restrict_apply,
      MeasurableSet.univ, univ_inter, Function.const]
  _ ≤ C * ((ε₂ - ε₁) / C) + ε₁ := by gcongr
  _ ≤ ε₂ - ε₁ + ε₁ := by gcongr; apply mul_div_le
  _ = ε₂ := tsub_add_cancel_of_le hε₁₂.le
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some ψ) (Measure.restrict μ s) ≤
    SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) (Measure.restrict μ s) +
      SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) (Measure.restrict μ s)
[PROOFSTEP]
rw [← SimpleFunc.add_lintegral, ← SimpleFunc.map_add @ENNReal.coe_add]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some ψ) (Measure.restrict μ s) ≤
    SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (φ + (ψ - φ))) (Measure.restrict μ s)
[PROOFSTEP]
refine' SimpleFunc.lintegral_mono (fun x => _) le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
x : α
⊢ ↑(SimpleFunc.map ENNReal.some ψ) x ≤ ↑(SimpleFunc.map ENNReal.some (φ + (ψ - φ))) x
[PROOFSTEP]
simp only [add_tsub_eq_max, le_max_right, coe_map, Function.comp_apply, SimpleFunc.coe_add, SimpleFunc.coe_sub,
  Pi.add_apply, Pi.sub_apply, WithTop.coe_max (φ x) (ψ x), ENNReal.some]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) (Measure.restrict μ s) +
      SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) (Measure.restrict μ s) ≤
    SimpleFunc.lintegral (SimpleFunc.map ENNReal.some φ) (Measure.restrict μ s) + ε₁
[PROOFSTEP]
refine' add_le_add le_rfl (le_trans _ (hφ _ hψ).le)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) (Measure.restrict μ s) ≤
    SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ
[PROOFSTEP]
exact SimpleFunc.lintegral_mono le_rfl Measure.restrict_le_self
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
x : α
⊢ ↑(SimpleFunc.map ENNReal.some φ) x ≤ ↑(const α ↑C) x
[PROOFSTEP]
exact coe_le_coe.2 (hC x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ SimpleFunc.lintegral (const α ↑C) (Measure.restrict μ s) + ε₁ = ↑C * ↑↑μ s + ε₁
[PROOFSTEP]
simp only [← SimpleFunc.lintegral_eq_lintegral, coe_const, lintegral_const, Measure.restrict_apply, MeasurableSet.univ,
  univ_inter, Function.const]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ ↑C * ↑↑μ s + ε₁ ≤ ↑C * ((ε₂ - ε₁) / ↑C) + ε₁
[PROOFSTEP]
gcongr
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ ↑C * ((ε₂ - ε₁) / ↑C) + ε₁ ≤ ε₂ - ε₁ + ε₁
[PROOFSTEP]
gcongr
[GOAL]
case bc
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
ε₂ : ℝ≥0∞
hε₂0 : 0 < ε₂
hε₂ε : ε₂ < ε
ε₁ : ℝ≥0∞
hε₁0 : 0 < ε₁
hε₁₂ : ε₁ < ε₂
φ : α →ₛ ℝ≥0
left✝ : ∀ (x : α), ↑(↑φ x) ≤ f x
hφ : ∀ (ψ : α →ₛ ℝ≥0), (∀ (x : α), ↑(↑ψ x) ≤ f x) → SimpleFunc.lintegral (SimpleFunc.map ENNReal.some (ψ - φ)) μ < ε₁
C : ℝ≥0
hC : ∀ (x : α), ↑φ x ≤ C
s : Set α
hs : ↑↑μ s < (ε₂ - ε₁) / ↑C
ψ : α →ₛ ℝ≥0
hψ : ∀ (x : α), ↑(↑ψ x) ≤ f x
⊢ ↑C * ((ε₂ - ε₁) / ↑C) ≤ ε₂ - ε₁
[PROOFSTEP]
apply mul_div_le
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : Tendsto (↑↑μ ∘ s) l (𝓝 0)
⊢ Tendsto (fun i => ∫⁻ (x : α) in s i, f x ∂μ) l (𝓝 0)
[PROOFSTEP]
simp only [ENNReal.nhds_zero, tendsto_iInf, tendsto_principal, mem_Iio, ← pos_iff_ne_zero] at hl ⊢
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (↑↑μ ∘ s) a < i
⊢ ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < i
[PROOFSTEP]
intro ε ε0
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (↑↑μ ∘ s) a < i
ε : ℝ≥0∞
ε0 : 0 < ε
⊢ ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < ε
[PROOFSTEP]
rcases exists_pos_set_lintegral_lt_of_measure_lt h ε0.ne' with ⟨δ, δ0, hδ⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (↑↑μ ∘ s) a < i
ε : ℝ≥0∞
ε0 : 0 < ε
δ : ℝ≥0∞
δ0 : δ > 0
hδ : ∀ (s : Set α), ↑↑μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
⊢ ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < ε
[PROOFSTEP]
exact (hl δ δ0).mono fun i => hδ _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ ≤ ∫⁻ (a : α), f a + g a ∂μ
[PROOFSTEP]
simp only [lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
⊢ (⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => f a), SimpleFunc.lintegral g μ) +
      ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => g a), SimpleFunc.lintegral g_1 μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f a + g a), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
refine'
  ENNReal.biSup_add_biSup_le' (p := fun h : α →ₛ ℝ≥0∞ => h ≤ f) (q := fun h : α →ₛ ℝ≥0∞ => h ≤ g) ⟨0, zero_le f⟩
    ⟨0, zero_le g⟩ fun f' hf' g' hg' => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
f' : α →ₛ ℝ≥0∞
hf' : (fun h => ↑h ≤ f) f'
g' : α →ₛ ℝ≥0∞
hg' : (fun h => ↑h ≤ g) g'
⊢ SimpleFunc.lintegral f' μ + SimpleFunc.lintegral g' μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f a + g a), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
exact le_iSup₂_of_le (f' + g') (add_le_add hf' hg') (add_lintegral _ _).ge
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), (⨆ (n : ℕ), ↑(eapprox f n) a) + ⨆ (n : ℕ), ↑(eapprox g n) a ∂μ
[PROOFSTEP]
simp only [iSup_eapprox_apply, hf, hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (a : α), (⨆ (n : ℕ), ↑(eapprox f n) a) + ⨆ (n : ℕ), ↑(eapprox g n) a ∂μ =
    ∫⁻ (a : α), ⨆ (n : ℕ), (↑(eapprox f n) + ↑(eapprox g n)) a ∂μ
[PROOFSTEP]
congr
[GOAL]
case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ (fun a => (⨆ (n : ℕ), ↑(eapprox f n) a) + ⨆ (n : ℕ), ↑(eapprox g n) a) = fun a =>
    ⨆ (n : ℕ), (↑(eapprox f n) + ↑(eapprox g n)) a
[PROOFSTEP]
funext a
[GOAL]
case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
a : α
⊢ (⨆ (n : ℕ), ↑(eapprox f n) a) + ⨆ (n : ℕ), ↑(eapprox g n) a = ⨆ (n : ℕ), (↑(eapprox f n) + ↑(eapprox g n)) a
[PROOFSTEP]
rw [ENNReal.iSup_add_iSup_of_monotone]
[GOAL]
case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
a : α
⊢ ⨆ (a_1 : ℕ), ↑(eapprox f a_1) a + ↑(eapprox g a_1) a = ⨆ (n : ℕ), (↑(eapprox f n) + ↑(eapprox g n)) a
[PROOFSTEP]
rfl
[GOAL]
case e_f.h.hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
a : α
⊢ Monotone fun n => ↑(eapprox f n) a
[PROOFSTEP]
intro i j h
[GOAL]
case e_f.h.hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
a : α
i j : ℕ
h : i ≤ j
⊢ (fun n => ↑(eapprox f n) a) i ≤ (fun n => ↑(eapprox f n) a) j
[PROOFSTEP]
exact monotone_eapprox _ h a
[GOAL]
case e_f.h.hg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
a : α
⊢ Monotone fun n => ↑(eapprox g n) a
[PROOFSTEP]
intro i j h
[GOAL]
case e_f.h.hg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
a : α
i j : ℕ
h : i ≤ j
⊢ (fun n => ↑(eapprox g n) a) i ≤ (fun n => ↑(eapprox g n) a) j
[PROOFSTEP]
exact monotone_eapprox _ h a
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (a : α), ⨆ (n : ℕ), (↑(eapprox f n) + ↑(eapprox g n)) a ∂μ =
    ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) μ + SimpleFunc.lintegral (eapprox g n) μ
[PROOFSTEP]
rw [lintegral_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), (↑(eapprox f n) + ↑(eapprox g n)) a ∂μ =
    ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) μ + SimpleFunc.lintegral (eapprox g n) μ
[PROOFSTEP]
congr
[GOAL]
case e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ (fun n => ∫⁻ (a : α), (↑(eapprox f n) + ↑(eapprox g n)) a ∂μ) = fun n =>
    SimpleFunc.lintegral (eapprox f n) μ + SimpleFunc.lintegral (eapprox g n) μ
[PROOFSTEP]
funext n
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
n : ℕ
⊢ ∫⁻ (a : α), (↑(eapprox f n) + ↑(eapprox g n)) a ∂μ =
    SimpleFunc.lintegral (eapprox f n) μ + SimpleFunc.lintegral (eapprox g n) μ
[PROOFSTEP]
rw [← SimpleFunc.add_lintegral, ← SimpleFunc.lintegral_eq_lintegral]
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
n : ℕ
⊢ ∫⁻ (a : α), (↑(eapprox f n) + ↑(eapprox g n)) a ∂μ = ∫⁻ (a : α), ↑(eapprox f n + eapprox g n) a ∂μ
[PROOFSTEP]
rfl
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ∀ (n : ℕ), Measurable fun a => (↑(eapprox f n) + ↑(eapprox g n)) a
[PROOFSTEP]
measurability
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ Monotone fun n a => (↑(eapprox f n) + ↑(eapprox g n)) a
[PROOFSTEP]
intro i j h a
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
i j : ℕ
h : i ≤ j
a : α
⊢ (fun n a => (↑(eapprox f n) + ↑(eapprox g n)) a) i a ≤ (fun n a => (↑(eapprox f n) + ↑(eapprox g n)) a) j a
[PROOFSTEP]
exact add_le_add (monotone_eapprox _ h _) (monotone_eapprox _ h _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) μ + SimpleFunc.lintegral (eapprox g n) μ =
    (⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) μ) + ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox g n) μ
[PROOFSTEP]
refine' (ENNReal.iSup_add_iSup_of_monotone _ _).symm
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ Monotone fun n => SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
intro i j h
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
i j : ℕ
h : i ≤ j
⊢ (fun n => SimpleFunc.lintegral (eapprox f n) μ) i ≤ (fun n => SimpleFunc.lintegral (eapprox f n) μ) j
[PROOFSTEP]
exact SimpleFunc.lintegral_mono (monotone_eapprox _ h) (le_refl μ)
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ Monotone fun n => SimpleFunc.lintegral (eapprox g n) μ
[PROOFSTEP]
intro i j h
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
i j : ℕ
h : i ≤ j
⊢ (fun n => SimpleFunc.lintegral (eapprox g n) μ) i ≤ (fun n => SimpleFunc.lintegral (eapprox g n) μ) j
[PROOFSTEP]
exact SimpleFunc.lintegral_mono (monotone_eapprox _ h) (le_refl μ)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ (⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) μ) + ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox g n) μ =
    ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rw [lintegral_eq_iSup_eapprox_lintegral hf, lintegral_eq_iSup_eapprox_lintegral hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
refine' le_antisymm _ (le_lintegral_add _ _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a + g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rcases exists_measurable_le_lintegral_eq μ fun a => f a + g a with ⟨φ, hφm, hφ_le, hφ_eq⟩
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ fun a => f a + g a
hφ_eq : ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (a : α), f a + g a ∂μ ≤ ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
calc
  ∫⁻ a, f a + g a ∂μ = ∫⁻ a, φ a ∂μ := hφ_eq
  _ ≤ ∫⁻ a, f a + (φ a - f a) ∂μ := (lintegral_mono fun a => le_add_tsub)
  _ = ∫⁻ a, f a ∂μ + ∫⁻ a, φ a - f a ∂μ := (lintegral_add_aux hf (hφm.sub hf))
  _ ≤ ∫⁻ a, f a ∂μ + ∫⁻ a, g a ∂μ := add_le_add_left (lintegral_mono fun a => tsub_le_iff_left.2 <| hφ_le a) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rw [lintegral_congr_ae hf.ae_eq_mk, ← lintegral_add_left hf.measurable_mk,
  lintegral_congr_ae (hf.ae_eq_mk.add (ae_eq_refl g))]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
⊢ ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
simpa only [add_comm] using lintegral_add_left' hg f
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂c • μ = c * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
simp only [lintegral, iSup_subtype', SimpleFunc.lintegral_smul, ENNReal.mul_iSup, smul_eq_mul]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ∫⁻ (a : α), f a ∂Measure.sum μ = ∑' (i : ι), ∫⁻ (a : α), f a ∂μ i
[PROOFSTEP]
simp only [lintegral, iSup_subtype', SimpleFunc.lintegral_sum, ENNReal.tsum_eq_iSup_sum]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ⨆ (x : { i // ↑i ≤ fun a => f a }) (s : Finset ι), ∑ i in s, SimpleFunc.lintegral (↑x) (μ i) =
    ⨆ (s : Finset ι), ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
[PROOFSTEP]
rw [iSup_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ⨆ (j : Finset ι) (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in j, SimpleFunc.lintegral (↑i) (μ i_1) =
    ⨆ (s : Finset ι), ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
[PROOFSTEP]
congr
[GOAL]
case e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ (fun j => ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in j, SimpleFunc.lintegral (↑i) (μ i_1)) = fun s =>
    ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
[PROOFSTEP]
funext s
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
s : Finset ι
⊢ ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in s, SimpleFunc.lintegral (↑i) (μ i_1) =
    ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
[PROOFSTEP]
induction' s using Finset.induction_on with i s hi hs
[GOAL]
case e_s.h.empty
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in ∅, SimpleFunc.lintegral (↑i) (μ i_1) =
    ∑ a in ∅, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
[PROOFSTEP]
apply bot_unique
[GOAL]
case e_s.h.empty.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in ∅, SimpleFunc.lintegral (↑i) (μ i_1) ≤ ⊥
[PROOFSTEP]
simp
[GOAL]
case e_s.h.insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
i : ι
s : Finset ι
hi : ¬i ∈ s
hs :
  ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in s, SimpleFunc.lintegral (↑i) (μ i_1) =
    ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
⊢ ⨆ (i_1 : { i // ↑i ≤ fun a => f a }), ∑ i in insert i s, SimpleFunc.lintegral (↑i_1) (μ i) =
    ∑ a in insert i s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
[PROOFSTEP]
simp only [Finset.sum_insert hi, ← hs]
[GOAL]
case e_s.h.insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
i : ι
s : Finset ι
hi : ¬i ∈ s
hs :
  ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in s, SimpleFunc.lintegral (↑i) (μ i_1) =
    ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
⊢ ⨆ (i_1 : { i // ↑i ≤ fun a => f a }),
      SimpleFunc.lintegral (↑i_1) (μ i) + ∑ i in s, SimpleFunc.lintegral (↑i_1) (μ i) =
    (⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ i)) +
      ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in s, SimpleFunc.lintegral (↑i) (μ i_1)
[PROOFSTEP]
refine' (ENNReal.iSup_add_iSup _).symm
[GOAL]
case e_s.h.insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
i : ι
s : Finset ι
hi : ¬i ∈ s
hs :
  ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in s, SimpleFunc.lintegral (↑i) (μ i_1) =
    ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
⊢ ∀ (i_1 j : { i // ↑i ≤ fun a => f a }),
    ∃ k,
      SimpleFunc.lintegral (↑i_1) (μ i) + ∑ i in s, SimpleFunc.lintegral (↑j) (μ i) ≤
        SimpleFunc.lintegral (↑k) (μ i) + ∑ i in s, SimpleFunc.lintegral (↑k) (μ i)
[PROOFSTEP]
intro φ ψ
[GOAL]
case e_s.h.insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
ι : Type u_5
f : α → ℝ≥0∞
μ : ι → Measure α
i : ι
s : Finset ι
hi : ¬i ∈ s
hs :
  ⨆ (i : { i // ↑i ≤ fun a => f a }), ∑ i_1 in s, SimpleFunc.lintegral (↑i) (μ i_1) =
    ∑ a in s, ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (↑x) (μ a)
φ ψ : { i // ↑i ≤ fun a => f a }
⊢ ∃ k,
    SimpleFunc.lintegral (↑φ) (μ i) + ∑ i in s, SimpleFunc.lintegral (↑ψ) (μ i) ≤
      SimpleFunc.lintegral (↑k) (μ i) + ∑ i in s, SimpleFunc.lintegral (↑k) (μ i)
[PROOFSTEP]
exact
  ⟨⟨φ ⊔ ψ, fun x => sup_le (φ.2 x) (ψ.2 x)⟩,
    add_le_add (SimpleFunc.lintegral_mono le_sup_left le_rfl)
      (Finset.sum_le_sum fun j _ => SimpleFunc.lintegral_mono le_sup_right le_rfl)⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν✝ : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
μ ν : Measure α
⊢ ∫⁻ (a : α), f a ∂(μ + ν) = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), f a ∂ν
[PROOFSTEP]
simpa [tsum_fintype] using lintegral_sum_measure f fun b => cond b μ ν
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
ι : Type u_5
m : MeasurableSpace α
s : Finset ι
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ∫⁻ (a : α), f a ∂∑ i in s, μ i = ∑ i in s, ∫⁻ (a : α), f a ∂μ i
[PROOFSTEP]
rw [← Measure.sum_coe_finset, lintegral_sum_measure, ← Finset.tsum_subtype']
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
ι : Type u_5
m : MeasurableSpace α
s : Finset ι
f : α → ℝ≥0∞
μ : ι → Measure α
⊢ ∑' (i : { x // x ∈ s }), ∫⁻ (a : α), f a ∂μ ↑i = ∑' (x : ↑↑s), ∫⁻ (a : α), f a ∂μ ↑x
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ ν : Measure α
m : MeasurableSpace α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂0 ≤ ⊥
[PROOFSTEP]
simp [lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α) in ∅, f x ∂μ = 0
[PROOFSTEP]
rw [Measure.restrict_empty, lintegral_zero_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
rw [Measure.restrict_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
f : α → ℝ≥0∞
hs' : ↑↑μ s = 0
⊢ ∫⁻ (x : α) in s, f x ∂μ = 0
[PROOFSTEP]
convert lintegral_zero_measure _
[GOAL]
case h.e'_2.h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
f : α → ℝ≥0∞
hs' : ↑↑μ s = 0
⊢ Measure.restrict μ s = 0
[PROOFSTEP]
exact Measure.restrict_eq_zero.2 hs'
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Finset β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), b ∈ s → AEMeasurable (f b)
⊢ ∫⁻ (a : α), ∑ b in s, f b a ∂μ = ∑ b in s, ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
induction' s using Finset.induction_on with a s has ih
[GOAL]
case empty
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Finset β
f : β → α → ℝ≥0∞
hf✝ : ∀ (b : β), b ∈ s → AEMeasurable (f b)
hf : ∀ (b : β), b ∈ ∅ → AEMeasurable (f b)
⊢ ∫⁻ (a : α), ∑ b in ∅, f b a ∂μ = ∑ b in ∅, ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
simp
[GOAL]
case insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s✝ : Finset β
f : β → α → ℝ≥0∞
hf✝ : ∀ (b : β), b ∈ s✝ → AEMeasurable (f b)
a : β
s : Finset β
has : ¬a ∈ s
ih : (∀ (b : β), b ∈ s → AEMeasurable (f b)) → ∫⁻ (a : α), ∑ b in s, f b a ∂μ = ∑ b in s, ∫⁻ (a : α), f b a ∂μ
hf : ∀ (b : β), b ∈ insert a s → AEMeasurable (f b)
⊢ ∫⁻ (a_1 : α), ∑ b in insert a s, f b a_1 ∂μ = ∑ b in insert a s, ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
simp only [Finset.sum_insert has]
[GOAL]
case insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s✝ : Finset β
f : β → α → ℝ≥0∞
hf✝ : ∀ (b : β), b ∈ s✝ → AEMeasurable (f b)
a : β
s : Finset β
has : ¬a ∈ s
ih : (∀ (b : β), b ∈ s → AEMeasurable (f b)) → ∫⁻ (a : α), ∑ b in s, f b a ∂μ = ∑ b in s, ∫⁻ (a : α), f b a ∂μ
hf : ∀ (b : β), b ∈ insert a s → AEMeasurable (f b)
⊢ ∫⁻ (a_1 : α), f a a_1 + ∑ b in s, f b a_1 ∂μ = ∫⁻ (a_1 : α), f a a_1 ∂μ + ∑ b in s, ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
rw [Finset.forall_mem_insert] at hf 
[GOAL]
case insert
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s✝ : Finset β
f : β → α → ℝ≥0∞
hf✝ : ∀ (b : β), b ∈ s✝ → AEMeasurable (f b)
a : β
s : Finset β
has : ¬a ∈ s
ih : (∀ (b : β), b ∈ s → AEMeasurable (f b)) → ∫⁻ (a : α), ∑ b in s, f b a ∂μ = ∑ b in s, ∫⁻ (a : α), f b a ∂μ
hf : AEMeasurable (f a) ∧ ∀ (x : β), x ∈ s → AEMeasurable (f x)
⊢ ∫⁻ (a_1 : α), f a a_1 + ∑ b in s, f b a_1 ∂μ = ∫⁻ (a_1 : α), f a a_1 ∂μ + ∑ b in s, ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
rw [lintegral_add_left' hf.1, ih hf.2]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), r * f a ∂μ = ∫⁻ (a : α), ⨆ (n : ℕ), ↑(const α r * eapprox f n) a ∂μ
[PROOFSTEP]
congr
[GOAL]
case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun a => r * f a) = fun a => ⨆ (n : ℕ), ↑(const α r * eapprox f n) a
[PROOFSTEP]
funext a
[GOAL]
case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ r * f a = ⨆ (n : ℕ), ↑(const α r * eapprox f n) a
[PROOFSTEP]
rw [← iSup_eapprox_apply f hf, ENNReal.mul_iSup]
[GOAL]
case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ ⨆ (i : ℕ), r * ↑(eapprox f i) a = ⨆ (n : ℕ), ↑(const α r * eapprox f n) a
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), ⨆ (n : ℕ), ↑(const α r * eapprox f n) a ∂μ = ⨆ (n : ℕ), r * SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
rw [lintegral_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), ↑(const α r * eapprox f n) a ∂μ = ⨆ (n : ℕ), r * SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
congr
[GOAL]
case e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun n => ∫⁻ (a : α), ↑(const α r * eapprox f n) a ∂μ) = fun n => r * SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
funext n
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
n : ℕ
⊢ ∫⁻ (a : α), ↑(const α r * eapprox f n) a ∂μ = r * SimpleFunc.lintegral (eapprox f n) μ
[PROOFSTEP]
rw [← SimpleFunc.const_mul_lintegral, ← SimpleFunc.lintegral_eq_lintegral]
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ (n : ℕ), Measurable fun a => ↑(const α r * eapprox f n) a
[PROOFSTEP]
intro n
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
n : ℕ
⊢ Measurable fun a => ↑(const α r * eapprox f n) a
[PROOFSTEP]
exact SimpleFunc.measurable _
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ Monotone fun n a => ↑(const α r * eapprox f n) a
[PROOFSTEP]
intro i j h a
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
i j : ℕ
h : i ≤ j
a : α
⊢ (fun n a => ↑(const α r * eapprox f n) a) i a ≤ (fun n a => ↑(const α r * eapprox f n) a) j a
[PROOFSTEP]
exact mul_le_mul_left' (monotone_eapprox _ h _) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ⨆ (n : ℕ), r * SimpleFunc.lintegral (eapprox f n) μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [← ENNReal.mul_iSup, lintegral_eq_iSup_eapprox_lintegral hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : AEMeasurable f
⊢ ∫⁻ (a : α), r * f a ∂μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
have A : ∫⁻ a, f a ∂μ = ∫⁻ a, hf.mk f a ∂μ := lintegral_congr_ae hf.ae_eq_mk
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : AEMeasurable f
A : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), AEMeasurable.mk f hf a ∂μ
⊢ ∫⁻ (a : α), r * f a ∂μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
have B : ∫⁻ a, r * f a ∂μ = ∫⁻ a, r * hf.mk f a ∂μ := lintegral_congr_ae (EventuallyEq.fun_comp hf.ae_eq_mk _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : AEMeasurable f
A : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), AEMeasurable.mk f hf a ∂μ
B : ∫⁻ (a : α), r * f a ∂μ = ∫⁻ (a : α), r * AEMeasurable.mk f hf a ∂μ
⊢ ∫⁻ (a : α), r * f a ∂μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [A, B, lintegral_const_mul _ hf.measurable_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
⊢ r * ∫⁻ (a : α), f a ∂μ ≤ ∫⁻ (a : α), r * f a ∂μ
[PROOFSTEP]
rw [lintegral, ENNReal.mul_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
⊢ ⨆ (i : α →ₛ ℝ≥0∞), r * ⨆ (_ : ↑i ≤ fun a => f a), SimpleFunc.lintegral i μ ≤ ∫⁻ (a : α), r * f a ∂μ
[PROOFSTEP]
refine' iSup_le fun s => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : α →ₛ ℝ≥0∞
⊢ r * ⨆ (_ : ↑s ≤ fun a => f a), SimpleFunc.lintegral s μ ≤ ∫⁻ (a : α), r * f a ∂μ
[PROOFSTEP]
rw [ENNReal.mul_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : α →ₛ ℝ≥0∞
⊢ ⨆ (_ : ↑s ≤ fun a => f a), r * SimpleFunc.lintegral s μ ≤ ∫⁻ (a : α), r * f a ∂μ
[PROOFSTEP]
simp only [iSup_le_iff]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : α →ₛ ℝ≥0∞
⊢ (↑s ≤ fun a => f a) → r * SimpleFunc.lintegral s μ ≤ ∫⁻ (a : α), r * f a ∂μ
[PROOFSTEP]
intro hs
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : α →ₛ ℝ≥0∞
hs : ↑s ≤ fun a => f a
⊢ r * SimpleFunc.lintegral s μ ≤ ∫⁻ (a : α), r * f a ∂μ
[PROOFSTEP]
rw [← SimpleFunc.const_mul_lintegral, lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : α →ₛ ℝ≥0∞
hs : ↑s ≤ fun a => f a
⊢ SimpleFunc.lintegral (const α r * s) μ ≤ ⨆ (g : α →ₛ ℝ≥0∞) (_ : ↑g ≤ fun a => r * f a), SimpleFunc.lintegral g μ
[PROOFSTEP]
refine' le_iSup_of_le (const α r * s) (le_iSup_of_le (fun x => _) le_rfl)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : α →ₛ ℝ≥0∞
hs : ↑s ≤ fun a => f a
x : α
⊢ ↑(const α r * s) x ≤ (fun a => r * f a) x
[PROOFSTEP]
exact mul_le_mul_left' (hs x) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
⊢ ∫⁻ (a : α), r * f a ∂μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
by_cases h : r = 0
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : r = 0
⊢ ∫⁻ (a : α), r * f a ∂μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
simp [h]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
⊢ ∫⁻ (a : α), r * f a ∂μ = r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
apply le_antisymm _ (lintegral_const_mul_le r f)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
⊢ ∫⁻ (a : α), r * f a ∂μ ≤ r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
have rinv : r * r⁻¹ = 1 := ENNReal.mul_inv_cancel h hr
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
rinv : r * r⁻¹ = 1
⊢ ∫⁻ (a : α), r * f a ∂μ ≤ r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
have rinv' : r⁻¹ * r = 1 := by
  rw [mul_comm]
  exact rinv
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
rinv : r * r⁻¹ = 1
⊢ r⁻¹ * r = 1
[PROOFSTEP]
rw [mul_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
rinv : r * r⁻¹ = 1
⊢ r * r⁻¹ = 1
[PROOFSTEP]
exact rinv
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
rinv : r * r⁻¹ = 1
rinv' : r⁻¹ * r = 1
⊢ ∫⁻ (a : α), r * f a ∂μ ≤ r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
have := lintegral_const_mul_le (μ := μ) r⁻¹ fun x => r * f x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
rinv : r * r⁻¹ = 1
rinv' : r⁻¹ * r = 1
this : r⁻¹ * ∫⁻ (a : α), r * f a ∂μ ≤ ∫⁻ (a : α), r⁻¹ * (r * f a) ∂μ
⊢ ∫⁻ (a : α), r * f a ∂μ ≤ r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
simp [(mul_assoc _ _ _).symm, rinv'] at this 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
h : ¬r = 0
rinv : r * r⁻¹ = 1
rinv' : r⁻¹ * r = 1
this : r⁻¹ * ∫⁻ (a : α), r * f a ∂μ ≤ ∫⁻ (a : α), f a ∂μ
⊢ ∫⁻ (a : α), r * f a ∂μ ≤ r * ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
simpa [(mul_assoc _ _ _).symm, rinv] using mul_le_mul_left' this r
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), f a * r ∂μ = (∫⁻ (a : α), f a ∂μ) * r
[PROOFSTEP]
simp_rw [mul_comm, lintegral_const_mul r hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : AEMeasurable f
⊢ ∫⁻ (a : α), f a * r ∂μ = (∫⁻ (a : α), f a ∂μ) * r
[PROOFSTEP]
simp_rw [mul_comm, lintegral_const_mul'' r hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
⊢ (∫⁻ (a : α), f a ∂μ) * r ≤ ∫⁻ (a : α), f a * r ∂μ
[PROOFSTEP]
simp_rw [mul_comm, lintegral_const_mul_le r f]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
⊢ ∫⁻ (a : α), f a * r ∂μ = (∫⁻ (a : α), f a ∂μ) * r
[PROOFSTEP]
simp_rw [mul_comm, lintegral_const_mul' r f hr]
[GOAL]
α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
β : Type u_5
inst✝ : MeasurableSpace β
ν : Measure β
f : α → ℝ≥0∞
g : β → ℝ≥0∞
hf : AEMeasurable f
hg : AEMeasurable g
⊢ ∫⁻ (x : α), ∫⁻ (y : β), f x * g y ∂ν ∂μ = (∫⁻ (x : α), f x ∂μ) * ∫⁻ (y : β), g y ∂ν
[PROOFSTEP]
simp [lintegral_const_mul'' _ hg, lintegral_mul_const'' _ hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f f' : α → β
h✝ : f =ᵐ[μ] f'
g : β → ℝ≥0∞
a : α
h : f a = f' a
⊢ (fun a => g (f a)) a = (fun a => g (f' a)) a
[PROOFSTEP]
dsimp only
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f f' : α → β
h✝ : f =ᵐ[μ] f'
g : β → ℝ≥0∞
a : α
h : f a = f' a
⊢ g (f a) = g (f' a)
[PROOFSTEP]
rw [h]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f₁ f₁' : α → β
f₂ f₂' : α → γ
h₁✝ : f₁ =ᵐ[μ] f₁'
h₂✝ : f₂ =ᵐ[μ] f₂'
g : β → γ → ℝ≥0∞
x✝ : α
h₂ : f₂ x✝ = f₂' x✝
h₁ : f₁ x✝ = f₁' x✝
⊢ (fun a => g (f₁ a) (f₂ a)) x✝ = (fun a => g (f₁' a) (f₂' a)) x✝
[PROOFSTEP]
dsimp only
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f₁ f₁' : α → β
f₂ f₂' : α → γ
h₁✝ : f₁ =ᵐ[μ] f₁'
h₂✝ : f₂ =ᵐ[μ] f₂'
g : β → γ → ℝ≥0∞
x✝ : α
h₂ : f₂ x✝ = f₂' x✝
h₁ : f₁ x✝ = f₁' x✝
⊢ g (f₁ x✝) (f₂ x✝) = g (f₁' x✝) (f₂' x✝)
[PROOFSTEP]
rw [h₁, h₂]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α), indicator s f a ∂μ = ∫⁻ (a : α) in s, f a ∂μ
[PROOFSTEP]
simp only [lintegral, ← restrict_lintegral_eq_lintegral_restrict _ hs, iSup_subtype']
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ⨆ (x : { i // ↑i ≤ fun a => indicator s f a }), SimpleFunc.lintegral (↑x) μ =
    ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (restrict (↑x) s) μ
[PROOFSTEP]
apply le_antisymm
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ⨆ (x : { i // ↑i ≤ fun a => indicator s f a }), SimpleFunc.lintegral (↑x) μ ≤
    ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (restrict (↑x) s) μ
[PROOFSTEP]
refine' iSup_mono' (Subtype.forall.2 fun φ hφ => _)
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ⨆ (x : { i // ↑i ≤ fun a => f a }), SimpleFunc.lintegral (restrict (↑x) s) μ ≤
    ⨆ (x : { i // ↑i ≤ fun a => indicator s f a }), SimpleFunc.lintegral (↑x) μ
[PROOFSTEP]
refine' iSup_mono' (Subtype.forall.2 fun φ hφ => _)
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => indicator s f a
⊢ ∃ i', SimpleFunc.lintegral (↑{ val := φ, property := hφ }) μ ≤ SimpleFunc.lintegral (restrict (↑i') s) μ
[PROOFSTEP]
refine' ⟨⟨φ, le_trans hφ (indicator_le_self _ _)⟩, _⟩
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => indicator s f a
⊢ SimpleFunc.lintegral (↑{ val := φ, property := hφ }) μ ≤
    SimpleFunc.lintegral (restrict (↑{ val := φ, property := (_ : ↑φ ≤ fun a => f a) }) s) μ
[PROOFSTEP]
refine' SimpleFunc.lintegral_mono (fun x => _) le_rfl
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => indicator s f a
x : α
⊢ ↑↑{ val := φ, property := hφ } x ≤ ↑(restrict (↑{ val := φ, property := (_ : ↑φ ≤ fun a => f a) }) s) x
[PROOFSTEP]
by_cases hx : x ∈ s
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => indicator s f a
x : α
hx : x ∈ s
⊢ ↑↑{ val := φ, property := hφ } x ≤ ↑(restrict (↑{ val := φ, property := (_ : ↑φ ≤ fun a => f a) }) s) x
[PROOFSTEP]
simp [hx, hs, le_refl]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => indicator s f a
x : α
hx : ¬x ∈ s
⊢ ↑↑{ val := φ, property := hφ } x ≤ ↑(restrict (↑{ val := φ, property := (_ : ↑φ ≤ fun a => f a) }) s) x
[PROOFSTEP]
apply le_trans (hφ x)
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => indicator s f a
x : α
hx : ¬x ∈ s
⊢ (fun a => indicator s f a) x ≤ ↑(restrict (↑{ val := φ, property := (_ : ↑φ ≤ fun a => f a) }) s) x
[PROOFSTEP]
simp [hx, hs, le_refl]
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
⊢ ∃ i', SimpleFunc.lintegral (restrict (↑{ val := φ, property := hφ }) s) μ ≤ SimpleFunc.lintegral (↑i') μ
[PROOFSTEP]
refine' ⟨⟨φ.restrict s, fun x => _⟩, le_rfl⟩
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
φ : α →ₛ ℝ≥0∞
hφ : ↑φ ≤ fun a => f a
x : α
⊢ ↑(restrict φ s) x ≤ (fun a => indicator s f a) x
[PROOFSTEP]
simp [hφ x, hs, indicator_le_indicator]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : NullMeasurableSet s
⊢ ∫⁻ (a : α), indicator s f a ∂μ = ∫⁻ (a : α) in s, f a ∂μ
[PROOFSTEP]
rw [← lintegral_congr_ae (indicator_ae_eq_of_ae_eq_set hs.toMeasurable_ae_eq),
  lintegral_indicator _ (measurableSet_toMeasurable _ _), Measure.restrict_congr_set hs.toMeasurable_ae_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : NullMeasurableSet s
c : ℝ≥0∞
⊢ ∫⁻ (a : α), indicator s (fun x => c) a ∂μ = c * ↑↑μ s
[PROOFSTEP]
rw [lintegral_indicator₀ _ hs, set_lintegral_const]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
r : ℝ≥0∞
⊢ ∫⁻ (x : α) in {x | f x = r}, f x ∂μ = r * ↑↑μ {x | f x = r}
[PROOFSTEP]
have : ∀ᵐ x ∂μ, x ∈ {x | f x = r} → f x = r := ae_of_all μ fun _ hx => hx
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
r : ℝ≥0∞
this : ∀ᵐ (x : α) ∂μ, x ∈ {x | f x = r} → f x = r
⊢ ∫⁻ (x : α) in {x | f x = r}, f x ∂μ = r * ↑↑μ {x | f x = r}
[PROOFSTEP]
rw [set_lintegral_congr_fun _ this]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
r : ℝ≥0∞
this : ∀ᵐ (x : α) ∂μ, x ∈ {x | f x = r} → f x = r
⊢ ∫⁻ (x : α) in {x | f x = r}, r ∂μ = r * ↑↑μ {x | f x = r}
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
r : ℝ≥0∞
this : ∀ᵐ (x : α) ∂μ, x ∈ {x | f x = r} → f x = r
⊢ MeasurableSet {x | f x = r}
[PROOFSTEP]
rw [lintegral_const, Measure.restrict_apply MeasurableSet.univ, Set.univ_inter]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
r : ℝ≥0∞
this : ∀ᵐ (x : α) ∂μ, x ∈ {x | f x = r} → f x = r
⊢ MeasurableSet {x | f x = r}
[PROOFSTEP]
exact hf (measurableSet_singleton r)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂μ + ε * ↑↑μ {x | f x + ε ≤ g x} ≤ ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
rcases exists_measurable_le_lintegral_eq μ f with ⟨φ, hφm, hφ_le, hφ_eq⟩
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (a : α), f a ∂μ + ε * ↑↑μ {x | f x + ε ≤ g x} ≤ ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
calc
  ∫⁻ x, f x ∂μ + ε * μ {x | f x + ε ≤ g x} = ∫⁻ x, φ x ∂μ + ε * μ {x | f x + ε ≤ g x} := by rw [hφ_eq]
  _ ≤ ∫⁻ x, φ x ∂μ + ε * μ {x | φ x + ε ≤ g x} := by
    gcongr
    exact measure_mono fun x => (add_le_add_right (hφ_le _) _).trans
  _ = ∫⁻ x, φ x + indicator {x | φ x + ε ≤ g x} (fun _ => ε) x ∂μ :=
    by
    rw [lintegral_add_left hφm, lintegral_indicator₀, set_lintegral_const]
    exact measurableSet_le (hφm.nullMeasurable.measurable'.add_const _) hg.nullMeasurable
  _ ≤ ∫⁻ x, g x ∂μ := lintegral_mono_ae (hle.mono fun x hx₁ => ?_)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (x : α), f x ∂μ + ε * ↑↑μ {x | f x + ε ≤ g x} = ∫⁻ (x : α), φ x ∂μ + ε * ↑↑μ {x | f x + ε ≤ g x}
[PROOFSTEP]
rw [hφ_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (x : α), φ x ∂μ + ε * ↑↑μ {x | f x + ε ≤ g x} ≤ ∫⁻ (x : α), φ x ∂μ + ε * ↑↑μ {x | φ x + ε ≤ g x}
[PROOFSTEP]
gcongr
[GOAL]
case bc.bc
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ↑↑μ {x | f x + ε ≤ g x} ≤ ↑↑μ {x | φ x + ε ≤ g x}
[PROOFSTEP]
exact measure_mono fun x => (add_le_add_right (hφ_le _) _).trans
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ ∫⁻ (x : α), φ x ∂μ + ε * ↑↑μ {x | φ x + ε ≤ g x} = ∫⁻ (x : α), φ x + indicator {x | φ x + ε ≤ g x} (fun x => ε) x ∂μ
[PROOFSTEP]
rw [lintegral_add_left hφm, lintegral_indicator₀, set_lintegral_const]
[GOAL]
case hs
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
⊢ NullMeasurableSet {x | φ x + ε ≤ g x}
[PROOFSTEP]
exact measurableSet_le (hφm.nullMeasurable.measurable'.add_const _) hg.nullMeasurable
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
x : α
hx₁ : f x ≤ g x
⊢ φ x + indicator {x | φ x + ε ≤ g x} (fun x => ε) x ≤ g x
[PROOFSTEP]
simp only [indicator_apply]
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
x : α
hx₁ : f x ≤ g x
⊢ (φ x + if x ∈ {x | φ x + ε ≤ g x} then ε else 0) ≤ g x
[PROOFSTEP]
split_ifs with hx₂
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
x : α
hx₁ : f x ≤ g x
hx₂ : x ∈ {x | φ x + ε ≤ g x}
⊢ φ x + ε ≤ g x
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hle : f ≤ᵐ[μ] g
hg : AEMeasurable g
ε : ℝ≥0∞
φ : α → ℝ≥0∞
hφm : Measurable φ
hφ_le : φ ≤ f
hφ_eq : ∫⁻ (a : α), f a ∂μ = ∫⁻ (a : α), φ a ∂μ
x : α
hx₁ : f x ≤ g x
hx₂ : ¬x ∈ {x | φ x + ε ≤ g x}
⊢ φ x + 0 ≤ g x
[PROOFSTEP]
exacts [hx₂, (add_zero _).trans_le <| (hφ_le x).trans hx₁]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
ε : ℝ≥0∞
⊢ ε * ↑↑μ {x | ε ≤ f x} ≤ ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
simpa only [lintegral_zero, zero_add] using
  lintegral_add_mul_meas_add_le_le_lintegral (ae_of_all _ fun x => zero_le (f x)) hf ε
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
hμf : ↑↑μ {x | f x = ⊤} ≠ 0
⊢ ⊤ = ⊤ * ↑↑μ {x | ⊤ ≤ f x}
[PROOFSTEP]
simp [mul_eq_top, hμf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : AEMeasurable f
hμf : ↑↑μ {x | x ∈ s ∧ f x = ⊤} ≠ 0
⊢ ↑↑μ {x | x ∈ s ∧ f x = ⊤} ≤ ↑↑(Measure.restrict μ s) {x | f x = ⊤}
[PROOFSTEP]
rw [← setOf_inter_eq_sep]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : AEMeasurable f
hμf : ↑↑μ {x | x ∈ s ∧ f x = ⊤} ≠ 0
⊢ ↑↑μ ({a | f a = ⊤} ∩ s) ≤ ↑↑(Measure.restrict μ s) {x | f x = ⊤}
[PROOFSTEP]
exact Measure.le_restrict_apply _ _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
ε : ℝ≥0∞
hε : ε ≠ 0
hε' : ε ≠ ⊤
⊢ ↑↑μ {x | ε ≤ f x} * ε ≤ ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [mul_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
ε : ℝ≥0∞
hε : ε ≠ 0
hε' : ε ≠ ⊤
⊢ ε * ↑↑μ {x | ε ≤ f x} ≤ ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
exact mul_meas_ge_le_lintegral₀ hf ε
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
⊢ f =ᵐ[μ] g
[PROOFSTEP]
have : ∀ n : ℕ, ∀ᵐ x ∂μ, g x < f x + (n : ℝ≥0∞)⁻¹ := by
  intro n
  simp only [ae_iff, not_lt]
  have : ∫⁻ x, f x ∂μ + (↑n)⁻¹ * μ {x : α | f x + (n : ℝ≥0∞)⁻¹ ≤ g x} ≤ ∫⁻ x, f x ∂μ :=
    (lintegral_add_mul_meas_add_le_le_lintegral hfg hg n⁻¹).trans hgf
  rw [(ENNReal.cancel_of_ne hf).add_le_iff_nonpos_right, nonpos_iff_eq_zero, mul_eq_zero] at this 
  exact this.resolve_left (ENNReal.inv_ne_zero.2 (ENNReal.nat_ne_top _))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
⊢ ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
n : ℕ
⊢ ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
[PROOFSTEP]
simp only [ae_iff, not_lt]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
n : ℕ
⊢ ↑↑μ {a | f a + (↑n)⁻¹ ≤ g a} = 0
[PROOFSTEP]
have : ∫⁻ x, f x ∂μ + (↑n)⁻¹ * μ {x : α | f x + (n : ℝ≥0∞)⁻¹ ≤ g x} ≤ ∫⁻ x, f x ∂μ :=
  (lintegral_add_mul_meas_add_le_le_lintegral hfg hg n⁻¹).trans hgf
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
n : ℕ
this : ∫⁻ (x : α), f x ∂μ + (↑n)⁻¹ * ↑↑μ {x | f x + (↑n)⁻¹ ≤ g x} ≤ ∫⁻ (x : α), f x ∂μ
⊢ ↑↑μ {a | f a + (↑n)⁻¹ ≤ g a} = 0
[PROOFSTEP]
rw [(ENNReal.cancel_of_ne hf).add_le_iff_nonpos_right, nonpos_iff_eq_zero, mul_eq_zero] at this 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
n : ℕ
this : (↑n)⁻¹ = 0 ∨ ↑↑μ {x | f x + (↑n)⁻¹ ≤ g x} = 0
⊢ ↑↑μ {a | f a + (↑n)⁻¹ ≤ g a} = 0
[PROOFSTEP]
exact this.resolve_left (ENNReal.inv_ne_zero.2 (ENNReal.nat_ne_top _))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
this : ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
⊢ f =ᵐ[μ] g
[PROOFSTEP]
refine' hfg.mp ((ae_all_iff.2 this).mono fun x hlt hle => hle.antisymm _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
this : ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
x : α
hlt : ∀ (i : ℕ), g x < f x + (↑i)⁻¹
hle : f x ≤ g x
⊢ g x ≤ f x
[PROOFSTEP]
suffices : Tendsto (fun n : ℕ => f x + (n : ℝ≥0∞)⁻¹) atTop (𝓝 (f x))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
x : α
hlt : ∀ (i : ℕ), g x < f x + (↑i)⁻¹
hle : f x ≤ g x
this : Tendsto (fun n => f x + (↑n)⁻¹) atTop (𝓝 (f x))
⊢ g x ≤ f x
case this
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
this : ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
x : α
hlt : ∀ (i : ℕ), g x < f x + (↑i)⁻¹
hle : f x ≤ g x
⊢ Tendsto (fun n => f x + (↑n)⁻¹) atTop (𝓝 (f x))
[PROOFSTEP]
exact ge_of_tendsto' this fun i => (hlt i).le
[GOAL]
case this
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hfg : f ≤ᵐ[μ] g
hf : ∫⁻ (x : α), f x ∂μ ≠ ⊤
hg : AEMeasurable g
hgf : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
this : ∀ (n : ℕ), ∀ᵐ (x : α) ∂μ, g x < f x + (↑n)⁻¹
x : α
hlt : ∀ (i : ℕ), g x < f x + (↑i)⁻¹
hle : f x ≤ g x
⊢ Tendsto (fun n => f x + (↑n)⁻¹) atTop (𝓝 (f x))
[PROOFSTEP]
simpa only [inv_top, add_zero] using tendsto_const_nhds.add (ENNReal.tendsto_inv_iff.2 ENNReal.tendsto_nat_nhds_top)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
⊢ ∫⁻ (x : α), 0 ∂μ ≠ ⊤
[PROOFSTEP]
simp [lintegral_zero, zero_ne_top]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
⊢ 0 < ∫⁻ (a : α), f a ∂μ ↔ 0 < ↑↑μ (support f)
[PROOFSTEP]
simp [pos_iff_ne_zero, hf, Filter.EventuallyEq, ae_iff, Function.support]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
a : α
ha : ∀ (n : ℕ), g n a = f n a
⊢ (fun a => ⨆ (n : ℕ), f n a) a = (fun a => ⨆ (n : ℕ), g n a) a
[PROOFSTEP]
simp only [ha]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : a ∈ s
⊢ g n a ≤ g (n + 1) a
[PROOFSTEP]
simp [if_pos h]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : ¬a ∈ s
⊢ g n a ≤ g (n + 1) a
[PROOFSTEP]
simp only [if_neg h]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : ¬a ∈ s
⊢ f n a ≤ f (n + 1) a
[PROOFSTEP]
have := hs.1
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : ¬a ∈ s
this : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s
⊢ f n a ≤ f (n + 1) a
[PROOFSTEP]
rw [subset_def] at this 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : ¬a ∈ s
this : ∀ (x : α), x ∈ {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} → x ∈ s
⊢ f n a ≤ f (n + 1) a
[PROOFSTEP]
have := mt (this a) h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : ¬a ∈ s
this✝ : ∀ (x : α), x ∈ {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} → x ∈ s
this : ¬a ∈ {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a}
⊢ f n a ≤ f (n + 1) a
[PROOFSTEP]
simp only [Classical.not_not, mem_setOf_eq] at this 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
n : ℕ
a : α
h : ¬a ∈ s
this✝ : ∀ (x : α), x ∈ {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} → x ∈ s
this : ∀ (i : ℕ), f i a ≤ f (Nat.succ i) a
⊢ f n a ≤ f (n + 1) a
[PROOFSTEP]
exact this n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h_mono : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, f n a ≤ f (Nat.succ n) a
s : Set α
hs : {a | ¬∀ (i : ℕ), f i a ≤ f (Nat.succ i) a} ⊆ s ∧ MeasurableSet s ∧ ↑↑μ s = 0
g : ℕ → α → ℝ≥0∞ := fun n a => if a ∈ s then 0 else f n a
g_eq_f : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), g n a = f n a
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), g n a ∂μ = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
simp only [lintegral_congr_ae (g_eq_f.mono fun _a ha => ha _)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
hg_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
h_le : g ≤ᵐ[μ] f
⊢ ∫⁻ (a : α), f a - g a ∂μ = ∫⁻ (a : α), f a ∂μ - ∫⁻ (a : α), g a ∂μ
[PROOFSTEP]
refine' ENNReal.eq_sub_of_add_eq hg_fin _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
hg_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
h_le : g ≤ᵐ[μ] f
⊢ ∫⁻ (a : α), f a - g a ∂μ + ∫⁻ (a : α), g a ∂μ = ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [← lintegral_add_right' _ hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
hg_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
h_le : g ≤ᵐ[μ] f
⊢ ∫⁻ (a : α), f a - g a + g a ∂μ = ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
exact lintegral_congr_ae (h_le.mono fun x hx => tsub_add_cancel_of_le hx)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f
⊢ ∫⁻ (x : α), g x ∂μ - ∫⁻ (x : α), f x ∂μ ≤ ∫⁻ (x : α), g x - f x ∂μ
[PROOFSTEP]
rw [tsub_le_iff_right]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f
⊢ ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), g x - f x ∂μ + ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
by_cases hfi : ∫⁻ x, f x ∂μ = ∞
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f
hfi : ∫⁻ (x : α), f x ∂μ = ⊤
⊢ ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), g x - f x ∂μ + ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
rw [hfi, add_top]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f
hfi : ∫⁻ (x : α), f x ∂μ = ⊤
⊢ ∫⁻ (x : α), g x ∂μ ≤ ⊤
[PROOFSTEP]
exact le_top
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f
hfi : ¬∫⁻ (x : α), f x ∂μ = ⊤
⊢ ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), g x - f x ∂μ + ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
rw [← lintegral_add_right' _ hf]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f
hfi : ¬∫⁻ (x : α), f x ∂μ = ⊤
⊢ ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (a : α), g a - f a + f a ∂μ
[PROOFSTEP]
exact lintegral_mono fun x => le_tsub_add
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h_le : f ≤ᵐ[μ] g
h : ∃ᵐ (x : α) ∂μ, f x ≠ g x
⊢ ∫⁻ (x : α), f x ∂μ < ∫⁻ (x : α), g x ∂μ
[PROOFSTEP]
contrapose! h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h_le : f ≤ᵐ[μ] g
h : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
⊢ ¬∃ᵐ (x : α) ∂μ, f x ≠ g x
[PROOFSTEP]
simp only [not_frequently, Ne.def, Classical.not_not]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h_le : f ≤ᵐ[μ] g
h : ∫⁻ (x : α), g x ∂μ ≤ ∫⁻ (x : α), f x ∂μ
⊢ ∀ᵐ (x : α) ∂μ, f x = g x
[PROOFSTEP]
exact ae_eq_of_ae_le_of_lintegral_le h_le hfi hg h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hμ : μ ≠ 0
hg : AEMeasurable g
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, f x < g x
⊢ ∫⁻ (x : α), f x ∂μ < ∫⁻ (x : α), g x ∂μ
[PROOFSTEP]
rw [Ne.def, ← Measure.measure_univ_eq_zero] at hμ 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hμ : ¬↑↑μ univ = 0
hg : AEMeasurable g
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, f x < g x
⊢ ∫⁻ (x : α), f x ∂μ < ∫⁻ (x : α), g x ∂μ
[PROOFSTEP]
refine' lintegral_strict_mono_of_ae_le_of_ae_lt_on hg hfi (ae_le_of_ae_lt h) hμ _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hμ : ¬↑↑μ univ = 0
hg : AEMeasurable g
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, f x < g x
⊢ ∀ᵐ (x : α) ∂μ, x ∈ univ → f x < g x
[PROOFSTEP]
simpa using h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hsm : MeasurableSet s
hs : ↑↑μ s ≠ 0
hg : Measurable g
hfi : ∫⁻ (x : α) in s, f x ∂μ ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, x ∈ s → f x < g x
⊢ Measure.restrict μ s ≠ 0
[PROOFSTEP]
simp [hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h_meas : ∀ (n : ℕ), Measurable (f n)
h_mono✝ : ∀ (n : ℕ), f (Nat.succ n) ≤ᵐ[μ] f n
h_fin : ∫⁻ (a : α), f 0 a ∂μ ≠ ⊤
fn_le_f0 : ∫⁻ (a : α), ⨅ (n : ℕ), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
fn_le_f0' : ⨅ (n : ℕ), ∫⁻ (a : α), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
h_mono : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
n : ℕ
a : α
h : ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
⊢ f n a ≤ f 0 a
[PROOFSTEP]
induction' n with n ih
[GOAL]
case zero
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h_meas : ∀ (n : ℕ), Measurable (f n)
h_mono✝ : ∀ (n : ℕ), f (Nat.succ n) ≤ᵐ[μ] f n
h_fin : ∫⁻ (a : α), f 0 a ∂μ ≠ ⊤
fn_le_f0 : ∫⁻ (a : α), ⨅ (n : ℕ), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
fn_le_f0' : ⨅ (n : ℕ), ∫⁻ (a : α), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
h_mono : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
a : α
h : ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
⊢ f Nat.zero a ≤ f 0 a
[PROOFSTEP]
{exact le_rfl
}
[GOAL]
case zero
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h_meas : ∀ (n : ℕ), Measurable (f n)
h_mono✝ : ∀ (n : ℕ), f (Nat.succ n) ≤ᵐ[μ] f n
h_fin : ∫⁻ (a : α), f 0 a ∂μ ≠ ⊤
fn_le_f0 : ∫⁻ (a : α), ⨅ (n : ℕ), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
fn_le_f0' : ⨅ (n : ℕ), ∫⁻ (a : α), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
h_mono : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
a : α
h : ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
⊢ f Nat.zero a ≤ f 0 a
[PROOFSTEP]
exact le_rfl
[GOAL]
case succ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h_meas : ∀ (n : ℕ), Measurable (f n)
h_mono✝ : ∀ (n : ℕ), f (Nat.succ n) ≤ᵐ[μ] f n
h_fin : ∫⁻ (a : α), f 0 a ∂μ ≠ ⊤
fn_le_f0 : ∫⁻ (a : α), ⨅ (n : ℕ), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
fn_le_f0' : ⨅ (n : ℕ), ∫⁻ (a : α), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
h_mono : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
a : α
h : ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
n : ℕ
ih : f n a ≤ f 0 a
⊢ f (Nat.succ n) a ≤ f 0 a
[PROOFSTEP]
{exact le_trans (h n) ih
}
[GOAL]
case succ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h_meas : ∀ (n : ℕ), Measurable (f n)
h_mono✝ : ∀ (n : ℕ), f (Nat.succ n) ≤ᵐ[μ] f n
h_fin : ∫⁻ (a : α), f 0 a ∂μ ≠ ⊤
fn_le_f0 : ∫⁻ (a : α), ⨅ (n : ℕ), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
fn_le_f0' : ⨅ (n : ℕ), ∫⁻ (a : α), f n a ∂μ ≤ ∫⁻ (a : α), f 0 a ∂μ
h_mono : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
a : α
h : ∀ (n : ℕ), f (Nat.succ n) a ≤ f n a
n : ℕ
ih : f n a ≤ f 0 a
⊢ f (Nat.succ n) a ≤ f 0 a
[PROOFSTEP]
exact le_trans (h n) ih
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h_meas : ∀ (n : ℕ), AEMeasurable (f n)
⊢ ∫⁻ (a : α), liminf (fun n => f n a) atTop ∂μ = ∫⁻ (a : α), ⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n), f i a ∂μ
[PROOFSTEP]
simp only [liminf_eq_iSup_iInf_of_nat]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
⊢ ⨅ (n : ℕ), ∫⁻ (a : α), ⨆ (i : ℕ) (_ : i ≥ n), f i a ∂μ = ∫⁻ (a : α), ⨅ (n : ℕ), ⨆ (i : ℕ) (_ : i ≥ n), f i a ∂μ
[PROOFSTEP]
refine' (lintegral_iInf _ _ _).symm
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
⊢ ∀ (n : ℕ), Measurable fun a => ⨆ (i : ℕ) (_ : i ≥ n), f i a
[PROOFSTEP]
intro n
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
n : ℕ
⊢ Measurable fun a => ⨆ (i : ℕ) (_ : i ≥ n), f i a
[PROOFSTEP]
exact measurable_biSup _ (to_countable _) hf_meas
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
⊢ Antitone fun n a => ⨆ (i : ℕ) (_ : i ≥ n), f i a
[PROOFSTEP]
intro n m hnm a
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
n m : ℕ
hnm : n ≤ m
a : α
⊢ (fun n a => ⨆ (i : ℕ) (_ : i ≥ n), f i a) m a ≤ (fun n a => ⨆ (i : ℕ) (_ : i ≥ n), f i a) n a
[PROOFSTEP]
exact iSup_le_iSup_of_subset fun i hi => le_trans hnm hi
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
⊢ ∫⁻ (a : α), ⨆ (i : ℕ) (_ : i ≥ 0), f i a ∂μ ≠ ⊤
[PROOFSTEP]
refine' ne_top_of_le_ne_top h_fin (lintegral_mono_ae _)
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
⊢ ∀ᵐ (a : α) ∂μ, ⨆ (i : ℕ) (_ : i ≥ 0), f i a ≤ g a
[PROOFSTEP]
refine' (ae_all_iff.2 h_bound).mono fun n hn => _
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
n : α
hn : ∀ (i : ℕ), f i n ≤ g n
⊢ ⨆ (i : ℕ) (_ : i ≥ 0), f i n ≤ g n
[PROOFSTEP]
exact iSup_le fun i => iSup_le fun _ => hn i
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
g : α → ℝ≥0∞
hf_meas : ∀ (n : ℕ), Measurable (f n)
h_bound : ∀ (n : ℕ), f n ≤ᵐ[μ] g
h_fin : ∫⁻ (a : α), g a ∂μ ≠ ⊤
⊢ ∫⁻ (a : α), ⨅ (n : ℕ), ⨆ (i : ℕ) (_ : i ≥ n), f i a ∂μ = ∫⁻ (a : α), limsup (fun n => f n a) atTop ∂μ
[PROOFSTEP]
simp only [limsup_eq_iInf_iSup_of_nat]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ Tendsto (fun n => ∫⁻ (a : α), F n a ∂μ) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
have : ∀ n, ∫⁻ a, F n a ∂μ = ∫⁻ a, (hF_meas n).mk (F n) a ∂μ := fun n => lintegral_congr_ae (hF_meas n).ae_eq_mk
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ Tendsto (fun n => ∫⁻ (a : α), F n a ∂μ) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
simp_rw [this]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ Tendsto (fun n => ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
apply tendsto_lintegral_of_dominated_convergence bound (fun n => (hF_meas n).measurable_mk) _ h_fin
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))
[PROOFSTEP]
have : ∀ n, ∀ᵐ a ∂μ, (hF_meas n).mk (F n) a = F n a := fun n => (hF_meas n).ae_eq_mk.symm
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝ : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))
[PROOFSTEP]
have : ∀ᵐ a ∂μ, ∀ n, (hF_meas n).mk (F n) a = F n a := ae_all_iff.mpr this
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝¹ : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
this : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))
[PROOFSTEP]
filter_upwards [this, h_lim] with a H H'
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝¹ : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
this : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
a : α
H : ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
H' : Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ Tendsto (fun n => AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a) atTop (𝓝 (f a))
[PROOFSTEP]
simp_rw [H]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this✝¹ : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
this✝ : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
this : ∀ᵐ (a : α) ∂μ, ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
a : α
H : ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a = F n a
H' : Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ Tendsto (fun n => F n a) atTop (𝓝 (f a))
[PROOFSTEP]
exact H'
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
⊢ ∀ (n : ℕ), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) ≤ᵐ[μ] bound
[PROOFSTEP]
intro n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
n : ℕ
⊢ AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) ≤ᵐ[μ] bound
[PROOFSTEP]
filter_upwards [h_bound n, (hF_meas n).ae_eq_mk] with a H H'
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
F : ℕ → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ (n : ℕ), AEMeasurable (F n)
h_bound : ∀ (n : ℕ), F n ≤ᵐ[μ] bound
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
this : ∀ (n : ℕ), ∫⁻ (a : α), F n a ∂μ = ∫⁻ (a : α), AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ∂μ
n : ℕ
a : α
H : F n a ≤ bound a
H' : F n a = AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a
⊢ AEMeasurable.mk (F n) (_ : AEMeasurable (F n)) a ≤ bound a
[PROOFSTEP]
rwa [H'] at H 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
⊢ Tendsto (fun n => ∫⁻ (a : α), F n a ∂μ) l (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
rw [tendsto_iff_seq_tendsto]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
⊢ ∀ (x : ℕ → ι), Tendsto x atTop l → Tendsto ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
intro x xl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
⊢ Tendsto ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
have hxl := by
  rw [tendsto_atTop'] at xl 
  exact xl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
⊢ ?m.1156041
[PROOFSTEP]
rw [tendsto_atTop'] at xl 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl✝ : Tendsto x atTop l
xl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
⊢ ?m.1156041
[PROOFSTEP]
exact xl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
⊢ Tendsto ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
have h := inter_mem hF_meas h_bound
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
h : {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x} ∈ l
⊢ Tendsto ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
replace h := hxl _ h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
h :
  ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ Tendsto ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
rcases h with ⟨k, h⟩
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ Tendsto ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
rw [← tendsto_add_atTop_iff_nat k]
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ Tendsto (fun n => ((fun n => ∫⁻ (a : α), F n a ∂μ) ∘ x) (n + k)) atTop (𝓝 (∫⁻ (a : α), f a ∂μ))
[PROOFSTEP]
refine' tendsto_lintegral_of_dominated_convergence _ _ _ _ _
[GOAL]
case intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ α → ℝ≥0∞
[PROOFSTEP]
exact bound
[GOAL]
case intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ ∀ (n : ℕ), Measurable fun a => F (x (n + k)) a
[PROOFSTEP]
intro
[GOAL]
case intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
n✝ : ℕ
⊢ Measurable fun a => F (x (n✝ + k)) a
[PROOFSTEP]
refine' (h _ _).1
[GOAL]
case intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
n✝ : ℕ
⊢ n✝ + k ≥ k
[PROOFSTEP]
exact Nat.le_add_left _ _
[GOAL]
case intro.refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ ∀ (n : ℕ), (fun a => F (x (n + k)) a) ≤ᵐ[μ] bound
[PROOFSTEP]
intro
[GOAL]
case intro.refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
n✝ : ℕ
⊢ (fun a => F (x (n✝ + k)) a) ≤ᵐ[μ] bound
[PROOFSTEP]
refine' (h _ _).2
[GOAL]
case intro.refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
n✝ : ℕ
⊢ n✝ + k ≥ k
[PROOFSTEP]
exact Nat.le_add_left _ _
[GOAL]
case intro.refine'_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ ∫⁻ (a : α), bound a ∂μ ≠ ⊤
[PROOFSTEP]
assumption
[GOAL]
case intro.refine'_5
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
⊢ ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F (x (n + k)) a) atTop (𝓝 (f a))
[PROOFSTEP]
refine' h_lim.mono fun a h_lim => _
[GOAL]
case intro.refine'_5
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim✝ : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
a : α
h_lim : Tendsto (fun n => F n a) l (𝓝 (f a))
⊢ Tendsto (fun n => F (x (n + k)) a) atTop (𝓝 (f a))
[PROOFSTEP]
apply @Tendsto.comp _ _ _ (fun n => x (n + k)) fun n => F n a
[GOAL]
case intro.refine'_5.hg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim✝ : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
a : α
h_lim : Tendsto (fun n => F n a) l (𝓝 (f a))
⊢ Tendsto (fun n => F n a) ?intro.refine'_5.y (𝓝 (f a))
[PROOFSTEP]
assumption
[GOAL]
case intro.refine'_5.hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim✝ : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
a : α
h_lim : Tendsto (fun n => F n a) l (𝓝 (f a))
⊢ Tendsto (fun n => x (n + k)) atTop l
[PROOFSTEP]
rw [tendsto_add_atTop_iff_nat]
[GOAL]
case intro.refine'_5.hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
l : Filter ι
inst✝ : IsCountablyGenerated l
F : ι → α → ℝ≥0∞
f bound : α → ℝ≥0∞
hF_meas : ∀ᶠ (n : ι) in l, Measurable (F n)
h_bound : ∀ᶠ (n : ι) in l, ∀ᵐ (a : α) ∂μ, F n a ≤ bound a
h_fin : ∫⁻ (a : α), bound a ∂μ ≠ ⊤
h_lim✝ : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) l (𝓝 (f a))
x : ℕ → ι
xl : Tendsto x atTop l
hxl : ∀ (s : Set ι), s ∈ l → ∃ a, ∀ (b : ℕ), b ≥ a → x b ∈ s
k : ℕ
h : ∀ (b : ℕ), b ≥ k → x b ∈ {x | (fun n => Measurable (F n)) x} ∩ {x | (fun n => ∀ᵐ (a : α) ∂μ, F n a ≤ bound a) x}
a : α
h_lim : Tendsto (fun n => F n a) l (𝓝 (f a))
⊢ Tendsto x atTop l
[PROOFSTEP]
assumption
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
cases nonempty_encodable β
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
cases isEmpty_or_nonempty β
[GOAL]
case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : IsEmpty β
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
simp [iSup_of_empty]
[GOAL]
case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
inhabit β
[GOAL]
case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
have : ∀ a, ⨆ b, f b a = ⨆ n, f (h_directed.sequence f n) a :=
  by
  intro a
  refine' le_antisymm (iSup_le fun b => _) (iSup_le fun n => le_iSup (fun n => f n a) _)
  exact le_iSup_of_le (encode b + 1) (h_directed.le_sequence b a)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
⊢ ∀ (a : α), ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
[PROOFSTEP]
intro a
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
a : α
⊢ ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
[PROOFSTEP]
refine' le_antisymm (iSup_le fun b => _) (iSup_le fun n => le_iSup (fun n => f n a) _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
a : α
b : β
⊢ f b a ≤ ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
[PROOFSTEP]
exact le_iSup_of_le (encode b + 1) (h_directed.le_sequence b a)
[GOAL]
case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
this : ∀ (a : α), ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
calc
  ∫⁻ a, ⨆ b, f b a ∂μ = ∫⁻ a, ⨆ n, f (h_directed.sequence f n) a ∂μ := by simp only [this]
  _ = ⨆ n, ∫⁻ a, f (h_directed.sequence f n) a ∂μ := (lintegral_iSup (fun n => hf _) h_directed.sequence_mono)
  _ = ⨆ b, ∫⁻ a, f b a ∂μ := by
    refine' le_antisymm (iSup_le fun n => _) (iSup_le fun b => _)
    · exact le_iSup (fun b => ∫⁻ a, f b a ∂μ) _
    · exact le_iSup_of_le (encode b + 1) (lintegral_mono <| h_directed.le_sequence b)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
this : ∀ (a : α), ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ∫⁻ (a : α), ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a ∂μ
[PROOFSTEP]
simp only [this]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
this : ∀ (a : α), ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), f (Directed.sequence f h_directed n) a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
refine' le_antisymm (iSup_le fun n => _) (iSup_le fun b => _)
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
this : ∀ (a : α), ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
n : ℕ
⊢ ∫⁻ (a : α), f (Directed.sequence f h_directed n) a ∂μ ≤ ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
exact le_iSup (fun b => ∫⁻ a, f b a ∂μ) _
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), Measurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
val✝ : Encodable β
h✝ : Nonempty β
inhabited_h : Inhabited β
this : ∀ (a : α), ⨆ (b : β), f b a = ⨆ (n : ℕ), f (Directed.sequence f h_directed n) a
b : β
⊢ ∫⁻ (a : α), f b a ∂μ ≤ ⨆ (n : ℕ), ∫⁻ (a : α), f (Directed.sequence f h_directed n) a ∂μ
[PROOFSTEP]
exact le_iSup_of_le (encode b + 1) (lintegral_mono <| h_directed.le_sequence b)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
⊢ ∫⁻ (a : α), ⨆ (b : β), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
simp_rw [← iSup_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
let p : α → (β → ENNReal) → Prop := fun x f' => Directed LE.le f'
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
have hp : ∀ᵐ x ∂μ, p x fun i => f i x := by
  filter_upwards [] with x i j
  obtain ⟨z, hz₁, hz₂⟩ := h_directed i j
  exact ⟨z, hz₁ x, hz₂ x⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
⊢ ∀ᵐ (x : α) ∂μ, p x fun i => f i x
[PROOFSTEP]
filter_upwards [] with x i j
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
x : α
i j : β
⊢ ∃ z, (fun i => f i x) i ≤ (fun i => f i x) z ∧ (fun i => f i x) j ≤ (fun i => f i x) z
[PROOFSTEP]
obtain ⟨z, hz₁, hz₂⟩ := h_directed i j
[GOAL]
case h.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
x : α
i j z : β
hz₁ : f i ≤ f z
hz₂ : f j ≤ f z
⊢ ∃ z, (fun i => f i x) i ≤ (fun i => f i x) z ∧ (fun i => f i x) j ≤ (fun i => f i x) z
[PROOFSTEP]
exact ⟨z, hz₁ x, hz₂ x⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
have h_ae_seq_directed : Directed LE.le (aeSeq hf p) :=
  by
  intro b₁ b₂
  obtain ⟨z, hz₁, hz₂⟩ := h_directed b₁ b₂
  refine' ⟨z, _, _⟩ <;>
    · intro x
      by_cases hx : x ∈ aeSeqSet hf p
      · repeat' rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
        apply_rules [hz₁, hz₂]
      · simp only [aeSeq, hx, if_false]
        exact le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
⊢ Directed LE.le (aeSeq hf p)
[PROOFSTEP]
intro b₁ b₂
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ : β
⊢ ∃ z, aeSeq hf p b₁ ≤ aeSeq hf p z ∧ aeSeq hf p b₂ ≤ aeSeq hf p z
[PROOFSTEP]
obtain ⟨z, hz₁, hz₂⟩ := h_directed b₁ b₂
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
⊢ ∃ z, aeSeq hf p b₁ ≤ aeSeq hf p z ∧ aeSeq hf p b₂ ≤ aeSeq hf p z
[PROOFSTEP]
refine' ⟨z, _, _⟩
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
⊢ aeSeq hf p b₁ ≤ aeSeq hf p z
[PROOFSTEP]
intro x
[GOAL]
case intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
⊢ aeSeq hf p b₁ x ≤ aeSeq hf p z x
[PROOFSTEP]
by_cases hx : x ∈ aeSeqSet hf p
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ aeSeq hf p b₁ x ≤ aeSeq hf p z x
[PROOFSTEP]
repeat' rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ aeSeq hf p b₁ x ≤ aeSeq hf p z x
[PROOFSTEP]
rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ f b₁ x ≤ aeSeq hf p z x
[PROOFSTEP]
rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ f b₁ x ≤ f z x
[PROOFSTEP]
rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ f b₁ x ≤ f z x
[PROOFSTEP]
apply_rules [hz₁, hz₂]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : ¬x ∈ aeSeqSet hf p
⊢ aeSeq hf p b₁ x ≤ aeSeq hf p z x
[PROOFSTEP]
simp only [aeSeq, hx, if_false]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : ¬x ∈ aeSeqSet hf p
⊢ Nonempty.some (_ : Nonempty ℝ≥0∞) ≤ Nonempty.some (_ : Nonempty ℝ≥0∞)
[PROOFSTEP]
exact le_rfl
[GOAL]
case intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
⊢ aeSeq hf p b₂ ≤ aeSeq hf p z
[PROOFSTEP]
intro x
[GOAL]
case intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
⊢ aeSeq hf p b₂ x ≤ aeSeq hf p z x
[PROOFSTEP]
by_cases hx : x ∈ aeSeqSet hf p
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ aeSeq hf p b₂ x ≤ aeSeq hf p z x
[PROOFSTEP]
repeat' rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ aeSeq hf p b₂ x ≤ aeSeq hf p z x
[PROOFSTEP]
rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ f b₂ x ≤ aeSeq hf p z x
[PROOFSTEP]
rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ f b₂ x ≤ f z x
[PROOFSTEP]
rw [aeSeq.aeSeq_eq_fun_of_mem_aeSeqSet hf hx]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : x ∈ aeSeqSet hf p
⊢ f b₂ x ≤ f z x
[PROOFSTEP]
apply_rules [hz₁, hz₂]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : ¬x ∈ aeSeqSet hf p
⊢ aeSeq hf p b₂ x ≤ aeSeq hf p z x
[PROOFSTEP]
simp only [aeSeq, hx, if_false]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
b₁ b₂ z : β
hz₁ : f b₁ ≤ f z
hz₂ : f b₂ ≤ f z
x : α
hx : ¬x ∈ aeSeqSet hf p
⊢ Nonempty.some (_ : Nonempty ℝ≥0∞) ≤ Nonempty.some (_ : Nonempty ℝ≥0∞)
[PROOFSTEP]
exact le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ
[PROOFSTEP]
convert lintegral_iSup_directed_of_measurable (aeSeq.measurable hf p) h_ae_seq_directed using 1
[GOAL]
case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ = ∫⁻ (a : α), ⨆ (b : β), aeSeq hf p b a ∂?m.1165752
[PROOFSTEP]
simp_rw [← iSup_apply]
[GOAL]
case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
⊢ ∫⁻ (a : α), iSup (fun i => f i) a ∂μ =
    ∫⁻ (a : α), iSup (fun i => aeSeq hf (fun x f' => Directed LE.le f') i) a ∂?m.1165752
[PROOFSTEP]
rw [lintegral_congr_ae (aeSeq.iSup hf hp).symm]
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
⊢ ⨆ (b : β), ∫⁻ (a : α), f b a ∂μ = ⨆ (b : β), ∫⁻ (a : α), aeSeq hf p b a ∂μ
[PROOFSTEP]
congr 1
[GOAL]
case h.e'_3.e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
⊢ (fun b => ∫⁻ (a : α), f b a ∂μ) = fun b => ∫⁻ (a : α), aeSeq hf p b a ∂μ
[PROOFSTEP]
ext1 b
[GOAL]
case h.e'_3.e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
b : β
⊢ ∫⁻ (a : α), f b a ∂μ = ∫⁻ (a : α), aeSeq hf p b a ∂μ
[PROOFSTEP]
rw [lintegral_congr_ae]
[GOAL]
case h.e'_3.e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
b : β
⊢ (fun a => f b a) =ᵐ[μ] fun a => aeSeq hf p b a
[PROOFSTEP]
apply EventuallyEq.symm
[GOAL]
case h.e'_3.e_s.h.H
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (b : β), AEMeasurable (f b)
h_directed : Directed (fun x x_1 => x ≤ x_1) f
p : α → (β → ℝ≥0∞) → Prop := fun x f' => Directed LE.le f'
hp : ∀ᵐ (x : α) ∂μ, p x fun i => f i x
h_ae_seq_directed : Directed LE.le (aeSeq hf p)
b : β
⊢ (fun a => aeSeq hf p b a) =ᵐ[μ] fun a => f b a
[PROOFSTEP]
refine' aeSeq.aeSeq_n_eq_fun_n_ae hf hp _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
⊢ ∫⁻ (a : α), ∑' (i : β), f i a ∂μ = ∑' (i : β), ∫⁻ (a : α), f i a ∂μ
[PROOFSTEP]
simp only [ENNReal.tsum_eq_iSup_sum]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
⊢ ∫⁻ (a : α), ⨆ (s : Finset β), ∑ i in s, f i a ∂μ = ⨆ (s : Finset β), ∑ i in s, ∫⁻ (a : α), f i a ∂μ
[PROOFSTEP]
rw [lintegral_iSup_directed]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
⊢ ⨆ (b : Finset β), ∫⁻ (a : α), ∑ i in b, f i a ∂μ = ⨆ (s : Finset β), ∑ i in s, ∫⁻ (a : α), f i a ∂μ
[PROOFSTEP]
simp [lintegral_finset_sum' _ fun i _ => hf i]
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
⊢ ∀ (b : Finset β), AEMeasurable fun a => ∑ i in b, f i a
[PROOFSTEP]
intro b
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
b : Finset β
⊢ AEMeasurable fun a => ∑ i in b, f i a
[PROOFSTEP]
exact Finset.aemeasurable_sum _ fun i _ => hf i
[GOAL]
case h_directed
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
⊢ Directed (fun x x_1 => x ≤ x_1) fun s a => ∑ i in s, f i a
[PROOFSTEP]
intro s t
[GOAL]
case h_directed
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
s t : Finset β
⊢ ∃ z,
    (fun x x_1 => x ≤ x_1) ((fun s a => ∑ i in s, f i a) s) ((fun s a => ∑ i in s, f i a) z) ∧
      (fun x x_1 => x ≤ x_1) ((fun s a => ∑ i in s, f i a) t) ((fun s a => ∑ i in s, f i a) z)
[PROOFSTEP]
use s ∪ t
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
s t : Finset β
⊢ (fun x x_1 => x ≤ x_1) ((fun s a => ∑ i in s, f i a) s) ((fun s a => ∑ i in s, f i a) (s ∪ t)) ∧
    (fun x x_1 => x ≤ x_1) ((fun s a => ∑ i in s, f i a) t) ((fun s a => ∑ i in s, f i a) (s ∪ t))
[PROOFSTEP]
constructor
[GOAL]
case h.left
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
s t : Finset β
⊢ (fun x x_1 => x ≤ x_1) ((fun s a => ∑ i in s, f i a) s) ((fun s a => ∑ i in s, f i a) (s ∪ t))
[PROOFSTEP]
exact fun a => Finset.sum_le_sum_of_subset (Finset.subset_union_left _ _)
[GOAL]
case h.right
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
f : β → α → ℝ≥0∞
hf : ∀ (i : β), AEMeasurable (f i)
s t : Finset β
⊢ (fun x x_1 => x ≤ x_1) ((fun s a => ∑ i in s, f i a) t) ((fun s a => ∑ i in s, f i a) (s ∪ t))
[PROOFSTEP]
exact fun a => Finset.sum_le_sum_of_subset (Finset.subset_union_right _ _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
s : β → Set α
hm : ∀ (i : β), NullMeasurableSet (s i)
hd : Pairwise (AEDisjoint μ on s)
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α) in ⋃ (i : β), s i, f a ∂μ = ∑' (i : β), ∫⁻ (a : α) in s i, f a ∂μ
[PROOFSTEP]
simp only [Measure.restrict_iUnion_ae hd hm, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
t : Set β
s : β → Set α
ht : Set.Countable t
hm : ∀ (i : β), i ∈ t → NullMeasurableSet (s i)
hd : Set.Pairwise t (AEDisjoint μ on s)
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α) in ⋃ (i : β) (_ : i ∈ t), s i, f a ∂μ = ∑' (i : ↑t), ∫⁻ (a : α) in s ↑i, f a ∂μ
[PROOFSTEP]
haveI := ht.toEncodable
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
t : Set β
s : β → Set α
ht : Set.Countable t
hm : ∀ (i : β), i ∈ t → NullMeasurableSet (s i)
hd : Set.Pairwise t (AEDisjoint μ on s)
f : α → ℝ≥0∞
this : Encodable ↑t
⊢ ∫⁻ (a : α) in ⋃ (i : β) (_ : i ∈ t), s i, f a ∂μ = ∑' (i : ↑t), ∫⁻ (a : α) in s ↑i, f a ∂μ
[PROOFSTEP]
rw [biUnion_eq_iUnion, lintegral_iUnion₀ (SetCoe.forall'.1 hm) (hd.subtype _ _)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Finset β
t : β → Set α
hd : Set.Pairwise (↑s) (AEDisjoint μ on t)
hm : ∀ (b : β), b ∈ s → NullMeasurableSet (t b)
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α) in ⋃ (b : β) (_ : b ∈ s), t b, f a ∂μ = ∑ b in s, ∫⁻ (a : α) in t b, f a ∂μ
[PROOFSTEP]
simp only [← Finset.mem_coe, lintegral_biUnion₀ s.countable_toSet hm hd, ← Finset.tsum_subtype']
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
s : β → Set α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α) in ⋃ (i : β), s i, f a ∂μ ≤ ∑' (i : β), ∫⁻ (a : α) in s i, f a ∂μ
[PROOFSTEP]
rw [← lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : Countable β
s : β → Set α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α) in ⋃ (i : β), s i, f a ∂μ ≤ ∫⁻ (a : α), f a ∂sum fun i => Measure.restrict μ (s i)
[PROOFSTEP]
exact lintegral_mono' restrict_iUnion_le le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
A B : Set α
hB : MeasurableSet B
hAB : Disjoint A B
⊢ ∫⁻ (a : α) in A ∪ B, f a ∂μ = ∫⁻ (a : α) in A, f a ∂μ + ∫⁻ (a : α) in B, f a ∂μ
[PROOFSTEP]
rw [restrict_union hAB hB, lintegral_add_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s t : Set α
⊢ ∫⁻ (a : α) in s ∪ t, f a ∂μ ≤ ∫⁻ (a : α) in s, f a ∂μ + ∫⁻ (a : α) in t, f a ∂μ
[PROOFSTEP]
rw [← lintegral_add_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s t : Set α
⊢ ∫⁻ (a : α) in s ∪ t, f a ∂μ ≤ ∫⁻ (a : α), f a ∂(Measure.restrict μ s + Measure.restrict μ t)
[PROOFSTEP]
exact lintegral_mono' (restrict_union_le _ _) le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
B : Set α
f : α → ℝ≥0∞
A : Set α
hB : MeasurableSet B
⊢ ∫⁻ (x : α) in A ∩ B, f x ∂μ + ∫⁻ (x : α) in A \ B, f x ∂μ = ∫⁻ (x : α) in A, f x ∂μ
[PROOFSTEP]
rw [← lintegral_add_measure, restrict_inter_add_diff _ hB]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
A : Set α
hA : MeasurableSet A
⊢ ∫⁻ (x : α) in A, f x ∂μ + ∫⁻ (x : α) in Aᶜ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
rw [← lintegral_add_measure, Measure.restrict_add_restrict_compl hA]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (x : α), max (f x) (g x) ∂μ = ∫⁻ (x : α) in {x | f x ≤ g x}, g x ∂μ + ∫⁻ (x : α) in {x | g x < f x}, f x ∂μ
[PROOFSTEP]
have hm : MeasurableSet {x | f x ≤ g x} := measurableSet_le hf hg
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
hm : MeasurableSet {x | f x ≤ g x}
⊢ ∫⁻ (x : α), max (f x) (g x) ∂μ = ∫⁻ (x : α) in {x | f x ≤ g x}, g x ∂μ + ∫⁻ (x : α) in {x | g x < f x}, f x ∂μ
[PROOFSTEP]
rw [← lintegral_add_compl (fun x => max (f x) (g x)) hm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
hm : MeasurableSet {x | f x ≤ g x}
⊢ ∫⁻ (x : α) in {x | f x ≤ g x}, max (f x) (g x) ∂μ + ∫⁻ (x : α) in {x | f x ≤ g x}ᶜ, max (f x) (g x) ∂μ =
    ∫⁻ (x : α) in {x | f x ≤ g x}, g x ∂μ + ∫⁻ (x : α) in {x | g x < f x}, f x ∂μ
[PROOFSTEP]
simp only [← compl_setOf, ← not_le]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
hm : MeasurableSet {x | f x ≤ g x}
⊢ ∫⁻ (x : α) in {x | f x ≤ g x}, max (f x) (g x) ∂μ + ∫⁻ (x : α) in {x | f x ≤ g x}ᶜ, max (f x) (g x) ∂μ =
    ∫⁻ (x : α) in {x | f x ≤ g x}, g x ∂μ + ∫⁻ (x : α) in {a | f a ≤ g a}ᶜ, f x ∂μ
[PROOFSTEP]
refine' congr_arg₂ (· + ·) (set_lintegral_congr_fun hm _) (set_lintegral_congr_fun hm.compl _)
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
hm : MeasurableSet {x | f x ≤ g x}
⊢ ∀ᵐ (x : α) ∂μ, x ∈ {x | f x ≤ g x} → max (f x) (g x) = g x
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
hm : MeasurableSet {x | f x ≤ g x}
⊢ ∀ᵐ (x : α) ∂μ, x ∈ {x | f x ≤ g x}ᶜ → max (f x) (g x) = f x
[PROOFSTEP]
exacts [ae_of_all _ fun x => max_eq_right (a := f x) (b := g x),
  ae_of_all _ fun x (hx : ¬f x ≤ g x) => max_eq_left (not_le.1 hx).le]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
⊢ ∫⁻ (x : α) in s, max (f x) (g x) ∂μ =
    ∫⁻ (x : α) in s ∩ {x | f x ≤ g x}, g x ∂μ + ∫⁻ (x : α) in s ∩ {x | g x < f x}, f x ∂μ
[PROOFSTEP]
rw [lintegral_max hf hg, restrict_restrict, restrict_restrict, inter_comm s, inter_comm s]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
⊢ MeasurableSet {x | g x < f x}
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
⊢ MeasurableSet {x | f x ≤ g x}
[PROOFSTEP]
exacts [measurableSet_lt hg hf, measurableSet_le hf hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (a : β), f a ∂Measure.map g μ = ∫⁻ (a : α), f (g a) ∂μ
[PROOFSTEP]
erw [lintegral_eq_iSup_eapprox_lintegral hf, lintegral_eq_iSup_eapprox_lintegral (hf.comp hg)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : Measurable f
hg : Measurable g
⊢ ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox f n) (Measure.map g μ) =
    ⨆ (n : ℕ), SimpleFunc.lintegral (eapprox (f ∘ g) n) μ
[PROOFSTEP]
congr with n : 1
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : Measurable f
hg : Measurable g
n : ℕ
⊢ SimpleFunc.lintegral (eapprox f n) (Measure.map g μ) = SimpleFunc.lintegral (eapprox (f ∘ g) n) μ
[PROOFSTEP]
convert SimpleFunc.lintegral_map _ hg
[GOAL]
case h.e'_3.h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : Measurable f
hg : Measurable g
n : ℕ
⊢ eapprox (f ∘ g) n = comp (eapprox f n) g hg
[PROOFSTEP]
ext1 x
[GOAL]
case h.e'_3.h.e'_3.H
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : Measurable f
hg : Measurable g
n : ℕ
x : α
⊢ ↑(eapprox (f ∘ g) n) x = ↑(comp (eapprox f n) g hg) x
[PROOFSTEP]
simp only [eapprox_comp hf hg, coe_comp]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : AEMeasurable f
hg : AEMeasurable g
⊢ ∫⁻ (a : β), AEMeasurable.mk f hf a ∂Measure.map g μ =
    ∫⁻ (a : β), AEMeasurable.mk f hf a ∂Measure.map (AEMeasurable.mk g hg) μ
[PROOFSTEP]
congr 1
[GOAL]
case e_μ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : AEMeasurable f
hg : AEMeasurable g
⊢ Measure.map g μ = Measure.map (AEMeasurable.mk g hg) μ
[PROOFSTEP]
exact Measure.map_congr hg.ae_eq_mk
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hg : Measurable g
⊢ ∫⁻ (a : β), f a ∂Measure.map g μ ≤ ∫⁻ (a : α), f (g a) ∂μ
[PROOFSTEP]
rw [← iSup_lintegral_measurable_le_eq_lintegral, ← iSup_lintegral_measurable_le_eq_lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hg : Measurable g
⊢ ⨆ (g_1 : β → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => f a), ∫⁻ (a : β), g_1 a ∂Measure.map g μ ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => f (g a)), ∫⁻ (a : α), g_1 a ∂μ
[PROOFSTEP]
refine' iSup₂_le fun i hi => iSup_le fun h'i => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hg : Measurable g
i : β → ℝ≥0∞
hi : Measurable i
h'i : i ≤ fun a => f a
⊢ ∫⁻ (a : β), i a ∂Measure.map g μ ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => f (g a)), ∫⁻ (a : α), g_1 a ∂μ
[PROOFSTEP]
refine' le_iSup₂_of_le (i ∘ g) (hi.comp hg) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hg : Measurable g
i : β → ℝ≥0∞
hi : Measurable i
h'i : i ≤ fun a => f a
⊢ ∫⁻ (a : β), i a ∂Measure.map g μ ≤ ⨆ (_ : i ∘ g ≤ fun a => f (g a)), ∫⁻ (a : α), (i ∘ g) a ∂μ
[PROOFSTEP]
exact le_iSup_of_le (fun x => h'i (g x)) (le_of_eq (lintegral_map hi hg))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
s : Set β
hs : MeasurableSet s
hf : Measurable f
hg : Measurable g
⊢ ∫⁻ (y : β) in s, f y ∂Measure.map g μ = ∫⁻ (x : α) in g ⁻¹' s, f (g x) ∂μ
[PROOFSTEP]
rw [restrict_map hg hs, lintegral_map hf hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : α → β
s : Set β
hf : Measurable f
hs : MeasurableSet s
c : ℝ≥0∞
⊢ ∫⁻ (a : α), indicator s (fun x => c) (f a) ∂μ = c * ↑↑μ (f ⁻¹' s)
[PROOFSTEP]
erw [lintegral_comp (measurable_const.indicator hs) hf, lintegral_indicator_const hs, Measure.map_apply hf hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ ∫⁻ (a : β), f a ∂Measure.map g μ = ∫⁻ (a : α), f (g a) ∂μ
[PROOFSTEP]
rw [lintegral, lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ ⨆ (g_1 : β →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f a), SimpleFunc.lintegral g_1 (Measure.map g μ) =
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f (g a)), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
refine' le_antisymm (iSup₂_le fun f₀ hf₀ => _) (iSup₂_le fun f₀ hf₀ => _)
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ SimpleFunc.lintegral f₀ (Measure.map g μ) ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f (g a)), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
rw [SimpleFunc.lintegral_map _ hg.measurable]
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
⊢ SimpleFunc.lintegral (comp f₀ g (_ : Measurable g)) μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f (g a)), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
have : (f₀.comp g hg.measurable : α → ℝ≥0∞) ≤ f ∘ g := fun x => hf₀ (g x)
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
this : ↑(comp f₀ g (_ : Measurable g)) ≤ f ∘ g
⊢ SimpleFunc.lintegral (comp f₀ g (_ : Measurable g)) μ ≤
    ⨆ (g_1 : α →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f (g a)), SimpleFunc.lintegral g_1 μ
[PROOFSTEP]
exact le_iSup_of_le (comp f₀ g hg.measurable) (by exact le_iSup (α := ℝ≥0∞) _ this)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : β →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f a
this : ↑(comp f₀ g (_ : Measurable g)) ≤ f ∘ g
⊢ SimpleFunc.lintegral (comp f₀ g (_ : Measurable g)) μ ≤
    ⨆ (_ : ↑(comp f₀ g (_ : Measurable g)) ≤ fun a => f (g a)), SimpleFunc.lintegral (comp f₀ g (_ : Measurable g)) μ
[PROOFSTEP]
exact le_iSup (α := ℝ≥0∞) _ this
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ SimpleFunc.lintegral f₀ μ ≤ ⨆ (g_1 : β →ₛ ℝ≥0∞) (_ : ↑g_1 ≤ fun a => f a), SimpleFunc.lintegral g_1 (Measure.map g μ)
[PROOFSTEP]
rw [← f₀.extend_comp_eq hg (const _ 0), ← SimpleFunc.lintegral_map, ← SimpleFunc.lintegral_eq_lintegral, ← lintegral]
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
⊢ ∫⁻ (a : β), ↑(SimpleFunc.extend f₀ g hg (const β 0)) a ∂Measure.map g μ ≤ ∫⁻ (a : β), f a ∂Measure.map g μ
[PROOFSTEP]
refine' lintegral_mono_ae (hg.ae_map_iff.2 <| eventually_of_forall fun x => _)
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace β
g : α → β
hg : MeasurableEmbedding g
f : β → ℝ≥0∞
f₀ : α →ₛ ℝ≥0∞
hf₀ : ↑f₀ ≤ fun a => f (g a)
x : α
⊢ ↑(SimpleFunc.extend f₀ g hg (const β 0)) (g x) ≤ f (g x)
[PROOFSTEP]
exact (extend_apply _ _ _ _).trans_le (hf₀ _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g
f : β → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), f (g a) ∂μ = ∫⁻ (b : β), f b ∂ν
[PROOFSTEP]
rw [← hg.map_eq, lintegral_map hf hg.measurable]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g
hge : MeasurableEmbedding g
f : β → ℝ≥0∞
⊢ ∫⁻ (a : α), f (g a) ∂μ = ∫⁻ (b : β), f b ∂ν
[PROOFSTEP]
rw [← hg.map_eq, hge.lintegral_map]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g
s : Set β
hs : MeasurableSet s
f : β → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α) in g ⁻¹' s, f (g a) ∂μ = ∫⁻ (b : β) in s, f b ∂ν
[PROOFSTEP]
rw [← hg.map_eq, set_lintegral_map hs hf hg.measurable]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g
hge : MeasurableEmbedding g
f : β → ℝ≥0∞
s : Set β
⊢ ∫⁻ (a : α) in g ⁻¹' s, f (g a) ∂μ = ∫⁻ (b : β) in s, f b ∂ν
[PROOFSTEP]
rw [← hg.map_eq, hge.restrict_map, hge.lintegral_map]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g
hge : MeasurableEmbedding g
f : β → ℝ≥0∞
s : Set α
⊢ ∫⁻ (a : α) in s, f (g a) ∂μ = ∫⁻ (b : β) in g '' s, f b ∂ν
[PROOFSTEP]
rw [← hg.set_lintegral_comp_preimage_emb hge, preimage_image_eq _ hge.injective]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace α
a : α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), f a ∂dirac a = f a
[PROOFSTEP]
simp [lintegral_congr_ae (ae_eq_dirac' hf)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂dirac a = f a
[PROOFSTEP]
simp [lintegral_congr_ae (ae_eq_dirac f)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
a : α
f : α → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
⊢ ∫⁻ (x : α) in s, f x ∂dirac a = if a ∈ s then f a else 0
[PROOFSTEP]
rw [restrict_dirac' hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
a : α
f : α → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
⊢ (∫⁻ (x : α), f x ∂if a ∈ s then dirac a else 0) = if a ∈ s then f a else 0
[PROOFSTEP]
split_ifs
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
a : α
f : α → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
h✝ : a ∈ s
⊢ ∫⁻ (x : α), f x ∂dirac a = f a
[PROOFSTEP]
exact lintegral_dirac' _ hf
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
a : α
f : α → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
h✝ : ¬a ∈ s
⊢ ∫⁻ (x : α), f x ∂0 = 0
[PROOFSTEP]
exact lintegral_zero_measure _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
⊢ ∫⁻ (x : α) in s, f x ∂dirac a = if a ∈ s then f a else 0
[PROOFSTEP]
rw [restrict_dirac]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
⊢ (∫⁻ (x : α), f x ∂if a ∈ s then dirac a else 0) = if a ∈ s then f a else 0
[PROOFSTEP]
split_ifs
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
h✝ : a ∈ s
⊢ ∫⁻ (x : α), f x ∂dirac a = f a
[PROOFSTEP]
exact lintegral_dirac _ _
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace α
a : α
f : α → ℝ≥0∞
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
h✝ : ¬a ∈ s
⊢ ∫⁻ (x : α), f x ∂0 = 0
[PROOFSTEP]
exact lintegral_zero_measure _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), f a ∂count = ∑' (a : α), f a
[PROOFSTEP]
rw [count, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace α
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∑' (i : α), ∫⁻ (a : α), f a ∂dirac i = ∑' (a : α), f a
[PROOFSTEP]
congr
[GOAL]
case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSpace α
f : α → ℝ≥0∞
hf : Measurable f
⊢ (fun i => ∫⁻ (a : α), f a ∂dirac i) = fun a => f a
[PROOFSTEP]
exact funext fun a => lintegral_dirac' a hf
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂count = ∑' (a : α), f a
[PROOFSTEP]
rw [count, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∑' (i : α), ∫⁻ (a : α), f a ∂dirac i = ∑' (a : α), f a
[PROOFSTEP]
congr
[GOAL]
case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ (fun i => ∫⁻ (a : α), f a ∂dirac i) = fun a => f a
[PROOFSTEP]
exact funext fun a => lintegral_dirac a f
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
c : ℝ≥0∞
⊢ ∑' (x : α), c = c * ↑↑count univ
[PROOFSTEP]
rw [← lintegral_count, lintegral_const]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0∞
a_mble : Measurable a
c : ℝ≥0∞
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0∞
ε_ne_zero : ε ≠ 0
ε_ne_top : ε ≠ ⊤
⊢ ↑↑count {i | ε ≤ a i} ≤ c / ε
[PROOFSTEP]
rw [← lintegral_count] at tsum_le_c 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0∞
a_mble : Measurable a
c : ℝ≥0∞
tsum_le_c✝ : ∑' (i : α), a i ≤ c
tsum_le_c : ∫⁻ (a_1 : α), a a_1 ∂count ≤ c
ε : ℝ≥0∞
ε_ne_zero : ε ≠ 0
ε_ne_top : ε ≠ ⊤
⊢ ↑↑count {i | ε ≤ a i} ≤ c / ε
[PROOFSTEP]
apply (MeasureTheory.meas_ge_le_lintegral_div a_mble.aemeasurable ε_ne_zero ε_ne_top).trans
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0∞
a_mble : Measurable a
c : ℝ≥0∞
tsum_le_c✝ : ∑' (i : α), a i ≤ c
tsum_le_c : ∫⁻ (a_1 : α), a a_1 ∂count ≤ c
ε : ℝ≥0∞
ε_ne_zero : ε ≠ 0
ε_ne_top : ε ≠ ⊤
⊢ (∫⁻ (a_1 : α), a a_1 ∂count) / ε ≤ c / ε
[PROOFSTEP]
exact ENNReal.div_le_div tsum_le_c rfl.le
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
⊢ ↑↑count {i | ε ≤ a i} ≤ ↑c / ↑ε
[PROOFSTEP]
rw [show (fun i => ε ≤ a i) = fun i => (ε : ℝ≥0∞) ≤ ((↑) ∘ a) i
    by
    funext i
    simp only [ENNReal.coe_le_coe, Function.comp]]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
⊢ (fun i => ε ≤ a i) = fun i => ↑ε ≤ (ENNReal.some ∘ a) i
[PROOFSTEP]
funext i
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
i : α
⊢ (ε ≤ a i) = (↑ε ≤ (ENNReal.some ∘ a) i)
[PROOFSTEP]
simp only [ENNReal.coe_le_coe, Function.comp]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
⊢ ↑↑count {i | ↑ε ≤ (ENNReal.some ∘ a) i} ≤ ↑c / ↑ε
[PROOFSTEP]
apply
  ENNReal.count_const_le_le_of_tsum_le (measurable_coe_nnreal_ennreal.comp a_mble) _ (by exact_mod_cast ε_ne_zero)
    (@ENNReal.coe_ne_top ε)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
⊢ ↑ε ≠ 0
[PROOFSTEP]
exact_mod_cast ε_ne_zero
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
⊢ ∑' (i : α), (ENNReal.some ∘ a) i ≤ ↑c
[PROOFSTEP]
convert ENNReal.coe_le_coe.mpr tsum_le_c
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
a : α → ℝ≥0
a_mble : Measurable a
a_summable : Summable a
c : ℝ≥0
tsum_le_c : ∑' (i : α), a i ≤ c
ε : ℝ≥0
ε_ne_zero : ε ≠ 0
⊢ ∑' (i : α), (ENNReal.some ∘ a) i = ↑(∑' (i : α), a i)
[PROOFSTEP]
erw [ENNReal.tsum_coe_eq a_summable.hasSum]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂μ = ∑' (a : α), f a * ↑↑μ {a}
[PROOFSTEP]
conv_lhs => rw [← sum_smul_dirac μ, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
| ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [← sum_smul_dirac μ, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
| ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [← sum_smul_dirac μ, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
| ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [← sum_smul_dirac μ, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∑' (i : α), ∫⁻ (a : α), f a ∂↑↑μ {i} • dirac i = ∑' (a : α), f a * ↑↑μ {a}
[PROOFSTEP]
congr 1 with a : 1
[GOAL]
case e_f.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
a : α
⊢ ∫⁻ (a : α), f a ∂↑↑μ {a} • dirac a = f a * ↑↑μ {a}
[PROOFSTEP]
rw [lintegral_smul_measure, lintegral_dirac, mul_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ ∫⁻ (x : α) in {a}, f x ∂μ = f a * ↑↑μ {a}
[PROOFSTEP]
simp only [restrict_singleton, lintegral_smul_measure, lintegral_dirac' _ hf, mul_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
a : α
⊢ ∫⁻ (x : α) in {a}, f x ∂μ = f a * ↑↑μ {a}
[PROOFSTEP]
simp only [restrict_singleton, lintegral_smul_measure, lintegral_dirac, mul_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
s : Set α
hs : Set.Countable s
⊢ ∫⁻ (a : α) in s, f a ∂μ = ∫⁻ (a : α) in ⋃ (x : α) (_ : x ∈ s), {x}, f a ∂μ
[PROOFSTEP]
rw [biUnion_of_singleton]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
s : Set α
hs : Set.Countable s
⊢ ∑' (a : ↑s), ∫⁻ (x : α) in {↑a}, f x ∂μ = ∑' (a : ↑s), f ↑a * ↑↑μ {↑a}
[PROOFSTEP]
simp only [lintegral_singleton]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
a : α
s : Set α
h : ¬a ∈ s
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α) in insert a s, f x ∂μ = f a * ↑↑μ {a} + ∫⁻ (x : α) in s, f x ∂μ
[PROOFSTEP]
rw [← union_singleton, lintegral_union (measurableSet_singleton a), lintegral_singleton, add_comm]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
a : α
s : Set α
h : ¬a ∈ s
f : α → ℝ≥0∞
⊢ Disjoint s {a}
[PROOFSTEP]
rwa [disjoint_singleton_right]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
s : Finset α
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α) in ↑s, f x ∂μ = ∑ x in s, f x * ↑↑μ {x}
[PROOFSTEP]
simp only [lintegral_countable _ s.countable_toSet, ← Finset.tsum_subtype']
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Fintype α
f : α → ℝ≥0∞
⊢ ∫⁻ (x : α), f x ∂μ = ∑ x : α, f x * ↑↑μ {x}
[PROOFSTEP]
rw [← lintegral_finset, Finset.coe_univ, Measure.restrict_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
⊢ ∀ᵐ (x : α) ∂μ, f x < ⊤
[PROOFSTEP]
simp_rw [ae_iff, ENNReal.not_lt_top]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
⊢ ↑↑μ {a | f a = ⊤} = 0
[PROOFSTEP]
by_contra h
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
⊢ False
[PROOFSTEP]
apply h2f.lt_top.not_le
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
⊢ ⊤ ≤ ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
have : (f ⁻¹' {∞}).indicator ⊤ ≤ f := by
  intro x
  by_cases hx : x ∈ f ⁻¹' {∞} <;> [simpa [indicator_of_mem hx]; simp [indicator_of_not_mem hx]]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
⊢ indicator (f ⁻¹' {⊤}) ⊤ ≤ f
[PROOFSTEP]
intro x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
x : α
⊢ indicator (f ⁻¹' {⊤}) ⊤ x ≤ f x
[PROOFSTEP]
by_cases hx : x ∈ f ⁻¹' {∞} <;> [simpa [indicator_of_mem hx]; simp [indicator_of_not_mem hx]]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
x : α
⊢ indicator (f ⁻¹' {⊤}) ⊤ x ≤ f x
[PROOFSTEP]
by_cases hx : x ∈ f ⁻¹' {∞}
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
x : α
hx : x ∈ f ⁻¹' {⊤}
⊢ indicator (f ⁻¹' {⊤}) ⊤ x ≤ f x
[PROOFSTEP]
simpa [indicator_of_mem hx]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
x : α
hx : ¬x ∈ f ⁻¹' {⊤}
⊢ indicator (f ⁻¹' {⊤}) ⊤ x ≤ f x
[PROOFSTEP]
simp [indicator_of_not_mem hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
this : indicator (f ⁻¹' {⊤}) ⊤ ≤ f
⊢ ⊤ ≤ ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
convert lintegral_mono this
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
this : indicator (f ⁻¹' {⊤}) ⊤ ≤ f
⊢ ⊤ = ∫⁻ (a : α), indicator (f ⁻¹' {⊤}) ⊤ a ∂μ
[PROOFSTEP]
rw [lintegral_indicator _ (hf (measurableSet_singleton ∞))]
[GOAL]
case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h : ¬↑↑μ {a | f a = ⊤} = 0
this : indicator (f ⁻¹' {⊤}) ⊤ ≤ f
⊢ ⊤ = ∫⁻ (a : α) in f ⁻¹' {⊤}, ⊤ a ∂μ
[PROOFSTEP]
simp [ENNReal.top_mul', preimage, h]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
⊢ ∫⁻ (x : α), AEMeasurable.mk f hf x ∂μ ≠ ⊤
[PROOFSTEP]
rwa [← lintegral_congr_ae hf.ae_eq_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h2f : ∫⁻ (x : α), f x ∂μ ≠ ⊤
h2f_meas : ∫⁻ (x : α), AEMeasurable.mk f hf x ∂μ ≠ ⊤
x : α
hx : f x = AEMeasurable.mk f hf x
h : AEMeasurable.mk f hf x < ⊤
⊢ f x < ⊤
[PROOFSTEP]
rwa [hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
hbdd : BddAbove (f '' s)
⊢ ∫⁻ (x : α) in s, ↑(f x) ∂μ < ⊤
[PROOFSTEP]
obtain ⟨M, hM⟩ := hbdd
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
M : ℝ≥0
hM : M ∈ upperBounds (f '' s)
⊢ ∫⁻ (x : α) in s, ↑(f x) ∂μ < ⊤
[PROOFSTEP]
rw [mem_upperBounds] at hM 
[GOAL]
case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
M : ℝ≥0
hM : ∀ (x : ℝ≥0), x ∈ f '' s → x ≤ M
⊢ ∫⁻ (x : α) in s, ↑(f x) ∂μ < ⊤
[PROOFSTEP]
refine' lt_of_le_of_lt (set_lintegral_mono hf.coe_nnreal_ennreal (@measurable_const _ _ _ _ ↑M) _) _
[GOAL]
case intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
M : ℝ≥0
hM : ∀ (x : ℝ≥0), x ∈ f '' s → x ≤ M
⊢ ∀ (x : α), x ∈ s → ↑(f x) ≤ ↑M
[PROOFSTEP]
simpa using hM
[GOAL]
case intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
M : ℝ≥0
hM : ∀ (x : ℝ≥0), x ∈ f '' s → x ≤ M
⊢ ∫⁻ (x : α) in s, ↑M ∂μ < ⊤
[PROOFSTEP]
rw [lintegral_const]
[GOAL]
case intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
M : ℝ≥0
hM : ∀ (x : ℝ≥0), x ∈ f '' s → x ≤ M
⊢ ↑M * ↑↑(Measure.restrict μ s) univ < ⊤
[PROOFSTEP]
refine' ENNReal.mul_lt_top ENNReal.coe_lt_top.ne _
[GOAL]
case intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : ↑↑μ s ≠ ⊤
f : α → ℝ≥0
hf : Measurable f
M : ℝ≥0
hM : ∀ (x : ℝ≥0), x ∈ f '' s → x ≤ M
⊢ ↑↑(Measure.restrict μ s) univ ≠ ⊤
[PROOFSTEP]
simp [hs]
[GOAL]
α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝ : MeasurableSpace α
μ : Measure α
μ_fin : IsFiniteMeasure μ
f : α → ℝ≥0∞
f_bdd : ∃ c, ∀ (x : α), f x ≤ ↑c
⊢ ∫⁻ (x : α), f x ∂μ < ⊤
[PROOFSTEP]
cases' f_bdd with c hc
[GOAL]
case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝ : MeasurableSpace α
μ : Measure α
μ_fin : IsFiniteMeasure μ
f : α → ℝ≥0∞
c : ℝ≥0
hc : ∀ (x : α), f x ≤ ↑c
⊢ ∫⁻ (x : α), f x ∂μ < ⊤
[PROOFSTEP]
apply lt_of_le_of_lt (@lintegral_mono _ _ μ _ _ hc)
[GOAL]
case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝ : MeasurableSpace α
μ : Measure α
μ_fin : IsFiniteMeasure μ
f : α → ℝ≥0∞
c : ℝ≥0
hc : ∀ (x : α), f x ≤ ↑c
⊢ ∫⁻ (a : α), ↑c ∂μ < ⊤
[PROOFSTEP]
rw [lintegral_const]
[GOAL]
case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α✝
μ✝ ν : Measure α✝
α : Type u_5
inst✝ : MeasurableSpace α
μ : Measure α
μ_fin : IsFiniteMeasure μ
f : α → ℝ≥0∞
c : ℝ≥0
hc : ∀ (x : α), f x ≤ ↑c
⊢ ↑c * ↑↑μ univ < ⊤
[PROOFSTEP]
exact ENNReal.mul_lt_top ENNReal.coe_lt_top.ne μ_fin.measure_univ_lt_top.ne
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
⊢ (fun s x => ∫⁻ (a : α) in s, f a ∂μ) ∅ (_ : MeasurableSet ∅) = 0
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : f =ᶠ[ae μ] g
⊢ withDensity μ f = withDensity μ g
[PROOFSTEP]
refine Measure.ext fun s hs => ?_
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : f =ᶠ[ae μ] g
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ f) s = ↑↑(withDensity μ g) s
[PROOFSTEP]
rw [withDensity_apply _ hs, withDensity_apply _ hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
h : f =ᶠ[ae μ] g
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, f a ∂μ = ∫⁻ (a : α) in s, g a ∂μ
[PROOFSTEP]
exact lintegral_congr_ae (ae_restrict_of_ae h)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
⊢ withDensity μ (f + g) = withDensity μ f + withDensity μ g
[PROOFSTEP]
refine' Measure.ext fun s hs => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ (f + g)) s = ↑↑(withDensity μ f + withDensity μ g) s
[PROOFSTEP]
rw [withDensity_apply _ hs, Measure.add_apply, withDensity_apply _ hs, withDensity_apply _ hs, ← lintegral_add_left hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, (f + g) a ∂μ = ∫⁻ (a : α) in s, f a + g a ∂μ
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : Measurable g
⊢ withDensity μ (f + g) = withDensity μ f + withDensity μ g
[PROOFSTEP]
simpa only [add_comm] using withDensity_add_left hg f
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν✝ : Measure α
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
⊢ withDensity (μ + ν) f = withDensity μ f + withDensity ν f
[PROOFSTEP]
ext1 s hs
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν✝ : Measure α
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity (μ + ν) f) s = ↑↑(withDensity μ f + withDensity ν f) s
[PROOFSTEP]
simp only [withDensity_apply f hs, restrict_add, lintegral_add_measure, Measure.add_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
ι : Type u_5
m : MeasurableSpace α
μ : ι → Measure α
f : α → ℝ≥0∞
⊢ withDensity (sum μ) f = sum fun n => withDensity (μ n) f
[PROOFSTEP]
ext1 s hs
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
ι : Type u_5
m : MeasurableSpace α
μ : ι → Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity (sum μ) f) s = ↑↑(sum fun n => withDensity (μ n) f) s
[PROOFSTEP]
simp_rw [sum_apply _ hs, withDensity_apply f hs, restrict_sum μ hs, lintegral_sum_measure]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
⊢ withDensity μ (r • f) = r • withDensity μ f
[PROOFSTEP]
refine' Measure.ext fun s hs => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ (r • f)) s = ↑↑(r • withDensity μ f) s
[PROOFSTEP]
rw [withDensity_apply _ hs, Measure.coe_smul, Pi.smul_apply, withDensity_apply _ hs, smul_eq_mul, ←
  lintegral_const_mul r hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, (r • f) a ∂μ = ∫⁻ (a : α) in s, r * f a ∂μ
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
⊢ withDensity μ (r • f) = r • withDensity μ f
[PROOFSTEP]
refine' Measure.ext fun s hs => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ (r • f)) s = ↑↑(r • withDensity μ f) s
[PROOFSTEP]
rw [withDensity_apply _ hs, Measure.coe_smul, Pi.smul_apply, withDensity_apply _ hs, smul_eq_mul, ←
  lintegral_const_mul' r f hr]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
hr : r ≠ ⊤
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, (r • f) a ∂μ = ∫⁻ (a : α) in s, r * f a ∂μ
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : ∫⁻ (a : α), f a ∂μ ≠ ⊤
⊢ ↑↑(withDensity μ f) univ < ⊤
[PROOFSTEP]
rwa [withDensity_apply _ MeasurableSet.univ, Measure.restrict_univ, lt_top_iff_ne_top]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
⊢ withDensity μ f ≪ μ
[PROOFSTEP]
refine' AbsolutelyContinuous.mk fun s hs₁ hs₂ => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hs₁ : MeasurableSet s
hs₂ : ↑↑μ s = 0
⊢ ↑↑(withDensity μ f) s = 0
[PROOFSTEP]
rw [withDensity_apply _ hs₁]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ : MeasurableSpace α
μ✝ ν : Measure α
m : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hs₁ : MeasurableSet s
hs₂ : ↑↑μ s = 0
⊢ ∫⁻ (a : α) in s, f a ∂μ = 0
[PROOFSTEP]
exact set_lintegral_measure_zero _ _ hs₂
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
⊢ withDensity μ 0 = 0
[PROOFSTEP]
ext1 s hs
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ 0) s = ↑↑0 s
[PROOFSTEP]
simp [withDensity_apply _ hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
⊢ withDensity μ 1 = μ
[PROOFSTEP]
ext1 s hs
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ 1) s = ↑↑μ s
[PROOFSTEP]
simp [withDensity_apply _ hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h : ∀ (i : ℕ), Measurable (f i)
⊢ withDensity μ (∑' (n : ℕ), f n) = sum fun n => withDensity μ (f n)
[PROOFSTEP]
ext1 s hs
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h : ∀ (i : ℕ), Measurable (f i)
s : Set α
hs : MeasurableSet s
⊢ ↑↑(withDensity μ (∑' (n : ℕ), f n)) s = ↑↑(sum fun n => withDensity μ (f n)) s
[PROOFSTEP]
simp_rw [sum_apply _ hs, withDensity_apply _ hs]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h : ∀ (i : ℕ), Measurable (f i)
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, tsum (fun n => f n) a ∂μ = ∑' (i : ℕ), ∫⁻ (a : α) in s, f i a ∂μ
[PROOFSTEP]
change ∫⁻ x in s, (∑' n, f n) x ∂μ = ∑' i : ℕ, ∫⁻ x, f i x ∂μ.restrict s
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h : ∀ (i : ℕ), Measurable (f i)
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (x : α) in s, tsum (fun n => f n) x ∂μ = ∑' (i : ℕ), ∫⁻ (x : α) in s, f i x ∂μ
[PROOFSTEP]
rw [← lintegral_tsum fun i => (h i).aemeasurable]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : ℕ → α → ℝ≥0∞
h : ∀ (i : ℕ), Measurable (f i)
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (x : α) in s, tsum (fun n => f n) x ∂μ = ∫⁻ (a : α) in s, ∑' (i : ℕ), f i a ∂μ
[PROOFSTEP]
refine' lintegral_congr fun x => tsum_apply (Pi.summable.2 fun _ => ENNReal.summable)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
f : α → ℝ≥0∞
⊢ withDensity μ (indicator s f) = withDensity (Measure.restrict μ s) f
[PROOFSTEP]
ext1 t ht
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
f : α → ℝ≥0∞
t : Set α
ht : MeasurableSet t
⊢ ↑↑(withDensity μ (indicator s f)) t = ↑↑(withDensity (Measure.restrict μ s) f) t
[PROOFSTEP]
rw [withDensity_apply _ ht, lintegral_indicator _ hs, restrict_comm hs, ← withDensity_apply _ ht]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
⊢ withDensity μ (indicator s 1) = Measure.restrict μ s
[PROOFSTEP]
rw [withDensity_indicator hs, withDensity_one]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
⊢ (withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
set S : Set α := {x | f x < 0}
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
S : Set α := {x | f x < 0}
⊢ (withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
have hS : MeasurableSet S := measurableSet_lt hf measurable_const
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
S : Set α := {x | f x < 0}
hS : MeasurableSet S
⊢ (withDensity μ fun x => ENNReal.ofReal (f x)) ⟂ₘ withDensity μ fun x => ENNReal.ofReal (-f x)
[PROOFSTEP]
refine' ⟨S, hS, _, _⟩
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
S : Set α := {x | f x < 0}
hS : MeasurableSet S
⊢ ↑↑(withDensity μ fun x => ENNReal.ofReal (f x)) S = 0
[PROOFSTEP]
rw [withDensity_apply _ hS, lintegral_eq_zero_iff hf.ennreal_ofReal, EventuallyEq]
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
S : Set α := {x | f x < 0}
hS : MeasurableSet S
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ S, ENNReal.ofReal (f x) = OfNat.ofNat 0 x
[PROOFSTEP]
exact (ae_restrict_mem hS).mono fun x hx => ENNReal.ofReal_eq_zero.2 (le_of_lt hx)
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
S : Set α := {x | f x < 0}
hS : MeasurableSet S
⊢ ↑↑(withDensity μ fun x => ENNReal.ofReal (-f x)) Sᶜ = 0
[PROOFSTEP]
rw [withDensity_apply _ hS.compl, lintegral_eq_zero_iff hf.neg.ennreal_ofReal, EventuallyEq]
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ
hf : Measurable f
S : Set α := {x | f x < 0}
hS : MeasurableSet S
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ Sᶜ, ENNReal.ofReal (-f x) = OfNat.ofNat 0 x
[PROOFSTEP]
exact (ae_restrict_mem hS.compl).mono fun x hx => ENNReal.ofReal_eq_zero.2 (not_lt.1 <| mt neg_pos.1 hx)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
f : α → ℝ≥0∞
⊢ Measure.restrict (withDensity μ f) s = withDensity (Measure.restrict μ s) f
[PROOFSTEP]
ext1 t ht
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
s : Set α
hs : MeasurableSet s
f : α → ℝ≥0∞
t : Set α
ht : MeasurableSet t
⊢ ↑↑(Measure.restrict (withDensity μ f) s) t = ↑↑(withDensity (Measure.restrict μ s) f) t
[PROOFSTEP]
rw [restrict_apply ht, withDensity_apply _ ht, withDensity_apply _ (ht.inter hs), restrict_restrict ht]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h : withDensity μ f = 0
⊢ f =ᶠ[ae μ] 0
[PROOFSTEP]
rw [← lintegral_eq_zero_iff' hf, ← set_lintegral_univ, ← withDensity_apply _ MeasurableSet.univ, h, Measure.coe_zero,
  Pi.zero_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
⊢ ↑↑(withDensity μ f) s = 0 ↔ ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
⊢ ↑↑(withDensity μ f) s = 0 → ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
[PROOFSTEP]
intro hs
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
⊢ ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
[PROOFSTEP]
let t := toMeasurable (μ.withDensity f) s
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
⊢ ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
[PROOFSTEP]
apply measure_mono_null (inter_subset_inter_right _ (subset_toMeasurable (μ.withDensity f) s))
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
⊢ ↑↑μ ({x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s) = 0
[PROOFSTEP]
have A : μ.withDensity f t = 0 := by rw [measure_toMeasurable, hs]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
⊢ ↑↑(withDensity μ f) t = 0
[PROOFSTEP]
rw [measure_toMeasurable, hs]
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ↑↑(withDensity μ f) t = 0
⊢ ↑↑μ ({x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s) = 0
[PROOFSTEP]
rw [withDensity_apply f (measurableSet_toMeasurable _ s), lintegral_eq_zero_iff hf, EventuallyEq, ae_restrict_iff,
  ae_iff] at A 
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ↑↑μ {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = OfNat.ofNat 0 a)} = 0
⊢ ↑↑μ ({x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s) = 0
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ∀ᵐ (x : α) ∂Measure.restrict μ (toMeasurable (withDensity μ f) s), f x = OfNat.ofNat 0 x
⊢ MeasurableSet {x | f x = OfNat.ofNat 0 x}
[PROOFSTEP]
swap
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ∀ᵐ (x : α) ∂Measure.restrict μ (toMeasurable (withDensity μ f) s), f x = OfNat.ofNat 0 x
⊢ MeasurableSet {x | f x = OfNat.ofNat 0 x}
[PROOFSTEP]
exact hf (measurableSet_singleton 0)
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ↑↑μ {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = OfNat.ofNat 0 a)} = 0
⊢ ↑↑μ ({x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s) = 0
[PROOFSTEP]
simp only [Pi.zero_apply, mem_setOf_eq, Filter.mem_mk] at A 
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ↑↑μ {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = 0)} = 0
⊢ ↑↑μ ({x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s) = 0
[PROOFSTEP]
convert A using 2
[GOAL]
case h.e'_2.h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ↑↑μ {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = 0)} = 0
⊢ {x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s = {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = 0)}
[PROOFSTEP]
ext x
[GOAL]
case h.e'_2.h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑(withDensity μ f) s = 0
t : Set α := toMeasurable (withDensity μ f) s
A : ↑↑μ {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = 0)} = 0
x : α
⊢ x ∈ {x | f x ≠ 0} ∩ toMeasurable (withDensity μ f) s ↔ x ∈ {a | ¬(a ∈ toMeasurable (withDensity μ f) s → f a = 0)}
[PROOFSTEP]
simp only [and_comm, exists_prop, mem_inter_iff, iff_self_iff, mem_setOf_eq, mem_compl_iff, not_forall]
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
⊢ ↑↑μ ({x | f x ≠ 0} ∩ s) = 0 → ↑↑(withDensity μ f) s = 0
[PROOFSTEP]
intro hs
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
⊢ ↑↑(withDensity μ f) s = 0
[PROOFSTEP]
let t := toMeasurable μ ({x | f x ≠ 0} ∩ s)
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
⊢ ↑↑(withDensity μ f) s = 0
[PROOFSTEP]
have A : s ⊆ t ∪ {x | f x = 0} := by
  intro x hx
  rcases eq_or_ne (f x) 0 with (fx | fx)
  · simp only [fx, mem_union, mem_setOf_eq, eq_self_iff_true, or_true_iff]
  · left
    apply subset_toMeasurable _ _
    exact ⟨fx, hx⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
⊢ s ⊆ t ∪ {x | f x = 0}
[PROOFSTEP]
intro x hx
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
x : α
hx : x ∈ s
⊢ x ∈ t ∪ {x | f x = 0}
[PROOFSTEP]
rcases eq_or_ne (f x) 0 with (fx | fx)
[GOAL]
case inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
x : α
hx : x ∈ s
fx : f x = 0
⊢ x ∈ t ∪ {x | f x = 0}
[PROOFSTEP]
simp only [fx, mem_union, mem_setOf_eq, eq_self_iff_true, or_true_iff]
[GOAL]
case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
x : α
hx : x ∈ s
fx : f x ≠ 0
⊢ x ∈ t ∪ {x | f x = 0}
[PROOFSTEP]
left
[GOAL]
case inr.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
x : α
hx : x ∈ s
fx : f x ≠ 0
⊢ x ∈ t
[PROOFSTEP]
apply subset_toMeasurable _ _
[GOAL]
case inr.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
x : α
hx : x ∈ s
fx : f x ≠ 0
⊢ x ∈ {x | f x ≠ 0} ∩ s
[PROOFSTEP]
exact ⟨fx, hx⟩
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
⊢ ↑↑(withDensity μ f) s = 0
[PROOFSTEP]
apply measure_mono_null A (measure_union_null _ _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
⊢ ↑↑(withDensity μ f) t = 0
[PROOFSTEP]
apply withDensity_absolutelyContinuous
[GOAL]
case a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
⊢ ↑↑μ t = 0
[PROOFSTEP]
rwa [measure_toMeasurable]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
⊢ ↑↑(withDensity μ f) {x | f x = 0} = 0
[PROOFSTEP]
have M : MeasurableSet {x : α | f x = 0} := hf (measurableSet_singleton _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
M : MeasurableSet {x | f x = 0}
⊢ ↑↑(withDensity μ f) {x | f x = 0} = 0
[PROOFSTEP]
rw [withDensity_apply _ M, lintegral_eq_zero_iff hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
M : MeasurableSet {x | f x = 0}
⊢ f =ᶠ[ae (Measure.restrict μ {x | f x = 0})] 0
[PROOFSTEP]
filter_upwards [ae_restrict_mem M]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s : Set α
hf : Measurable f
hs : ↑↑μ ({x | f x ≠ 0} ∩ s) = 0
t : Set α := toMeasurable μ ({x | f x ≠ 0} ∩ s)
A : s ⊆ t ∪ {x | f x = 0}
M : MeasurableSet {x | f x = 0}
⊢ ∀ (a : α), f a = 0 → f a = OfNat.ofNat 0 a
[PROOFSTEP]
simp only [imp_self, Pi.zero_apply, imp_true_iff]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
⊢ (∀ᵐ (x : α) ∂withDensity μ f, p x) ↔ ∀ᵐ (x : α) ∂μ, f x ≠ 0 → p x
[PROOFSTEP]
rw [ae_iff, ae_iff, withDensity_apply_eq_zero hf, iff_iff_eq]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
⊢ (↑↑μ ({x | f x ≠ 0} ∩ {a | ¬p a}) = 0) = (↑↑μ {a | ¬(f a ≠ 0 → p a)} = 0)
[PROOFSTEP]
congr
[GOAL]
case e_a.e_a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
⊢ {x | f x ≠ 0} ∩ {a | ¬p a} = {a | ¬(f a ≠ 0 → p a)}
[PROOFSTEP]
ext x
[GOAL]
case e_a.e_a.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
x : α
⊢ x ∈ {x | f x ≠ 0} ∩ {a | ¬p a} ↔ x ∈ {a | ¬(f a ≠ 0 → p a)}
[PROOFSTEP]
simp only [exists_prop, mem_inter_iff, iff_self_iff, mem_setOf_eq, not_forall]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
⊢ (∀ᵐ (x : α) ∂withDensity μ f, p x) ↔ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, p x
[PROOFSTEP]
rw [ae_withDensity_iff hf, ae_restrict_iff']
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
⊢ (∀ᵐ (x : α) ∂μ, f x ≠ 0 → p x) ↔ ∀ᵐ (x : α) ∂μ, x ∈ {x | f x ≠ 0} → p x
[PROOFSTEP]
rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
p : α → Prop
f : α → ℝ≥0∞
hf : Measurable f
⊢ MeasurableSet {x | f x ≠ 0}
[PROOFSTEP]
exact hf (measurableSet_singleton 0).compl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g : α → ℝ≥0∞
⊢ AEMeasurable g ↔ AEMeasurable fun x => ↑(f x) * g x
[PROOFSTEP]
constructor
[GOAL]
case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g : α → ℝ≥0∞
⊢ AEMeasurable g → AEMeasurable fun x => ↑(f x) * g x
[PROOFSTEP]
rintro ⟨g', g'meas, hg'⟩
[GOAL]
case mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
⊢ AEMeasurable fun x => ↑(f x) * g x
[PROOFSTEP]
have A : MeasurableSet {x : α | f x ≠ 0} := (hf (measurableSet_singleton 0)).compl
[GOAL]
case mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ AEMeasurable fun x => ↑(f x) * g x
[PROOFSTEP]
refine' ⟨fun x => f x * g' x, hf.coe_nnreal_ennreal.smul g'meas, _⟩
[GOAL]
case mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ (fun x => ↑(f x) * g x) =ᶠ[ae μ] fun x => ↑(f x) * g' x
[PROOFSTEP]
apply ae_of_ae_restrict_of_ae_restrict_compl {x | f x ≠ 0}
[GOAL]
case mp.intro.intro.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x
[PROOFSTEP]
rw [EventuallyEq, ae_withDensity_iff hf.coe_nnreal_ennreal] at hg' 
[GOAL]
case mp.intro.intro.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}, (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x
[PROOFSTEP]
rw [ae_restrict_iff' A]
[GOAL]
case mp.intro.intro.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂μ, x ∈ {x | f x ≠ 0} → (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x
[PROOFSTEP]
filter_upwards [hg']
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ (a : α), (↑(f a) ≠ 0 → g a = g' a) → f a ≠ 0 → ↑(f a) * g a = ↑(f a) * g' a
[PROOFSTEP]
intro a ha h'a
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
⊢ ↑(f a) * g a = ↑(f a) * g' a
[PROOFSTEP]
have : (f a : ℝ≥0∞) ≠ 0 := by simpa only [Ne.def, coe_eq_zero] using h'a
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
⊢ ↑(f a) ≠ 0
[PROOFSTEP]
simpa only [Ne.def, coe_eq_zero] using h'a
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = g' x
A : MeasurableSet {x | f x ≠ 0}
a : α
ha : ↑(f a) ≠ 0 → g a = g' a
h'a : f a ≠ 0
this : ↑(f a) ≠ 0
⊢ ↑(f a) * g a = ↑(f a) * g' a
[PROOFSTEP]
rw [ha this]
[GOAL]
case mp.intro.intro.htc
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f x ≠ 0}ᶜ, (fun x => ↑(f x) * g x) x = (fun x => ↑(f x) * g' x) x
[PROOFSTEP]
filter_upwards [ae_restrict_mem A.compl]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
⊢ ∀ (a : α), a ∈ {x | f x ≠ 0}ᶜ → ↑(f a) * g a = ↑(f a) * g' a
[PROOFSTEP]
intro x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
x : α
hx : x ∈ {x | f x ≠ 0}ᶜ
⊢ ↑(f x) * g x = ↑(f x) * g' x
[PROOFSTEP]
simp only [Classical.not_not, mem_setOf_eq, mem_compl_iff] at hx 
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : g =ᶠ[ae (withDensity μ fun x => ↑(f x))] g'
A : MeasurableSet {x | f x ≠ 0}
x : α
hx : f x = 0
⊢ ↑(f x) * g x = ↑(f x) * g' x
[PROOFSTEP]
simp [hx]
[GOAL]
case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g : α → ℝ≥0∞
⊢ (AEMeasurable fun x => ↑(f x) * g x) → AEMeasurable g
[PROOFSTEP]
rintro ⟨g', g'meas, hg'⟩
[GOAL]
case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ AEMeasurable g
[PROOFSTEP]
refine' ⟨fun x => ((f x)⁻¹ : ℝ≥0∞) * g' x, hf.coe_nnreal_ennreal.inv.smul g'meas, _⟩
[GOAL]
case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ g =ᶠ[ae (withDensity μ fun x => ↑(f x))] fun x => (↑(f x))⁻¹ * g' x
[PROOFSTEP]
rw [EventuallyEq, ae_withDensity_iff hf.coe_nnreal_ennreal]
[GOAL]
case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ ∀ᵐ (x : α) ∂μ, ↑(f x) ≠ 0 → g x = (↑(f x))⁻¹ * g' x
[PROOFSTEP]
filter_upwards [hg']
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
⊢ ∀ (a : α), ↑(f a) * g a = g' a → ↑(f a) ≠ 0 → g a = (↑(f a))⁻¹ * g' a
[PROOFSTEP]
intro x hx h'x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0
hf : Measurable f
g g' : α → ℝ≥0∞
g'meas : Measurable g'
hg' : (fun x => ↑(f x) * g x) =ᶠ[ae μ] g'
x : α
hx : ↑(f x) * g x = g' x
h'x : ↑(f x) ≠ 0
⊢ g x = (↑(f x))⁻¹ * g' x
[PROOFSTEP]
rw [← hx, ← mul_assoc, ENNReal.inv_mul_cancel h'x ENNReal.coe_ne_top, one_mul]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
⊢ ∀ {g : α → ℝ≥0∞}, Measurable g → ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
apply Measurable.ennreal_induction
[GOAL]
case h_ind
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
⊢ ∀ (c : ℝ≥0∞) ⦃s : Set α⦄,
    MeasurableSet s →
      ∫⁻ (a : α), indicator s (fun x => c) a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * indicator s fun x => c) a ∂μ
[PROOFSTEP]
intro c s h_ms
[GOAL]
case h_ind
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
c : ℝ≥0∞
s : Set α
h_ms : MeasurableSet s
⊢ ∫⁻ (a : α), indicator s (fun x => c) a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * indicator s fun x => c) a ∂μ
[PROOFSTEP]
simp [*, mul_comm _ c, ← indicator_mul_right]
[GOAL]
case h_add
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
⊢ ∀ ⦃f_1 g : α → ℝ≥0∞⦄,
    Disjoint (support f_1) (support g) →
      Measurable f_1 →
        Measurable g →
          ∫⁻ (a : α), f_1 a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * f_1) a ∂μ →
            ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ →
              ∫⁻ (a : α), (f_1 + g) a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * (f_1 + g)) a ∂μ
[PROOFSTEP]
intro g h _ h_mea_g _ h_ind_g h_ind_h
[GOAL]
case h_add
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
g h : α → ℝ≥0∞
a✝¹ : Disjoint (support g) (support h)
h_mea_g : Measurable g
a✝ : Measurable h
h_ind_g : ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
h_ind_h : ∫⁻ (a : α), h a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * h) a ∂μ
⊢ ∫⁻ (a : α), (g + h) a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * (g + h)) a ∂μ
[PROOFSTEP]
simp [mul_add, *, Measurable.mul]
[GOAL]
case h_iSup
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
⊢ ∀ ⦃f_1 : ℕ → α → ℝ≥0∞⦄,
    (∀ (n : ℕ), Measurable (f_1 n)) →
      Monotone f_1 →
        (∀ (n : ℕ), ∫⁻ (a : α), f_1 n a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * f_1 n) a ∂μ) →
          ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f_1 n x) a ∂Measure.withDensity μ f =
            ∫⁻ (a : α), (f * fun x => ⨆ (n : ℕ), f_1 n x) a ∂μ
[PROOFSTEP]
intro g h_mea_g h_mono_g h_ind
[GOAL]
case h_iSup
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
g : ℕ → α → ℝ≥0∞
h_mea_g : ∀ (n : ℕ), Measurable (g n)
h_mono_g : Monotone g
h_ind : ∀ (n : ℕ), ∫⁻ (a : α), g n a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g n) a ∂μ
⊢ ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), g n x) a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * fun x => ⨆ (n : ℕ), g n x) a ∂μ
[PROOFSTEP]
have : Monotone fun n a => f a * g n a := fun m n hmn x => mul_le_mul_left' (h_mono_g hmn x) _
[GOAL]
case h_iSup
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
h_mf : Measurable f
g : ℕ → α → ℝ≥0∞
h_mea_g : ∀ (n : ℕ), Measurable (g n)
h_mono_g : Monotone g
h_ind : ∀ (n : ℕ), ∫⁻ (a : α), g n a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g n) a ∂μ
this : Monotone fun n a => f a * g n a
⊢ ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), g n x) a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * fun x => ⨆ (n : ℕ), g n x) a ∂μ
[PROOFSTEP]
simp [lintegral_iSup, ENNReal.mul_iSup, h_mf.mul (h_mea_g _), *]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (x : α) in s, g x ∂Measure.withDensity μ f = ∫⁻ (x : α) in s, (f * g) x ∂μ
[PROOFSTEP]
rw [restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul _ hf hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
hg : AEMeasurable g
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
let f' := hf.mk f
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
hg : AEMeasurable g
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
have : μ.withDensity f = μ.withDensity f' := withDensity_congr_ae hf.ae_eq_mk
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
hg : AEMeasurable g
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
this : Measure.withDensity μ f = Measure.withDensity μ f'
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
rw [this] at hg ⊢
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f' = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
let g' := hg.mk g
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f' = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
calc
  ∫⁻ a, g a ∂μ.withDensity f' = ∫⁻ a, g' a ∂μ.withDensity f' := lintegral_congr_ae hg.ae_eq_mk
  _ = ∫⁻ a, (f' * g') a ∂μ := (lintegral_withDensity_eq_lintegral_mul _ hf.measurable_mk hg.measurable_mk)
  _ = ∫⁻ a, (f' * g) a ∂μ := by
    apply lintegral_congr_ae
    apply ae_of_ae_restrict_of_ae_restrict_compl {x | f' x ≠ 0}
    · have Z := hg.ae_eq_mk
      rw [EventuallyEq, ae_withDensity_iff_ae_restrict hf.measurable_mk] at Z 
      filter_upwards [Z]
      intro x hx
      simp only [hx, Pi.mul_apply]
    · have M : MeasurableSet {x : α | f' x ≠ 0}ᶜ := (hf.measurable_mk (measurableSet_singleton 0).compl).compl
      filter_upwards [ae_restrict_mem M]
      intro x hx
      simp only [Classical.not_not, mem_setOf_eq, mem_compl_iff] at hx 
      simp only [hx, zero_mul, Pi.mul_apply]
  _ = ∫⁻ a : α, (f * g) a ∂μ := by
    apply lintegral_congr_ae
    filter_upwards [hf.ae_eq_mk]
    intro x hx
    simp only [hx, Pi.mul_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ ∫⁻ (a : α), (f' * g') a ∂μ = ∫⁻ (a : α), (f' * g) a ∂μ
[PROOFSTEP]
apply lintegral_congr_ae
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ (fun a => (f' * g') a) =ᵐ[μ] fun a => (f' * g) a
[PROOFSTEP]
apply ae_of_ae_restrict_of_ae_restrict_compl {x | f' x ≠ 0}
[GOAL]
case h.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f' x ≠ 0}, (fun a => (f' * g') a) x = (fun a => (f' * g) a) x
[PROOFSTEP]
have Z := hg.ae_eq_mk
[GOAL]
case h.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
Z : g =ᵐ[Measure.withDensity μ f'] AEMeasurable.mk g hg
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f' x ≠ 0}, (fun a => (f' * g') a) x = (fun a => (f' * g) a) x
[PROOFSTEP]
rw [EventuallyEq, ae_withDensity_iff_ae_restrict hf.measurable_mk] at Z 
[GOAL]
case h.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
Z : ∀ᵐ (x : α) ∂Measure.restrict μ {x | AEMeasurable.mk f hf x ≠ 0}, g x = AEMeasurable.mk g hg x
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f' x ≠ 0}, (fun a => (f' * g') a) x = (fun a => (f' * g) a) x
[PROOFSTEP]
filter_upwards [Z]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
Z : ∀ᵐ (x : α) ∂Measure.restrict μ {x | AEMeasurable.mk f hf x ≠ 0}, g x = AEMeasurable.mk g hg x
⊢ ∀ (a : α),
    g a = AEMeasurable.mk g hg a → (AEMeasurable.mk f hf * AEMeasurable.mk g hg) a = (AEMeasurable.mk f hf * g) a
[PROOFSTEP]
intro x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
Z : ∀ᵐ (x : α) ∂Measure.restrict μ {x | AEMeasurable.mk f hf x ≠ 0}, g x = AEMeasurable.mk g hg x
x : α
hx : g x = AEMeasurable.mk g hg x
⊢ (AEMeasurable.mk f hf * AEMeasurable.mk g hg) x = (AEMeasurable.mk f hf * g) x
[PROOFSTEP]
simp only [hx, Pi.mul_apply]
[GOAL]
case h.htc
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f' x ≠ 0}ᶜ, (fun a => (f' * g') a) x = (fun a => (f' * g) a) x
[PROOFSTEP]
have M : MeasurableSet {x : α | f' x ≠ 0}ᶜ := (hf.measurable_mk (measurableSet_singleton 0).compl).compl
[GOAL]
case h.htc
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
M : MeasurableSet {x | f' x ≠ 0}ᶜ
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ {x | f' x ≠ 0}ᶜ, (fun a => (f' * g') a) x = (fun a => (f' * g) a) x
[PROOFSTEP]
filter_upwards [ae_restrict_mem M]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
M : MeasurableSet {x | f' x ≠ 0}ᶜ
⊢ ∀ (a : α),
    a ∈ {x | AEMeasurable.mk f hf x ≠ 0}ᶜ →
      (AEMeasurable.mk f hf * AEMeasurable.mk g hg) a = (AEMeasurable.mk f hf * g) a
[PROOFSTEP]
intro x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
M : MeasurableSet {x | f' x ≠ 0}ᶜ
x : α
hx : x ∈ {x | AEMeasurable.mk f hf x ≠ 0}ᶜ
⊢ (AEMeasurable.mk f hf * AEMeasurable.mk g hg) x = (AEMeasurable.mk f hf * g) x
[PROOFSTEP]
simp only [Classical.not_not, mem_setOf_eq, mem_compl_iff] at hx 
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
M : MeasurableSet {x | f' x ≠ 0}ᶜ
x : α
hx : AEMeasurable.mk f hf x = 0
⊢ (AEMeasurable.mk f hf * AEMeasurable.mk g hg) x = (AEMeasurable.mk f hf * g) x
[PROOFSTEP]
simp only [hx, zero_mul, Pi.mul_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ ∫⁻ (a : α), (f' * g) a ∂μ = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
apply lintegral_congr_ae
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ (fun a => (f' * g) a) =ᵐ[μ] fun a => (f * g) a
[PROOFSTEP]
filter_upwards [hf.ae_eq_mk]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
⊢ ∀ (a : α), f a = AEMeasurable.mk f hf a → (AEMeasurable.mk f hf * g) a = (f * g) a
[PROOFSTEP]
intro x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
hg : AEMeasurable g
this : Measure.withDensity μ f = Measure.withDensity μ f'
g' : α → ℝ≥0∞ := AEMeasurable.mk g hg
x : α
hx : f x = AEMeasurable.mk f hf x
⊢ (AEMeasurable.mk f hf * g) x = (f * g) x
[PROOFSTEP]
simp only [hx, Pi.mul_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f ≤ ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
rw [← iSup_lintegral_measurable_le_eq_lintegral, ← iSup_lintegral_measurable_le_eq_lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g : α → ℝ≥0∞
⊢ ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => g a), ∫⁻ (a : α), g_1 a ∂Measure.withDensity μ f ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => (f * g) a), ∫⁻ (a : α), g_1 a ∂μ
[PROOFSTEP]
refine' iSup₂_le fun i i_meas => iSup_le fun hi => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => g a
⊢ ∫⁻ (a : α), i a ∂Measure.withDensity μ f ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => (f * g) a), ∫⁻ (a : α), g_1 a ∂μ
[PROOFSTEP]
have A : f * i ≤ f * g := fun x => mul_le_mul_left' (hi x) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => g a
A : f * i ≤ f * g
⊢ ∫⁻ (a : α), i a ∂Measure.withDensity μ f ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => (f * g) a), ∫⁻ (a : α), g_1 a ∂μ
[PROOFSTEP]
refine' le_iSup₂_of_le (f * i) (f_meas.mul i_meas) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => g a
A : f * i ≤ f * g
⊢ ∫⁻ (a : α), i a ∂Measure.withDensity μ f ≤ ⨆ (_ : f * i ≤ fun a => (f * g) a), ∫⁻ (a : α), (f * i) a ∂μ
[PROOFSTEP]
exact le_iSup_of_le A (le_of_eq (lintegral_withDensity_eq_lintegral_mul _ f_meas i_meas))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
refine' le_antisymm (lintegral_withDensity_le_lintegral_mul μ f_meas g) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), (f * g) a ∂μ ≤ ∫⁻ (a : α), g a ∂Measure.withDensity μ f
[PROOFSTEP]
rw [← iSup_lintegral_measurable_le_eq_lintegral, ← iSup_lintegral_measurable_le_eq_lintegral]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
⊢ ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => (f * g) a), ∫⁻ (a : α), g_1 a ∂μ ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => g a), ∫⁻ (a : α), g_1 a ∂Measure.withDensity μ f
[PROOFSTEP]
refine' iSup₂_le fun i i_meas => iSup_le fun hi => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
⊢ ∫⁻ (a : α), i a ∂μ ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => g a), ∫⁻ (a : α), g_1 a ∂Measure.withDensity μ f
[PROOFSTEP]
have A : (fun x => (f x)⁻¹ * i x) ≤ g := by
  intro x
  dsimp
  rw [mul_comm, ← div_eq_mul_inv]
  exact div_le_of_le_mul' (hi x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
⊢ (fun x => (f x)⁻¹ * i x) ≤ g
[PROOFSTEP]
intro x
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
x : α
⊢ (fun x => (f x)⁻¹ * i x) x ≤ g x
[PROOFSTEP]
dsimp
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
x : α
⊢ (f x)⁻¹ * i x ≤ g x
[PROOFSTEP]
rw [mul_comm, ← div_eq_mul_inv]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
x : α
⊢ i x / f x ≤ g x
[PROOFSTEP]
exact div_le_of_le_mul' (hi x)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
⊢ ∫⁻ (a : α), i a ∂μ ≤
    ⨆ (g_1 : α → ℝ≥0∞) (_ : Measurable g_1) (_ : g_1 ≤ fun a => g a), ∫⁻ (a : α), g_1 a ∂Measure.withDensity μ f
[PROOFSTEP]
refine' le_iSup_of_le (fun x => (f x)⁻¹ * i x) (le_iSup_of_le (f_meas.inv.mul i_meas) _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
⊢ ∫⁻ (a : α), i a ∂μ ≤
    ⨆ (_ : (fun x => (f x)⁻¹ * i x) ≤ fun a => g a), ∫⁻ (a : α), (fun x => (f x)⁻¹ * i x) a ∂Measure.withDensity μ f
[PROOFSTEP]
refine' le_iSup_of_le A _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
⊢ ∫⁻ (a : α), i a ∂μ ≤ ∫⁻ (a : α), (fun x => (f x)⁻¹ * i x) a ∂Measure.withDensity μ f
[PROOFSTEP]
rw [lintegral_withDensity_eq_lintegral_mul _ f_meas (f_meas.inv.mul i_meas)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
⊢ ∫⁻ (a : α), i a ∂μ ≤ ∫⁻ (a : α), (f * fun a => (f a)⁻¹ * i a) a ∂μ
[PROOFSTEP]
apply lintegral_mono_ae
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
⊢ ∀ᵐ (a : α) ∂μ, i a ≤ (f * fun a => (f a)⁻¹ * i a) a
[PROOFSTEP]
filter_upwards [hf]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
⊢ ∀ (a : α), f a < ⊤ → i a ≤ (f * fun a => (f a)⁻¹ * i a) a
[PROOFSTEP]
intro x h'x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
⊢ i x ≤ (f * fun a => (f a)⁻¹ * i a) x
[PROOFSTEP]
rcases eq_or_ne (f x) 0 with (hx | hx)
[GOAL]
case h.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
hx : f x = 0
⊢ i x ≤ (f * fun a => (f a)⁻¹ * i a) x
[PROOFSTEP]
have := hi x
[GOAL]
case h.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
hx : f x = 0
this : i x ≤ (fun a => (f * g) a) x
⊢ i x ≤ (f * fun a => (f a)⁻¹ * i a) x
[PROOFSTEP]
simp only [hx, zero_mul, Pi.mul_apply, nonpos_iff_eq_zero] at this 
[GOAL]
case h.inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
hx : f x = 0
this : i x = 0
⊢ i x ≤ (f * fun a => (f a)⁻¹ * i a) x
[PROOFSTEP]
simp [this]
[GOAL]
case h.inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
hx : f x ≠ 0
⊢ i x ≤ (f * fun a => (f a)⁻¹ * i a) x
[PROOFSTEP]
apply le_of_eq _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
hx : f x ≠ 0
⊢ i x = (f * fun a => (f a)⁻¹ * i a) x
[PROOFSTEP]
dsimp
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
hf : ∀ᵐ (x : α) ∂μ, f x < ⊤
g i : α → ℝ≥0∞
i_meas : Measurable i
hi : i ≤ fun a => (f * g) a
A : (fun x => (f x)⁻¹ * i x) ≤ g
x : α
h'x : f x < ⊤
hx : f x ≠ 0
⊢ i x = f x * ((f x)⁻¹ * i x)
[PROOFSTEP]
rw [← mul_assoc, ENNReal.mul_inv_cancel hx h'x.ne, one_mul]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
f_meas : Measurable f
g : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂Measure.restrict μ s, f x < ⊤
⊢ ∫⁻ (a : α) in s, g a ∂Measure.withDensity μ f = ∫⁻ (a : α) in s, (f * g) a ∂μ
[PROOFSTEP]
rw [restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul_non_measurable _ f_meas hf]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
let f' := hf.mk f
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
calc
  ∫⁻ a, g a ∂μ.withDensity f = ∫⁻ a, g a ∂μ.withDensity f' := by rw [withDensity_congr_ae hf.ae_eq_mk]
  _ = ∫⁻ a, (f' * g) a ∂μ :=
    by
    apply lintegral_withDensity_eq_lintegral_mul_non_measurable _ hf.measurable_mk
    filter_upwards [h'f, hf.ae_eq_mk]
    intro x hx h'x
    rwa [← h'x]
  _ = ∫⁻ a, (f * g) a ∂μ := by
    apply lintegral_congr_ae
    filter_upwards [hf.ae_eq_mk]
    intro x hx
    simp only [hx, Pi.mul_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f = ∫⁻ (a : α), g a ∂Measure.withDensity μ f'
[PROOFSTEP]
rw [withDensity_congr_ae hf.ae_eq_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∫⁻ (a : α), g a ∂Measure.withDensity μ f' = ∫⁻ (a : α), (f' * g) a ∂μ
[PROOFSTEP]
apply lintegral_withDensity_eq_lintegral_mul_non_measurable _ hf.measurable_mk
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∀ᵐ (x : α) ∂μ, AEMeasurable.mk f hf x < ⊤
[PROOFSTEP]
filter_upwards [h'f, hf.ae_eq_mk]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∀ (a : α), f a < ⊤ → f a = AEMeasurable.mk f hf a → AEMeasurable.mk f hf a < ⊤
[PROOFSTEP]
intro x hx h'x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
x : α
hx : f x < ⊤
h'x : f x = AEMeasurable.mk f hf x
⊢ AEMeasurable.mk f hf x < ⊤
[PROOFSTEP]
rwa [← h'x]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∫⁻ (a : α), (f' * g) a ∂μ = ∫⁻ (a : α), (f * g) a ∂μ
[PROOFSTEP]
apply lintegral_congr_ae
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ (fun a => (f' * g) a) =ᵐ[μ] fun a => (f * g) a
[PROOFSTEP]
filter_upwards [hf.ae_eq_mk]
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
⊢ ∀ (a : α), f a = AEMeasurable.mk f hf a → (AEMeasurable.mk f hf * g) a = (f * g) a
[PROOFSTEP]
intro x hx
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f
h'f : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → ℝ≥0∞
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf
x : α
hx : f x = AEMeasurable.mk f hf x
⊢ (AEMeasurable.mk f hf * g) x = (f * g) x
[PROOFSTEP]
simp only [hx, Pi.mul_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hf : AEMeasurable f
g : α → ℝ≥0∞
hs : MeasurableSet s
h'f : ∀ᵐ (x : α) ∂Measure.restrict μ s, f x < ⊤
⊢ ∫⁻ (a : α) in s, g a ∂Measure.withDensity μ f = ∫⁻ (a : α) in s, (f * g) a ∂μ
[PROOFSTEP]
rw [restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul_non_measurable₀ _ hf h'f]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
⊢ Measure.withDensity μ (f * g) = Measure.withDensity (Measure.withDensity μ f) g
[PROOFSTEP]
ext1 s hs
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
hs : MeasurableSet s
⊢ ↑↑(Measure.withDensity μ (f * g)) s = ↑↑(Measure.withDensity (Measure.withDensity μ f) g) s
[PROOFSTEP]
simp [withDensity_apply _ hs, restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul _ hf hg]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
set s : ℕ → Set α := disjointed (spanningSets μ)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
have : ∀ n, μ (s n) < ∞ := fun n => (measure_mono <| disjointed_subset _ _).trans_lt (measure_spanningSets_lt_top μ n)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
obtain ⟨δ, δpos, δsum⟩ : ∃ δ : ℕ → ℝ≥0, (∀ i, 0 < δ i) ∧ (∑' i, μ (s i) * δ i) < ε
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
⊢ ∃ δ, (∀ (i : ℕ), 0 < δ i) ∧ ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
exact ENNReal.exists_pos_tsum_mul_lt_of_countable ε0 _ fun n => (this n).ne
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
set N : α → ℕ := spanningSetsIndex μ
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
N : α → ℕ := spanningSetsIndex μ
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
have hN_meas : Measurable N := measurable_spanningSetsIndex μ
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
N : α → ℕ := spanningSetsIndex μ
hN_meas : Measurable N
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
have hNs : ∀ n, N ⁻¹' { n } = s n := preimage_spanningSetsIndex_singleton μ
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
N : α → ℕ := spanningSetsIndex μ
hN_meas : Measurable N
hNs : ∀ (n : ℕ), N ⁻¹' {n} = s n
⊢ ∃ g, (∀ (x : α), 0 < g x) ∧ Measurable g ∧ ∫⁻ (x : α), ↑(g x) ∂μ < ε
[PROOFSTEP]
refine' ⟨δ ∘ N, fun x => δpos _, measurable_from_nat.comp hN_meas, _⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
N : α → ℕ := spanningSetsIndex μ
hN_meas : Measurable N
hNs : ∀ (n : ℕ), N ⁻¹' {n} = s n
⊢ ∫⁻ (x : α), ↑((δ ∘ N) x) ∂μ < ε
[PROOFSTEP]
erw [lintegral_comp measurable_from_nat.coe_nnreal_ennreal hN_meas]
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
ε : ℝ≥0∞
ε0 : ε ≠ 0
s : ℕ → Set α := disjointed (spanningSets μ)
this : ∀ (n : ℕ), ↑↑μ (s n) < ⊤
δ : ℕ → ℝ≥0
δpos : ∀ (i : ℕ), 0 < δ i
δsum : ∑' (i : ℕ), ↑↑μ (s i) * ↑(δ i) < ε
N : α → ℕ := spanningSetsIndex μ
hN_meas : Measurable N
hNs : ∀ (n : ℕ), N ⁻¹' {n} = s n
⊢ ∫⁻ (a : ℕ), ↑(δ a) ∂Measure.map N μ < ε
[PROOFSTEP]
simpa [hNs, lintegral_countable', measurable_spanningSetsIndex, mul_comm] using δsum
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
refine' @Measurable.ennreal_induction α m (fun f => ∫⁻ a, f a ∂μ.trim hm = ∫⁻ a, f a ∂μ) _ _ _ f hf
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ (c : ℝ≥0∞) ⦃s : Set α⦄,
    MeasurableSet s → (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (indicator s fun x => c)
[PROOFSTEP]
intro c s hs
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α), indicator s (fun x => c) a ∂Measure.trim μ hm = ∫⁻ (a : α), indicator s (fun x => c) a ∂μ
[PROOFSTEP]
rw [lintegral_indicator _ hs, lintegral_indicator _ (hm s hs), set_lintegral_const, set_lintegral_const]
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ c * ↑↑(Measure.trim μ hm) s = c * ↑↑μ s
[PROOFSTEP]
suffices h_trim_s : μ.trim hm s = μ s
[GOAL]
case refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
h_trim_s : ↑↑(Measure.trim μ hm) s = ↑↑μ s
⊢ c * ↑↑(Measure.trim μ hm) s = c * ↑↑μ s
[PROOFSTEP]
rw [h_trim_s]
[GOAL]
case h_trim_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
c : ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ↑↑(Measure.trim μ hm) s = ↑↑μ s
[PROOFSTEP]
exact trim_measurableSet_eq hm hs
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ ⦃f g : α → ℝ≥0∞⦄,
    Disjoint (support f) (support g) →
      Measurable f →
        Measurable g →
          (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) f →
            (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) g →
              (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (f + g)
[PROOFSTEP]
intro f g _ hf _ hf_prop hg_prop
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f g : α → ℝ≥0∞
a✝¹ : Disjoint (support f) (support g)
hf : Measurable f
a✝ : Measurable g
hf_prop : ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ
hg_prop : ∫⁻ (a : α), g a ∂Measure.trim μ hm = ∫⁻ (a : α), g a ∂μ
⊢ ∫⁻ (a : α), (f + g) a ∂Measure.trim μ hm = ∫⁻ (a : α), (f + g) a ∂μ
[PROOFSTEP]
have h_m := lintegral_add_left (μ := Measure.trim μ hm) hf g
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f g : α → ℝ≥0∞
a✝¹ : Disjoint (support f) (support g)
hf : Measurable f
a✝ : Measurable g
hf_prop : ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ
hg_prop : ∫⁻ (a : α), g a ∂Measure.trim μ hm = ∫⁻ (a : α), g a ∂μ
h_m : ∫⁻ (a : α), f a + g a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂Measure.trim μ hm + ∫⁻ (a : α), g a ∂Measure.trim μ hm
⊢ ∫⁻ (a : α), (f + g) a ∂Measure.trim μ hm = ∫⁻ (a : α), (f + g) a ∂μ
[PROOFSTEP]
have h_m0 := lintegral_add_left (μ := μ) (Measurable.mono hf hm le_rfl) g
[GOAL]
case refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f g : α → ℝ≥0∞
a✝¹ : Disjoint (support f) (support g)
hf : Measurable f
a✝ : Measurable g
hf_prop : ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ
hg_prop : ∫⁻ (a : α), g a ∂Measure.trim μ hm = ∫⁻ (a : α), g a ∂μ
h_m : ∫⁻ (a : α), f a + g a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂Measure.trim μ hm + ∫⁻ (a : α), g a ∂Measure.trim μ hm
h_m0 : ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
⊢ ∫⁻ (a : α), (f + g) a ∂Measure.trim μ hm = ∫⁻ (a : α), (f + g) a ∂μ
[PROOFSTEP]
rwa [hf_prop, hg_prop, ← h_m0] at h_m 
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : Measurable f
⊢ ∀ ⦃f : ℕ → α → ℝ≥0∞⦄,
    (∀ (n : ℕ), Measurable (f n)) →
      Monotone f →
        (∀ (n : ℕ), (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (f n)) →
          (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) fun x => ⨆ (n : ℕ), f n x
[PROOFSTEP]
intro f hf hf_mono hf_prop
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f n x) a ∂Measure.trim μ hm = ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f n x) a ∂μ
[PROOFSTEP]
rw [lintegral_iSup hf hf_mono]
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂Measure.trim μ hm = ∫⁻ (a : α), (fun x => ⨆ (n : ℕ), f n x) a ∂μ
[PROOFSTEP]
rw [lintegral_iSup (fun n => Measurable.mono (hf n) hm le_rfl) hf_mono]
[GOAL]
case refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂Measure.trim μ hm = ⨆ (n : ℕ), ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
congr
[GOAL]
case refine'_3.e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f✝ : α → ℝ≥0∞
hf✝ : Measurable f✝
f : ℕ → α → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
hf_mono : Monotone f
hf_prop : ∀ (n : ℕ), (fun f => ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ) (f n)
⊢ (fun n => ∫⁻ (a : α), f n a ∂Measure.trim μ hm) = fun n => ∫⁻ (a : α), f n a ∂μ
[PROOFSTEP]
exact funext fun n => hf_prop n
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : AEMeasurable f
⊢ ∫⁻ (a : α), f a ∂Measure.trim μ hm = ∫⁻ (a : α), f a ∂μ
[PROOFSTEP]
rw [lintegral_congr_ae (ae_eq_of_ae_eq_trim hf.ae_eq_mk), lintegral_congr_ae hf.ae_eq_mk,
  lintegral_trim hm hf.measurable_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
⊢ f univ ≤ C
[PROOFSTEP]
let S := @spanningSets _ m (μ.trim hm) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
S : ℕ → Set α := spanningSets (Measure.trim μ hm)
⊢ f univ ≤ C
[PROOFSTEP]
have hS_mono : Monotone S := @monotone_spanningSets _ m (μ.trim hm) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
S : ℕ → Set α := spanningSets (Measure.trim μ hm)
hS_mono : Monotone S
⊢ f univ ≤ C
[PROOFSTEP]
have hS_meas : ∀ n, MeasurableSet[m] (S n) := @measurable_spanningSets _ m (μ.trim hm) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
S : ℕ → Set α := spanningSets (Measure.trim μ hm)
hS_mono : Monotone S
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
⊢ f univ ≤ C
[PROOFSTEP]
rw [← @iUnion_spanningSets _ m (μ.trim hm)]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
S : ℕ → Set α := spanningSets (Measure.trim μ hm)
hS_mono : Monotone S
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
⊢ f (⋃ (i : ℕ), spanningSets (Measure.trim μ hm) i) ≤ C
[PROOFSTEP]
refine' (h_F_lim S hS_meas hS_mono).trans _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
S : ℕ → Set α := spanningSets (Measure.trim μ hm)
hS_mono : Monotone S
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
⊢ ⨆ (n : ℕ), f (S n) ≤ C
[PROOFSTEP]
refine' iSup_le fun n => hf (S n) (hS_meas n) _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : Set α → ℝ≥0∞
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → f s ≤ C
h_F_lim : ∀ (S : ℕ → Set α), (∀ (n : ℕ), MeasurableSet (S n)) → Monotone S → f (⋃ (n : ℕ), S n) ≤ ⨆ (n : ℕ), f (S n)
S : ℕ → Set α := spanningSets (Measure.trim μ hm)
hS_mono : Monotone S
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
n : ℕ
⊢ ↑↑μ (S n) ≠ ⊤
[PROOFSTEP]
exact ((le_trim hm).trans_lt (@measure_spanningSets_lt_top _ m (μ.trim hm) _ n)).ne
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
⊢ ∫⁻ (x : α), f x ∂μ ≤ C
[PROOFSTEP]
have : ∫⁻ x in univ, f x ∂μ = ∫⁻ x, f x ∂μ := by simp only [Measure.restrict_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
⊢ ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
[PROOFSTEP]
simp only [Measure.restrict_univ]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
⊢ ∫⁻ (x : α), f x ∂μ ≤ C
[PROOFSTEP]
rw [← this]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
⊢ ∫⁻ (x : α) in univ, f x ∂μ ≤ C
[PROOFSTEP]
refine' univ_le_of_forall_fin_meas_le hm C hf fun S hS_meas hS_mono => _
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ ∫⁻ (x : α) in ⋃ (n : ℕ), S n, f x ∂μ ≤ ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ
[PROOFSTEP]
rw [← lintegral_indicator]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ ∫⁻ (a : α), indicator (⋃ (n : ℕ), S n) (fun x => f x) a ∂μ ≤ ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ
case hs
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ MeasurableSet (⋃ (n : ℕ), S n)
[PROOFSTEP]
swap
[GOAL]
case hs
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ MeasurableSet (⋃ (n : ℕ), S n)
[PROOFSTEP]
exact hm (⋃ n, S n) (@MeasurableSet.iUnion _ _ m _ _ hS_meas)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ ∫⁻ (a : α), indicator (⋃ (n : ℕ), S n) (fun x => f x) a ∂μ ≤ ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ
[PROOFSTEP]
have h_integral_indicator : ⨆ n, ∫⁻ x in S n, f x ∂μ = ⨆ n, ∫⁻ x, (S n).indicator f x ∂μ :=
  by
  congr
  ext1 n
  rw [lintegral_indicator _ (hm _ (hS_meas n))]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
[PROOFSTEP]
congr
[GOAL]
case e_s
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
⊢ (fun n => ∫⁻ (x : α) in S n, f x ∂μ) = fun n => ∫⁻ (x : α), indicator (S n) f x ∂μ
[PROOFSTEP]
ext1 n
[GOAL]
case e_s.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
n : ℕ
⊢ ∫⁻ (x : α) in S n, f x ∂μ = ∫⁻ (x : α), indicator (S n) f x ∂μ
[PROOFSTEP]
rw [lintegral_indicator _ (hm _ (hS_meas n))]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
⊢ ∫⁻ (a : α), indicator (⋃ (n : ℕ), S n) (fun x => f x) a ∂μ ≤ ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ
[PROOFSTEP]
rw [h_integral_indicator, ← lintegral_iSup]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
⊢ ∫⁻ (a : α), indicator (⋃ (n : ℕ), S n) (fun x => f x) a ∂μ ≤ ∫⁻ (a : α), ⨆ (n : ℕ), indicator (S n) f a ∂μ
[PROOFSTEP]
refine' le_of_eq (lintegral_congr fun x => _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
⊢ indicator (⋃ (n : ℕ), S n) (fun x => f x) x = ⨆ (n : ℕ), indicator (S n) f x
[PROOFSTEP]
simp_rw [indicator_apply]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
⊢ (if x ∈ ⋃ (n : ℕ), S n then f x else 0) = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
by_cases hx_mem : x ∈ iUnion S
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
⊢ (if x ∈ ⋃ (n : ℕ), S n then f x else 0) = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
simp only [hx_mem, if_true]
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
⊢ f x = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
obtain ⟨n, hxn⟩ := mem_iUnion.mp hx_mem
[GOAL]
case pos.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
n : ℕ
hxn : x ∈ S n
⊢ f x = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
refine' le_antisymm (_root_.trans _ (le_iSup _ n)) (iSup_le fun i => _)
[GOAL]
case pos.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
n : ℕ
hxn : x ∈ S n
⊢ f x ≤ if x ∈ S n then f x else 0
[PROOFSTEP]
simp only [hxn, le_refl, if_true]
[GOAL]
case pos.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
n : ℕ
hxn : x ∈ S n
i : ℕ
⊢ (if x ∈ S i then f x else 0) ≤ f x
[PROOFSTEP]
by_cases hxi : x ∈ S i
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
n : ℕ
hxn : x ∈ S n
i : ℕ
hxi : x ∈ S i
⊢ (if x ∈ S i then f x else 0) ≤ f x
[PROOFSTEP]
simp [hxi]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : x ∈ iUnion S
n : ℕ
hxn : x ∈ S n
i : ℕ
hxi : ¬x ∈ S i
⊢ (if x ∈ S i then f x else 0) ≤ f x
[PROOFSTEP]
simp [hxi]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : ¬x ∈ iUnion S
⊢ (if x ∈ ⋃ (n : ℕ), S n then f x else 0) = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
simp only [hx_mem, if_false]
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : ¬x ∈ iUnion S
⊢ 0 = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
rw [mem_iUnion] at hx_mem 
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : ¬∃ i, x ∈ S i
⊢ 0 = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
push_neg at hx_mem 
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : ∀ (i : ℕ), ¬x ∈ S i
⊢ 0 = ⨆ (n : ℕ), if x ∈ S n then f x else 0
[PROOFSTEP]
refine' le_antisymm (zero_le _) (iSup_le fun n => _)
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
x : α
hx_mem : ∀ (i : ℕ), ¬x ∈ S i
n : ℕ
⊢ (if x ∈ S n then f x else 0) ≤ 0
[PROOFSTEP]
simp only [hx_mem n, if_false, nonpos_iff_eq_zero]
[GOAL]
case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
⊢ ∀ (n : ℕ), Measurable fun x => indicator (S n) f x
[PROOFSTEP]
exact fun n => hf_meas.indicator (hm _ (hS_meas n))
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
⊢ Monotone fun n x => indicator (S n) f x
[PROOFSTEP]
intro n₁ n₂ hn₁₂ a
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
n₁ n₂ : ℕ
hn₁₂ : n₁ ≤ n₂
a : α
⊢ (fun n x => indicator (S n) f x) n₁ a ≤ (fun n x => indicator (S n) f x) n₂ a
[PROOFSTEP]
simp_rw [indicator_apply]
[GOAL]
case h_mono
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
n₁ n₂ : ℕ
hn₁₂ : n₁ ≤ n₂
a : α
⊢ (if a ∈ S n₁ then f a else 0) ≤ if a ∈ S n₂ then f a else 0
[PROOFSTEP]
split_ifs with h h_1
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
n₁ n₂ : ℕ
hn₁₂ : n₁ ≤ n₂
a : α
h : a ∈ S n₁
h_1 : a ∈ S n₂
⊢ f a ≤ f a
[PROOFSTEP]
exact le_rfl
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
n₁ n₂ : ℕ
hn₁₂ : n₁ ≤ n₂
a : α
h : a ∈ S n₁
h_1 : ¬a ∈ S n₂
⊢ f a ≤ 0
[PROOFSTEP]
exact absurd (mem_of_mem_of_subset h (hS_mono hn₁₂)) h_1
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
n₁ n₂ : ℕ
hn₁₂ : n₁ ≤ n₂
a : α
h : ¬a ∈ S n₁
h✝ : a ∈ S n₂
⊢ 0 ≤ f a
[PROOFSTEP]
exact zero_le _
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : Measurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
this : ∫⁻ (x : α) in univ, f x ∂μ = ∫⁻ (x : α), f x ∂μ
S : ℕ → Set α
hS_meas : ∀ (n : ℕ), MeasurableSet (S n)
hS_mono : Monotone S
h_integral_indicator : ⨆ (n : ℕ), ∫⁻ (x : α) in S n, f x ∂μ = ⨆ (n : ℕ), ∫⁻ (x : α), indicator (S n) f x ∂μ
n₁ n₂ : ℕ
hn₁₂ : n₁ ≤ n₂
a : α
h : ¬a ∈ S n₁
h✝ : ¬a ∈ S n₂
⊢ 0 ≤ 0
[PROOFSTEP]
exact le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
⊢ ∫⁻ (x : α), f x ∂μ ≤ C
[PROOFSTEP]
let f' := hf_meas.mk f
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
⊢ ∫⁻ (x : α), f x ∂μ ≤ C
[PROOFSTEP]
have hf' : ∀ s, MeasurableSet[m] s → μ s ≠ ∞ → ∫⁻ x in s, f' x ∂μ ≤ C :=
  by
  refine' fun s hs hμs => (le_of_eq _).trans (hf s hs hμs)
  refine' lintegral_congr_ae (ae_restrict_of_ae (hf_meas.ae_eq_mk.mono fun x hx => _))
  dsimp only
  rw [hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
⊢ ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f' x ∂μ ≤ C
[PROOFSTEP]
refine' fun s hs hμs => (le_of_eq _).trans (hf s hs hμs)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
s : Set α
hs : MeasurableSet s
hμs : ↑↑μ s ≠ ⊤
⊢ ∫⁻ (x : α) in s, f' x ∂μ = ∫⁻ (x : α) in s, f x ∂μ
[PROOFSTEP]
refine' lintegral_congr_ae (ae_restrict_of_ae (hf_meas.ae_eq_mk.mono fun x hx => _))
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
s : Set α
hs : MeasurableSet s
hμs : ↑↑μ s ≠ ⊤
x : α
hx : f x = AEMeasurable.mk f hf_meas x
⊢ (fun x => f' x) x = (fun x => f x) x
[PROOFSTEP]
dsimp only
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
s : Set α
hs : MeasurableSet s
hμs : ↑↑μ s ≠ ⊤
x : α
hx : f x = AEMeasurable.mk f hf_meas x
⊢ AEMeasurable.mk f hf_meas x = f x
[PROOFSTEP]
rw [hx]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
hf' : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f' x ∂μ ≤ C
⊢ ∫⁻ (x : α), f x ∂μ ≤ C
[PROOFSTEP]
rw [lintegral_congr_ae hf_meas.ae_eq_mk]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
μ : Measure α
hm : m ≤ m0
inst✝ : SigmaFinite (Measure.trim μ hm)
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
f' : α → ℝ≥0∞ := AEMeasurable.mk f hf_meas
hf' : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f' x ∂μ ≤ C
⊢ ∫⁻ (a : α), AEMeasurable.mk f hf_meas a ∂μ ≤ C
[PROOFSTEP]
exact lintegral_le_of_forall_fin_meas_le_of_measurable hm C hf_meas.measurable_mk hf'
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
E : Type u_5
inst✝⁴ : NormedAddCommGroup E
inst✝³ : MeasurableSpace E
inst✝² : OpensMeasurableSpace E
inst✝¹ : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
C : ℝ≥0∞
f : α → ℝ≥0∞
hf_meas : AEMeasurable f
hf : ∀ (s : Set α), MeasurableSet s → ↑↑μ s ≠ ⊤ → ∫⁻ (x : α) in s, f x ∂μ ≤ C
⊢ SigmaFinite (Measure.trim μ (_ : inst✝¹ ≤ inst✝¹))
[PROOFSTEP]
rwa [trim_eq_self]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑f x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑f x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
induction' f using MeasureTheory.SimpleFunc.induction with c s hs f₁ f₂ _ h₁ h₂ generalizing L
[GOAL]
case h_ind
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑(piecewise s hs (const α c) (const α 0)) x) ∂μ
⊢ ∃ g,
    (∀ (x : α), ↑g x ≤ ↑(piecewise s hs (const α c) (const α 0)) x) ∧
      ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
simp only [hs, const_zero, coe_piecewise, coe_const, SimpleFunc.coe_zero, univ_inter, piecewise_eq_indicator,
  lintegral_indicator, lintegral_const, Measure.restrict_apply', ENNReal.coe_indicator, Function.const_apply] at hL 
[GOAL]
case h_ind
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
⊢ ∃ g,
    (∀ (x : α), ↑g x ≤ ↑(piecewise s hs (const α c) (const α 0)) x) ∧
      ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
have c_ne_zero : c ≠ 0 := by
  intro hc
  simp only [hc, ENNReal.coe_zero, zero_mul, not_lt_zero] at hL 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
⊢ c ≠ 0
[PROOFSTEP]
intro hc
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
hc : c = 0
⊢ False
[PROOFSTEP]
simp only [hc, ENNReal.coe_zero, zero_mul, not_lt_zero] at hL 
[GOAL]
case h_ind
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
⊢ ∃ g,
    (∀ (x : α), ↑g x ≤ ↑(piecewise s hs (const α c) (const α 0)) x) ∧
      ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
have : L / c < μ s := by
  rwa [ENNReal.div_lt_iff, mul_comm]
  · simp only [c_ne_zero, Ne.def, coe_eq_zero, not_false_iff, true_or_iff]
  · simp only [Ne.def, coe_ne_top, not_false_iff, true_or_iff]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
⊢ L / ↑c < ↑↑μ s
[PROOFSTEP]
rwa [ENNReal.div_lt_iff, mul_comm]
[GOAL]
case h0
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
⊢ ↑c ≠ 0 ∨ L ≠ 0
[PROOFSTEP]
simp only [c_ne_zero, Ne.def, coe_eq_zero, not_false_iff, true_or_iff]
[GOAL]
case ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
⊢ ↑c ≠ ⊤ ∨ L ≠ ⊤
[PROOFSTEP]
simp only [Ne.def, coe_ne_top, not_false_iff, true_or_iff]
[GOAL]
case h_ind
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
⊢ ∃ g,
    (∀ (x : α), ↑g x ≤ ↑(piecewise s hs (const α c) (const α 0)) x) ∧
      ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
obtain ⟨t, ht, ts, mlt, t_top⟩ : ∃ t : Set α, MeasurableSet t ∧ t ⊆ s ∧ L / ↑c < μ t ∧ μ t < ∞ :=
  Measure.exists_subset_measure_lt_top hs this
[GOAL]
case h_ind.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
⊢ ∃ g,
    (∀ (x : α), ↑g x ≤ ↑(piecewise s hs (const α c) (const α 0)) x) ∧
      ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
refine' ⟨piecewise t ht (const α c) (const α 0), fun x => _, _, _⟩
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
x : α
⊢ ↑(piecewise t ht (const α c) (const α 0)) x ≤ ↑(piecewise s hs (const α c) (const α 0)) x
[PROOFSTEP]
refine indicator_le_indicator_of_subset ts (fun x => ?_) x
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
x✝ x : α
⊢ 0 ≤ ↑(const α c) x
[PROOFSTEP]
exact zero_le _
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
⊢ ∫⁻ (x : α), ↑(↑(piecewise t ht (const α c) (const α 0)) x) ∂μ < ⊤
[PROOFSTEP]
simp only [ht, const_zero, coe_piecewise, coe_const, SimpleFunc.coe_zero, univ_inter, piecewise_eq_indicator,
  ENNReal.coe_indicator, Function.const_apply, lintegral_indicator, lintegral_const, Measure.restrict_apply',
  ENNReal.mul_lt_top ENNReal.coe_ne_top t_top.ne]
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
⊢ L < ∫⁻ (x : α), ↑(↑(piecewise t ht (const α c) (const α 0)) x) ∂μ
[PROOFSTEP]
simp only [ht, const_zero, coe_piecewise, coe_const, SimpleFunc.coe_zero, piecewise_eq_indicator, ENNReal.coe_indicator,
  Function.const_apply, lintegral_indicator, lintegral_const, Measure.restrict_apply', univ_inter]
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
⊢ L < ↑c * ↑↑μ t
[PROOFSTEP]
rwa [mul_comm, ← ENNReal.div_lt_iff]
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_3.h0
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
⊢ ↑c ≠ 0 ∨ L ≠ 0
[PROOFSTEP]
simp only [c_ne_zero, Ne.def, coe_eq_zero, not_false_iff, true_or_iff]
[GOAL]
case h_ind.intro.intro.intro.intro.refine'_3.ht
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
c : ℝ≥0
s : Set α
hs : MeasurableSet s
L : ℝ≥0∞
hL : L < ↑c * ↑↑μ s
c_ne_zero : c ≠ 0
this : L / ↑c < ↑↑μ s
t : Set α
ht : MeasurableSet t
ts : t ⊆ s
mlt : L / ↑c < ↑↑μ t
t_top : ↑↑μ t < ⊤
⊢ ↑c ≠ ⊤ ∨ L ≠ ⊤
[PROOFSTEP]
simp only [Ne.def, coe_ne_top, not_false_iff, true_or_iff]
[GOAL]
case h_add
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑(f₁ + f₂) x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
replace hL : L < ∫⁻ x, f₁ x ∂μ + ∫⁻ x, f₂ x ∂μ
[GOAL]
case hL
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑(f₁ + f₂) x) ∂μ
⊢ L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
[PROOFSTEP]
rwa [← lintegral_add_left f₁.measurable.coe_nnreal_ennreal]
[GOAL]
case h_add
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
by_cases hf₁ : ∫⁻ x, f₁ x ∂μ = 0
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
simp only [hf₁, zero_add] at hL 
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hf₁ : ∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hL : L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
rcases h₂ hL with ⟨g, g_le, g_top, gL⟩
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hf₁ : ∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hL : L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
g : α →ₛ ℝ≥0
g_le : ∀ (x : α), ↑g x ≤ ↑f₂ x
g_top : ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤
gL : L < ∫⁻ (x : α), ↑(↑g x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
refine' ⟨g, fun x => (g_le x).trans _, g_top, gL⟩
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hf₁ : ∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hL : L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
g : α →ₛ ℝ≥0
g_le : ∀ (x : α), ↑g x ≤ ↑f₂ x
g_top : ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤
gL : L < ∫⁻ (x : α), ↑(↑g x) ∂μ
x : α
⊢ ↑f₂ x ≤ ↑(f₁ + f₂) x
[PROOFSTEP]
simp only [SimpleFunc.coe_add, Pi.add_apply, le_add_iff_nonneg_left, zero_le']
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
by_cases hf₂ : ∫⁻ x, f₂ x ∂μ = 0
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
simp only [hf₂, add_zero] at hL 
[GOAL]
case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
rcases h₁ hL with ⟨g, g_le, g_top, gL⟩
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
g : α →ₛ ℝ≥0
g_le : ∀ (x : α), ↑g x ≤ ↑f₁ x
g_top : ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤
gL : L < ∫⁻ (x : α), ↑(↑g x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
refine' ⟨g, fun x => (g_le x).trans _, g_top, gL⟩
[GOAL]
case pos.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
g : α →ₛ ℝ≥0
g_le : ∀ (x : α), ↑g x ≤ ↑f₁ x
g_top : ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤
gL : L < ∫⁻ (x : α), ↑(↑g x) ∂μ
x : α
⊢ ↑f₁ x ≤ ↑(f₁ + f₂) x
[PROOFSTEP]
simp only [SimpleFunc.coe_add, Pi.add_apply, le_add_iff_nonneg_right, zero_le']
[GOAL]
case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
obtain ⟨L₁, L₂, hL₁, hL₂, hL⟩ : ∃ L₁ L₂ : ℝ≥0∞, (L₁ < ∫⁻ x, f₁ x ∂μ) ∧ (L₂ < ∫⁻ x, f₂ x ∂μ) ∧ L < L₁ + L₂ :=
  ENNReal.exists_lt_add_of_lt_add hL hf₁ hf₂
[GOAL]
case neg.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
rcases h₁ hL₁ with ⟨g₁, g₁_le, g₁_top, hg₁⟩
[GOAL]
case neg.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
rcases h₂ hL₂ with ⟨g₂, g₂_le, g₂_top, hg₂⟩
[GOAL]
case neg.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ ↑(f₁ + f₂) x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
refine' ⟨g₁ + g₂, fun x => add_le_add (g₁_le x) (g₂_le x), _, _⟩
[GOAL]
case neg.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ ∫⁻ (x : α), ↑(↑(g₁ + g₂) x) ∂μ < ⊤
[PROOFSTEP]
apply lt_of_le_of_lt _ (add_lt_top.2 ⟨g₁_top, g₂_top⟩)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ ∫⁻ (x : α), ↑(↑(g₁ + g₂) x) ∂μ ≤ ∫⁻ (x : α), ↑(↑g₁ x) ∂μ + ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
[PROOFSTEP]
rw [← lintegral_add_left g₁.measurable.coe_nnreal_ennreal]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ ∫⁻ (x : α), ↑(↑(g₁ + g₂) x) ∂μ ≤ ∫⁻ (a : α), ↑(↑g₁ a) + ↑(↑g₂ a) ∂μ
[PROOFSTEP]
exact le_rfl
[GOAL]
case neg.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ L < ∫⁻ (x : α), ↑(↑(g₁ + g₂) x) ∂μ
[PROOFSTEP]
apply hL.trans ((ENNReal.add_lt_add hg₁ hg₂).trans_le _)
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ ∫⁻ (x : α), ↑(↑g₁ x) ∂μ + ∫⁻ (x : α), ↑(↑g₂ x) ∂μ ≤ ∫⁻ (x : α), ↑(↑(g₁ + g₂) x) ∂μ
[PROOFSTEP]
rw [← lintegral_add_left g₁.measurable.coe_nnreal_ennreal]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α →ₛ ℝ≥0
L✝ : ℝ≥0∞
hL✝¹ : L✝ < ∫⁻ (x : α), ↑(↑f x) ∂μ
f₁ f₂ : α →ₛ ℝ≥0
a✝ : Disjoint (support ↑f₁) (support ↑f₂)
h₁ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₁ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
h₂ :
  ∀ {L : ℝ≥0∞},
    L < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ →
      ∃ g, (∀ (x : α), ↑g x ≤ ↑f₂ x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
L : ℝ≥0∞
hL✝ : L < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ + ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hf₁ : ¬∫⁻ (x : α), ↑(↑f₁ x) ∂μ = 0
hf₂ : ¬∫⁻ (x : α), ↑(↑f₂ x) ∂μ = 0
L₁ L₂ : ℝ≥0∞
hL₁ : L₁ < ∫⁻ (x : α), ↑(↑f₁ x) ∂μ
hL₂ : L₂ < ∫⁻ (x : α), ↑(↑f₂ x) ∂μ
hL : L < L₁ + L₂
g₁ : α →ₛ ℝ≥0
g₁_le : ∀ (x : α), ↑g₁ x ≤ ↑f₁ x
g₁_top : ∫⁻ (x : α), ↑(↑g₁ x) ∂μ < ⊤
hg₁ : L₁ < ∫⁻ (x : α), ↑(↑g₁ x) ∂μ
g₂ : α →ₛ ℝ≥0
g₂_le : ∀ (x : α), ↑g₂ x ≤ ↑f₂ x
g₂_top : ∫⁻ (x : α), ↑(↑g₂ x) ∂μ < ⊤
hg₂ : L₂ < ∫⁻ (x : α), ↑(↑g₂ x) ∂μ
⊢ ∫⁻ (a : α), ↑(↑g₁ a) + ↑(↑g₂ a) ∂μ ≤ ∫⁻ (x : α), ↑(↑(g₁ + g₂) x) ∂μ
[PROOFSTEP]
exact le_rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
hL : L < ∫⁻ (x : α), ↑(f x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ f x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
simp_rw [lintegral_eq_nnreal, lt_iSup_iff] at hL 
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
hL : ∃ i i_1, L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some i) μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ f x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
rcases hL with ⟨g₀, hg₀, g₀L⟩
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
g₀ : α →ₛ ℝ≥0
hg₀ : ∀ (x : α), ↑(↑g₀ x) ≤ ↑(f x)
g₀L : L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ f x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
have h'L : L < ∫⁻ x, g₀ x ∂μ := by
  convert g₀L
  rw [← SimpleFunc.lintegral_eq_lintegral]
  rfl
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
g₀ : α →ₛ ℝ≥0
hg₀ : ∀ (x : α), ↑(↑g₀ x) ≤ ↑(f x)
g₀L : L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
⊢ L < ∫⁻ (x : α), ↑(↑g₀ x) ∂μ
[PROOFSTEP]
convert g₀L
[GOAL]
case h.e'_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
g₀ : α →ₛ ℝ≥0
hg₀ : ∀ (x : α), ↑(↑g₀ x) ≤ ↑(f x)
g₀L : L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
⊢ ∫⁻ (x : α), ↑(↑g₀ x) ∂μ = SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
[PROOFSTEP]
rw [← SimpleFunc.lintegral_eq_lintegral]
[GOAL]
case h.e'_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
g₀ : α →ₛ ℝ≥0
hg₀ : ∀ (x : α), ↑(↑g₀ x) ≤ ↑(f x)
g₀L : L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
⊢ ∫⁻ (x : α), ↑(↑g₀ x) ∂μ = ∫⁻ (a : α), ↑(SimpleFunc.map ENNReal.some g₀) a ∂μ
[PROOFSTEP]
rfl
[GOAL]
case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
g₀ : α →ₛ ℝ≥0
hg₀ : ∀ (x : α), ↑(↑g₀ x) ≤ ↑(f x)
g₀L : L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
h'L : L < ∫⁻ (x : α), ↑(↑g₀ x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ f x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
rcases SimpleFunc.exists_lt_lintegral_simpleFunc_of_lt_lintegral h'L with ⟨g, hg, gL, gtop⟩
[GOAL]
case intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
f : α → ℝ≥0
L : ℝ≥0∞
g₀ : α →ₛ ℝ≥0
hg₀ : ∀ (x : α), ↑(↑g₀ x) ≤ ↑(f x)
g₀L : L < SimpleFunc.lintegral (SimpleFunc.map ENNReal.some g₀) μ
h'L : L < ∫⁻ (x : α), ↑(↑g₀ x) ∂μ
g : α →ₛ ℝ≥0
hg : ∀ (x : α), ↑g x ≤ ↑g₀ x
gL : ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤
gtop : L < ∫⁻ (x : α), ↑(↑g x) ∂μ
⊢ ∃ g, (∀ (x : α), ↑g x ≤ f x) ∧ ∫⁻ (x : α), ↑(↑g x) ∂μ < ⊤ ∧ L < ∫⁻ (x : α), ↑(↑g x) ∂μ
[PROOFSTEP]
exact ⟨g, fun x => (hg x).trans (coe_le_coe.1 (hg₀ x)), gL, gtop⟩
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
⊢ ∃ ν, IsFiniteMeasure ν ∧ μ ≪ ν
[PROOFSTEP]
obtain ⟨g, gpos, gmeas, hg⟩ : ∃ g : α → ℝ≥0, (∀ x : α, 0 < g x) ∧ Measurable g ∧ ∫⁻ x : α, ↑(g x) ∂μ < 1 :=
  exists_pos_lintegral_lt_of_sigmaFinite μ one_ne_zero
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
⊢ ∃ ν, IsFiniteMeasure ν ∧ μ ≪ ν
[PROOFSTEP]
refine' ⟨μ.withDensity fun x => g x, isFiniteMeasure_withDensity hg.ne_top, _⟩
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
⊢ μ ≪ Measure.withDensity μ fun x => ↑(g x)
[PROOFSTEP]
have : μ = (μ.withDensity fun x => g x).withDensity fun x => (g x)⁻¹ :=
  by
  have A : ((fun x : α => (g x : ℝ≥0∞)) * fun x : α => (g x : ℝ≥0∞)⁻¹) = 1 :=
    by
    ext1 x
    exact ENNReal.mul_inv_cancel (ENNReal.coe_ne_zero.2 (gpos x).ne') ENNReal.coe_ne_top
  rw [← withDensity_mul _ gmeas.coe_nnreal_ennreal gmeas.coe_nnreal_ennreal.inv, A, withDensity_one]
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
⊢ μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹
[PROOFSTEP]
have A : ((fun x : α => (g x : ℝ≥0∞)) * fun x : α => (g x : ℝ≥0∞)⁻¹) = 1 :=
  by
  ext1 x
  exact ENNReal.mul_inv_cancel (ENNReal.coe_ne_zero.2 (gpos x).ne') ENNReal.coe_ne_top
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
⊢ ((fun x => ↑(g x)) * fun x => (↑(g x))⁻¹) = 1
[PROOFSTEP]
ext1 x
[GOAL]
case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
x : α
⊢ ((fun x => ↑(g x)) * fun x => (↑(g x))⁻¹) x = OfNat.ofNat 1 x
[PROOFSTEP]
exact ENNReal.mul_inv_cancel (ENNReal.coe_ne_zero.2 (gpos x).ne') ENNReal.coe_ne_top
[GOAL]
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
A : ((fun x => ↑(g x)) * fun x => (↑(g x))⁻¹) = 1
⊢ μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹
[PROOFSTEP]
rw [← withDensity_mul _ gmeas.coe_nnreal_ennreal gmeas.coe_nnreal_ennreal.inv, A, withDensity_one]
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
this : μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹
⊢ μ ≪ Measure.withDensity μ fun x => ↑(g x)
[PROOFSTEP]
nth_rw 1 [this]
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m✝ m0 : MeasurableSpace α
E : Type u_5
inst✝³ : NormedAddCommGroup E
inst✝² : MeasurableSpace E
inst✝¹ : OpensMeasurableSpace E
m : MeasurableSpace α
μ : Measure α
inst✝ : SigmaFinite μ
g : α → ℝ≥0
gpos : ∀ (x : α), 0 < g x
gmeas : Measurable g
hg : ∫⁻ (x : α), ↑(g x) ∂μ < 1
this : μ = Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹
⊢ (Measure.withDensity (Measure.withDensity μ fun x => ↑(g x)) fun x => (↑(g x))⁻¹) ≪
    Measure.withDensity μ fun x => ↑(g x)
[PROOFSTEP]
exact withDensity_absolutelyContinuous _ _
