Theorem: MeasureTheory.hasFiniteIntegral_prod_iff
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: simp only [HasFiniteIntegral]
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
⊢ HasFiniteIntegral f ↔
    (∀ᵐ (x : α) ∂μ, HasFiniteIntegral fun y => f (x, y)) ∧ HasFiniteIntegral fun x => ∫ (y : β), ‖f (x, y)‖ ∂ν

tactic: rw [lintegral_prod_of_measurable _ h1f.ennnorm]
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
⊢ (∫⁻ (a : α × β), ↑‖f a‖₊ ∂Measure.prod μ ν) < ⊤ ↔
    (∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤) ∧ (∫⁻ (a : α), ↑‖∫ (y : β), ‖f (a, y)‖ ∂ν‖₊ ∂μ) < ⊤

tactic: have : ∀ x, ∀ᵐ y ∂ν, 0 ≤ ‖f (x, y)‖ := fun x => eventually_of_forall fun y => norm_nonneg _
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
⊢ (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ ↔
    (∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤) ∧ (∫⁻ (a : α), ↑‖∫ (y : β), ‖f (a, y)‖ ∂ν‖₊ ∂μ) < ⊤

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.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
⊢ (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ ↔
    (∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤) ∧ (∫⁻ (a : α), ↑‖∫ (y : β), ‖f (a, y)‖ ∂ν‖₊ ∂μ) < ⊤

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.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
⊢ (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ ↔
    (∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤) ∧
      (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν)) ∂μ) < ⊤

tactic: rw [this]
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ ↔
    (∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤) ∧
      (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν)) ∂μ) < ⊤

tactic: rw [← and_congr_right_iff, and_iff_right_of_imp h1]
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
p q r : Prop
h1 : r → p
⊢ (r ↔ p ∧ q) ↔ p → (r ↔ q)

tactic: intro h2f
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ (∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤) →
    ((∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ ↔
      (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν)) ∂μ) < ⊤)

tactic: rw [lintegral_congr_ae]
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ ↔
    (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν)) ∂μ) < ⊤

tactic: refine' h2f.mp _
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ (fun x => ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν) =ᶠ[ae μ] fun a =>
    ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν))

tactic: apply eventually_of_forall
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ ∀ᵐ (x : α) ∂μ,
    (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤ →
      (fun x => ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν) x =
        (fun a => ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν))) x

tactic: intro x hx
state_before: case hp
α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ ∀ (x : α),
    (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤ →
      (fun x => ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν) x =
        (fun a => ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν))) x

tactic: dsimp only
state_before: case hp
α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
x : α
hx : (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ (fun x => ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν) x =
    (fun a => ENNReal.ofReal (ENNReal.toReal (∫⁻ (a_1 : β), ↑‖f (a, a_1)‖₊ ∂ν))) x

tactic: rw [ofReal_toReal]
state_before: case hp
α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
x : α
hx : (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ (∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν) = ENNReal.ofReal (ENNReal.toReal (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν))

tactic: rw [← lt_top_iff_ne_top]
state_before: case hp
α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
x : α
hx : (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) ≠ ⊤

tactic: exact hx
state_before: case hp
α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
x : α
hx : (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤
⊢ (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤

tactic: intro h2f
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
⊢ (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤ → ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤

tactic: refine' ae_lt_top _ h2f.ne
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤
⊢ ∀ᵐ (x : α) ∂μ, (∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν) < ⊤

tactic: exact h1f.ennnorm.lintegral_prod_right'
state_before: α : Type u_1
α' : Type ?u.2390658
β : Type u_2
β' : Type ?u.2390664
γ : Type ?u.2390667
E : Type u_3
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
f : α × β → E
h1f : StronglyMeasurable f
this✝ : ∀ (x : α), ∀ᵐ (y : β) ∂ν, 0 ≤ ‖f (x, y)‖
this : ∀ {p q r : Prop}, (r → p) → ((r ↔ p ∧ q) ↔ p → (r ↔ q))
h2f : (∫⁻ (x : α), ∫⁻ (y : β), ↑‖f (x, y)‖₊ ∂ν ∂μ) < ⊤
⊢ Measurable fun x => ∫⁻ (a : β), ↑‖f (x, a)‖₊ ∂ν