Theorem: MeasureTheory.hasFiniteIntegral_toReal_of_lintegral_ne_top
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: have :
  ∀ x, (‖(f x).toReal‖₊ : ℝ≥0∞) = ENNReal.some ⟨(f x).toReal, ENNReal.toReal_nonneg⟩ := by
  intro x
  rw [Real.nnnorm_of_nonneg]
state_before: α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
⊢ HasFiniteIntegral fun x => ENNReal.toReal (f x)

tactic: simp_rw [HasFiniteIntegral, this]
state_before: α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
⊢ HasFiniteIntegral fun x => ENNReal.toReal (f x)

tactic: refine' lt_of_le_of_lt (lintegral_mono fun x => _) (lt_top_iff_ne_top.2 hf)
state_before: α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
⊢ (∫⁻ (a : α), ↑{ val := ENNReal.toReal (f a), property := (_ : 0 ≤ ENNReal.toReal (f a)) } ∂μ) < ⊤

tactic: by_cases hfx : f x = ∞
state_before: α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
x : α
⊢ ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) } ≤ f x

tactic: intro x
state_before: α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
⊢ ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }

tactic: rw [Real.nnnorm_of_nonneg]
state_before: α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
x : α
⊢ ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }

tactic: simp [hfx]
state_before: case pos
α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
x : α
hfx : f x = ⊤
⊢ ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) } ≤ f x

tactic: lift f x to ℝ≥0 using hfx with fx h
state_before: case neg
α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
x : α
hfx : ¬f x = ⊤
⊢ ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) } ≤ f x

tactic: simp [← h]
state_before: case neg.intro
α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
x : α
fx : ℝ≥0
h : ↑fx = f x
⊢ ↑{ val := ENNReal.toReal ↑fx, property := (_ : (fun r => 0 ≤ r) (ENNReal.toReal ↑fx)) } ≤ ↑fx

tactic: rfl
state_before: case neg.intro
α : Type u_1
β : Type ?u.731151
γ : Type ?u.731154
δ : Type ?u.731157
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hf : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
this :
  ∀ (x : α), ↑‖ENNReal.toReal (f x)‖₊ = ↑{ val := ENNReal.toReal (f x), property := (_ : 0 ≤ ENNReal.toReal (f x)) }
x : α
fx : ℝ≥0
h : ↑fx = f x
⊢ { val := ↑fx, property := (_ : (fun r => 0 ≤ r) ↑fx) } ≤ fx