Theorem: MeasureTheory.Integrable.bdd_mul
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: cases' isEmpty_or_nonempty α with hα hα
state_before: α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hfbdd : ∃ C, ∀ (x : α), ‖f x‖ ≤ C
⊢ Integrable fun x => f x * g x

tactic: rw [μ.eq_zero_of_isEmpty]
state_before: case inl
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hfbdd : ∃ C, ∀ (x : α), ‖f x‖ ≤ C
hα : IsEmpty α
⊢ Integrable fun x => f x * g x

tactic: exact integrable_zero_measure
state_before: case inl
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hfbdd : ∃ C, ∀ (x : α), ‖f x‖ ≤ C
hα : IsEmpty α
⊢ Integrable fun x => f x * g x

tactic: refine' ⟨hm.mul hint.1, _⟩
state_before: case inr
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hfbdd : ∃ C, ∀ (x : α), ‖f x‖ ≤ C
hα : Nonempty α
⊢ Integrable fun x => f x * g x

tactic: obtain ⟨C, hC⟩ := hfbdd
state_before: case inr
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hfbdd : ∃ C, ∀ (x : α), ‖f x‖ ≤ C
hα : Nonempty α
⊢ HasFiniteIntegral fun x => f x * g x

tactic: have hCnonneg : 0 ≤ C := le_trans (norm_nonneg _) (hC hα.some)
state_before: case inr.intro
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
⊢ HasFiniteIntegral fun x => f x * g x

tactic: have : (fun x => ‖f x * g x‖₊) ≤ fun x => ⟨C, hCnonneg⟩ * ‖g x‖₊ := by
  intro x
  simp only [nnnorm_mul]
  exact mul_le_mul_of_nonneg_right (hC x) (zero_le _)
state_before: case inr.intro
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
⊢ HasFiniteIntegral fun x => f x * g x

tactic: refine' lt_of_le_of_lt (lintegral_mono_nnreal this) _
state_before: case inr.intro
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
this : (fun x => ‖f x * g x‖₊) ≤ fun x => { val := C, property := hCnonneg } * ‖g x‖₊
⊢ HasFiniteIntegral fun x => f x * g x

tactic: simp only [ENNReal.coe_mul]
state_before: case inr.intro
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
this : (fun x => ‖f x * g x‖₊) ≤ fun x => { val := C, property := hCnonneg } * ‖g x‖₊
⊢ (∫⁻ (a : α), ↑({ val := C, property := hCnonneg } * ‖g a‖₊) ∂μ) < ⊤

tactic: rw [lintegral_const_mul' _ _ ENNReal.coe_ne_top]
state_before: case inr.intro
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
this : (fun x => ‖f x * g x‖₊) ≤ fun x => { val := C, property := hCnonneg } * ‖g x‖₊
⊢ (∫⁻ (a : α), ↑{ val := C, property := hCnonneg } * ↑‖g a‖₊ ∂μ) < ⊤

tactic: exact ENNReal.mul_lt_top ENNReal.coe_ne_top (ne_of_lt hint.2)
state_before: case inr.intro
α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
this : (fun x => ‖f x * g x‖₊) ≤ fun x => { val := C, property := hCnonneg } * ‖g x‖₊
⊢ (↑{ val := C, property := hCnonneg } * ∫⁻ (a : α), ↑‖g a‖₊ ∂μ) < ⊤

tactic: intro x
state_before: α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
⊢ (fun x => ‖f x * g x‖₊) ≤ fun x => { val := C, property := hCnonneg } * ‖g x‖₊

tactic: simp only [nnnorm_mul]
state_before: α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
x : α
⊢ (fun x => ‖f x * g x‖₊) x ≤ (fun x => { val := C, property := hCnonneg } * ‖g x‖₊) x

tactic: exact mul_le_mul_of_nonneg_right (hC x) (zero_le _)
state_before: α : Type u_2
β : Type ?u.955935
γ : Type ?u.955938
δ : Type ?u.955941
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
F : Type u_1
inst✝ : NormedDivisionRing F
f g : α → F
hint : Integrable g
hm : AEStronglyMeasurable f μ
hα : Nonempty α
C : ℝ
hC : ∀ (x : α), ‖f x‖ ≤ C
hCnonneg : 0 ≤ C
x : α
⊢ ‖f x‖₊ * ‖g x‖₊ ≤ { val := C, property := hCnonneg } * ‖g x‖₊