Theorem: MeasureTheory.exists_simpleFunc_forall_lintegral_sub_lt_of_pos
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [lintegral_eq_nnreal] at h
state_before: α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: have := ENNReal.lt_add_right h hε
state_before: α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: erw [ENNReal.biSup_add] at this <;> [skip; exact ⟨0, fun x => zero_le _⟩]
state_before: α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: simp_rw [lt_iSup_iff, iSup_lt_iff, iSup_le_iff] at this
state_before: α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: rcases this with ⟨φ, hle : ∀ x, ↑(φ x) ≤ f x, b, hbφ, hb⟩
state_before: α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: refine' ⟨φ, hle, fun ψ hψ => _⟩
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: have : (map (↑) φ).lintegral μ ≠ ∞ := ne_top_of_le_ne_top h (by exact le_iSup₂ (α := ℝ≥0∞) φ hle)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: rw [← ENNReal.add_lt_add_iff_left this, ← add_lintegral, ← SimpleFunc.map_add @ENNReal.coe_add]
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 (ψ - φ)) μ < ε

tactic: refine' (hb _ fun x => le_trans _ (max_le (hle x) (hψ x))).trans_lt hbφ
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 φ) μ + ε

tactic: norm_cast
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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)

tactic: simp only [add_apply, sub_apply, add_tsub_eq_max]
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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)

tactic: rfl
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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)

tactic: exact le_iSup₂ (α := ℝ≥0∞) φ hle
state_before: α : Type u_1
β : Type ?u.85282
γ : Type ?u.85285
δ : Type ?u.85288
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 φ) μ