Theorem: ProbabilityTheory.hasFiniteIntegral_compProd_iff
File: Mathlib/Probability/Kernel/IntegralCompProd.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
⊢ HasFiniteIntegral f ((κ ⊗ₖ η) a) ↔
    (∀ᵐ (x : β) ∂κ a, HasFiniteIntegral (fun y => f (x, y)) (η (a, x))) ∧
      HasFiniteIntegral (fun x => ∫ (y : γ), ‖f (x, y)‖ ∂η (a, x)) (κ a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
⊢ ∫⁻ (a : β × γ), ↑‖f a‖₊ ∂(κ ⊗ₖ η) a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ↑‖∫ (y : γ), ‖f (a_1, y)‖ ∂η (a, a_1)‖₊ ∂κ a < ⊤
tactic: simp only [HasFiniteIntegral]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
⊢ ∫⁻ (a : β × γ), ↑‖f a‖₊ ∂(κ ⊗ₖ η) a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ↑‖∫ (y : γ), ‖f (a_1, y)‖ ∂η (a, a_1)‖₊ ∂κ a < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ↑‖∫ (y : γ), ‖f (a_1, y)‖ ∂η (a, a_1)‖₊ ∂κ a < ⊤
tactic: rw [Kernel.lintegral_compProd _ _ _ h1f.ennnorm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ↑‖∫ (y : γ), ‖f (a_1, y)‖ ∂η (a, a_1)‖₊ ∂κ a < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ↑‖∫ (y : γ), ‖f (a_1, y)‖ ∂η (a, a_1)‖₊ ∂κ a < ⊤
tactic: have : ∀ x, ∀ᵐ y ∂η (a, x), 0 ≤ ‖f (x, y)‖ := fun x => eventually_of_forall fun y => norm_nonneg _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ↑‖∫ (y : γ), ‖f (a_1, y)‖ ∂η (a, a_1)‖₊ ∂κ a < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ENNReal.ofReal (∫⁻ (a : γ), ↑‖f (a_1, a)‖₊ ∂η (a, a_1)).toReal ∂κ a < ⊤
tactic: simp_rw [integral_eq_lintegral_of_nonneg_ae (this _)
      (h1f.norm.comp_measurable measurable_prod_mk_left).aestronglyMeasurable,
    ennnorm_eq_ofReal toReal_nonneg, ofReal_norm_eq_coe_nnnorm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ENNReal.ofReal (∫⁻ (a : γ), ↑‖f (a_1, a)‖₊ ∂η (a, a_1)).toReal ∂κ a < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ENNReal.ofReal (∫⁻ (a : γ), ↑‖f (a_1, a)‖₊ ∂η (a, a_1)).toReal ∂κ a < ⊤
tactic: have : ∀ {p q r : Prop} (_ : r → p), (r ↔ p ∧ q) ↔ p → (r ↔ q) := fun {p q r} h1 => by
    rw [← and_congr_right_iff, and_iff_right_of_imp h1]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
    (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) ∧
      ∫⁻ (a_1 : β), ENNReal.ofReal (∫⁻ (a : γ), ↑‖f (a_1, a)‖₊ ∂η (a, a_1)).toReal ∂κ a < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ (∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤) →
    (∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ ↔
      ∫⁻ (a_2 : β), ENNReal.ofReal (∫⁻ (a : γ), ↑‖f (a_2, a)‖₊ ∂η (a, a_2)).toReal ∂κ a < ⊤)

α : Type u_1
β : Type u_2
γ : Type u_3
E : Type u_4
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝² : NormedAddCommGroup E
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : β), ∀ᵐ (y : γ) ∂η (a, x), 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ ∫⁻ (b : β), ∫⁻ (c : γ), ↑‖f (b, c)‖₊ ∂η (a, b) ∂κ a < ⊤ → ∀ᵐ (x : β) ∂κ a, ∫⁻ (a : γ), ↑‖f (x, a)‖₊ ∂η (a, x) < ⊤
tactic: rw [this]