Theorem: ENNReal.lintegral_mul_le_Lp_mul_Lq_of_ne_zero_of_ne_top
File: Mathlib/MeasureTheory/Integral/MeanInequalities.lean

tactic: let npf := (∫⁻ c : α, f c ^ p ∂μ) ^ (1 / p)
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
⊢ (∫⁻ (a : α), (f * g) a ∂μ) ≤ (∫⁻ (a : α), f a ^ p ∂μ) ^ (1 / p) * (∫⁻ (a : α), g a ^ q ∂μ) ^ (1 / q)

tactic: let nqg := (∫⁻ c : α, g c ^ q ∂μ) ^ (1 / q)
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
⊢ (∫⁻ (a : α), (f * g) a ∂μ) ≤ (∫⁻ (a : α), f a ^ p ∂μ) ^ (1 / p) * (∫⁻ (a : α), g a ^ q ∂μ) ^ (1 / q)

tactic: calc
  (∫⁻ a : α, (f * g) a ∂μ) =
      ∫⁻ a : α, (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a * (npf * nqg) ∂μ := by
    refine' lintegral_congr fun a => _
    rw [Pi.mul_apply, fun_eq_funMulInvSnorm_mul_snorm f hf_nonzero hf_nontop,
      fun_eq_funMulInvSnorm_mul_snorm g hg_nonzero hg_nontop, Pi.mul_apply]
    ring
  _ ≤ npf * nqg := by
    rw [lintegral_mul_const' (npf * nqg) _
        (by simp [hf_nontop, hg_nontop, hf_nonzero, hg_nonzero, ENNReal.mul_eq_top])]
    refine' mul_le_of_le_one_left' _
    have hf1 := lintegral_rpow_funMulInvSnorm_eq_one hpq.pos hf_nonzero hf_nontop
    have hg1 := lintegral_rpow_funMulInvSnorm_eq_one hpq.symm.pos hg_nonzero hg_nontop
    exact lintegral_mul_le_one_of_lintegral_rpow_eq_one hpq (hf.mul_const _) hf1 hg1
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
⊢ (∫⁻ (a : α), (f * g) a ∂μ) ≤ (∫⁻ (a : α), f a ^ p ∂μ) ^ (1 / p) * (∫⁻ (a : α), g a ^ q ∂μ) ^ (1 / q)

tactic: refine' lintegral_congr fun a => _
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
⊢ (∫⁻ (a : α), (f * g) a ∂μ) = ∫⁻ (a : α), (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a * (npf * nqg) ∂μ

tactic: rw [Pi.mul_apply, fun_eq_funMulInvSnorm_mul_snorm f hf_nonzero hf_nontop,
  fun_eq_funMulInvSnorm_mul_snorm g hg_nonzero hg_nontop, Pi.mul_apply]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
a : α
⊢ (f * g) a = (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a * (npf * nqg)

tactic: ring
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
a : α
⊢ funMulInvSnorm f p μ a * (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p) *
      (funMulInvSnorm g q μ a * (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)) =
    funMulInvSnorm f p μ a * funMulInvSnorm g q μ a * (npf * nqg)

tactic: rw [lintegral_mul_const' (npf * nqg) _
    (by simp [hf_nontop, hg_nontop, hf_nonzero, hg_nonzero, ENNReal.mul_eq_top])]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
⊢ (∫⁻ (a : α), (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a * (npf * nqg) ∂μ) ≤ npf * nqg

tactic: refine' mul_le_of_le_one_left' _
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
⊢ (∫⁻ (a : α), (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a ∂μ) * (npf * nqg) ≤ npf * nqg

tactic: have hf1 := lintegral_rpow_funMulInvSnorm_eq_one hpq.pos hf_nonzero hf_nontop
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
⊢ (∫⁻ (a : α), (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a ∂μ) ≤ 1

tactic: have hg1 := lintegral_rpow_funMulInvSnorm_eq_one hpq.symm.pos hg_nonzero hg_nontop
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
hf1 : (∫⁻ (c : α), funMulInvSnorm (fun a => f a) p μ c ^ p ∂μ) = 1
⊢ (∫⁻ (a : α), (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a ∂μ) ≤ 1

tactic: exact lintegral_mul_le_one_of_lintegral_rpow_eq_one hpq (hf.mul_const _) hf1 hg1
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
hf1 : (∫⁻ (c : α), funMulInvSnorm (fun a => f a) p μ c ^ p ∂μ) = 1
hg1 : (∫⁻ (c : α), funMulInvSnorm (fun a => g a) q μ c ^ q ∂μ) = 1
⊢ (∫⁻ (a : α), (funMulInvSnorm f p μ * funMulInvSnorm g q μ) a ∂μ) ≤ 1

tactic: simp [hf_nontop, hg_nontop, hf_nonzero, hg_nonzero, ENNReal.mul_eq_top]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : MeasureTheory.Measure α
p q : ℝ
hpq : Real.IsConjugateExponent p q
f g : α → ℝ≥0∞
hf : AEMeasurable f
hf_nontop : (∫⁻ (a : α), f a ^ p ∂μ) ≠ ⊤
hg_nontop : (∫⁻ (a : α), g a ^ q ∂μ) ≠ ⊤
hf_nonzero : (∫⁻ (a : α), f a ^ p ∂μ) ≠ 0
hg_nonzero : (∫⁻ (a : α), g a ^ q ∂μ) ≠ 0
npf : ℝ≥0∞ := (∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p)
nqg : ℝ≥0∞ := (∫⁻ (c : α), g c ^ q ∂μ) ^ (1 / q)
⊢ npf * nqg ≠ ⊤