Theorem: MeasureTheory.Measure.integrable_measure_prod_mk_left
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: refine' ⟨(measurable_measure_prod_mk_left hs).ennreal_toReal.aemeasurable.aestronglyMeasurable, _⟩
state_before: α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ Integrable fun x => ENNReal.toReal (↑↑ν (Prod.mk x ⁻¹' s))

tactic: simp_rw [HasFiniteIntegral, ennnorm_eq_ofReal toReal_nonneg]
state_before: α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ HasFiniteIntegral fun x => ENNReal.toReal (↑↑ν (Prod.mk x ⁻¹' s))

tactic: convert h2s.lt_top using 1
state_before: α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s))) ∂μ) < ⊤

tactic: rw [prod_apply hs]
state_before: case h.e'_3
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s))) ∂μ) = ↑↑(Measure.prod μ ν) s

tactic: apply lintegral_congr_ae
state_before: case h.e'_3
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ (∫⁻ (a : α), ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s))) ∂μ) = ∫⁻ (x : α), ↑↑ν (Prod.mk x ⁻¹' s) ∂μ

tactic: refine' (ae_measure_lt_top hs h2s).mp _
state_before: case h.e'_3.h
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ (fun a => ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s)))) =ᶠ[ae μ] fun a => ↑↑ν (Prod.mk a ⁻¹' s)

tactic: apply eventually_of_forall
state_before: case h.e'_3.h
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ ∀ᵐ (x : α) ∂μ,
    ↑↑ν (Prod.mk x ⁻¹' s) < ⊤ →
      (fun a => ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s)))) x = (fun a => ↑↑ν (Prod.mk a ⁻¹' s)) x

tactic: intro x hx
state_before: case h.e'_3.h.hp
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
⊢ ∀ (x : α),
    ↑↑ν (Prod.mk x ⁻¹' s) < ⊤ →
      (fun a => ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s)))) x = (fun a => ↑↑ν (Prod.mk a ⁻¹' s)) x

tactic: rw [lt_top_iff_ne_top] at hx
state_before: case h.e'_3.h.hp
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
x : α
hx : ↑↑ν (Prod.mk x ⁻¹' s) < ⊤
⊢ (fun a => ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s)))) x = (fun a => ↑↑ν (Prod.mk a ⁻¹' s)) x

tactic: simp [ofReal_toReal, hx]
state_before: case h.e'_3.h.hp
α : Type u_2
α' : Type ?u.2382010
β : Type u_1
β' : Type ?u.2382016
γ : Type ?u.2382019
E : Type ?u.2382022
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ ν) s ≠ ⊤
x : α
hx : ↑↑ν (Prod.mk x ⁻¹' s) ≠ ⊤
⊢ (fun a => ENNReal.ofReal (ENNReal.toReal (↑↑ν (Prod.mk a ⁻¹' s)))) x = (fun a => ↑↑ν (Prod.mk a ⁻¹' s)) x