Theorem: Measurable.lintegral_prod_right'
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: have m := @measurable_prod_mk_left
state_before: α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
⊢ ∀ {f : α × β → ℝ≥0∞}, Measurable f → Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν

tactic: refine' Measurable.ennreal_induction (P := fun f => Measurable fun (x : α) => ∫⁻ y, f (x, y) ∂ν)
  _ _ _
state_before: α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
⊢ ∀ {f : α × β → ℝ≥0∞}, Measurable f → Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν

tactic: intro c s hs
state_before: case refine'_1
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
⊢ ∀ (c : ℝ≥0∞) ⦃s : Set (α × β)⦄,
    MeasurableSet s → (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (Set.indicator s fun x => c)

tactic: simp only [← indicator_comp_right]
state_before: case refine'_1
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
c : ℝ≥0∞
s : Set (α × β)
hs : MeasurableSet s
⊢ Measurable fun x => ∫⁻ (y : β), Set.indicator s (fun x => c) (x, y) ∂ν

tactic: suffices Measurable fun x => c * ν (Prod.mk x ⁻¹' s) by simpa [lintegral_indicator _ (m hs)]
state_before: case refine'_1
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
c : ℝ≥0∞
s : Set (α × β)
hs : MeasurableSet s
⊢ Measurable fun x => ∫⁻ (y : β), Set.indicator (Prod.mk x ⁻¹' s) ((fun x => c) ∘ Prod.mk x) y ∂ν

tactic: exact (measurable_measure_prod_mk_left hs).const_mul _
state_before: case refine'_1
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
c : ℝ≥0∞
s : Set (α × β)
hs : MeasurableSet s
⊢ Measurable fun x => c * ↑↑ν (Prod.mk x ⁻¹' s)

tactic: simpa [lintegral_indicator _ (m hs)]
state_before: α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
c : ℝ≥0∞
s : Set (α × β)
hs : MeasurableSet s
this : Measurable fun x => c * ↑↑ν (Prod.mk x ⁻¹' s)
⊢ Measurable fun x => ∫⁻ (y : β), Set.indicator (Prod.mk x ⁻¹' s) ((fun x => c) ∘ Prod.mk x) y ∂ν

tactic: rintro f g - hf - h2f h2g
state_before: case refine'_2
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
⊢ ∀ ⦃f g : α × β → ℝ≥0∞⦄,
    Disjoint (support f) (support g) →
      Measurable f →
        Measurable g →
          (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) f →
            (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) g →
              (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (f + g)

tactic: simp only [Pi.add_apply]
state_before: case refine'_2
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
f g : α × β → ℝ≥0∞
hf : Measurable f
h2f : Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν
h2g : Measurable fun x => ∫⁻ (y : β), g (x, y) ∂ν
⊢ Measurable fun x => ∫⁻ (y : β), (f + g) (x, y) ∂ν

tactic: conv => enter [1, x]; erw [lintegral_add_left (hf.comp m)]
state_before: case refine'_2
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m :
  ∀ {α : Type ?u.3611327} {β : Type ?u.3611326} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α},
    Measurable (Prod.mk x)
f g : α × β → ℝ≥0∞
hf : Measurable f
h2f : Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν
h2g : Measurable fun x => ∫⁻ (y : β), g (x, y) ∂ν
⊢ Measurable fun x => ∫⁻ (y : β), f (x, y) + g (x, y) ∂ν

tactic: exact h2f.add h2g
state_before: case refine'_2
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m : ∀ {α : Type u_2} {β : Type u_1} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α}, Measurable (Prod.mk x)
f g : α × β → ℝ≥0∞
hf : Measurable f
h2f : Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν
h2g : Measurable fun x => ∫⁻ (y : β), g (x, y) ∂ν
⊢ Measurable fun x => (∫⁻ (a : β), (f ∘ Prod.mk x) a ∂ν) + ∫⁻ (a : β), g (x, a) ∂ν

tactic: intro f hf h2f h3f
state_before: case refine'_3
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m : ∀ {α : Type u_2} {β : Type u_1} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α}, Measurable (Prod.mk x)
⊢ ∀ ⦃f : ℕ → α × β → ℝ≥0∞⦄,
    (∀ (n : ℕ), Measurable (f n)) →
      Monotone f →
        (∀ (n : ℕ), (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (f n)) →
          (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) fun x => ⨆ (n : ℕ), f n x

tactic: have := measurable_iSup h3f
state_before: case refine'_3
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m : ∀ {α : Type u_2} {β : Type u_1} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α}, Measurable (Prod.mk x)
f : ℕ → α × β → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h2f : Monotone f
h3f : ∀ (n : ℕ), (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (f n)
⊢ Measurable fun x => ∫⁻ (y : β), (fun x => ⨆ (n : ℕ), f n x) (x, y) ∂ν

tactic: have : ∀ x, Monotone fun n y => f n (x, y) := fun x i j hij y => h2f hij (x, y)
state_before: case refine'_3
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m : ∀ {α : Type u_2} {β : Type u_1} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α}, Measurable (Prod.mk x)
f : ℕ → α × β → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h2f : Monotone f
h3f : ∀ (n : ℕ), (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (f n)
this : Measurable fun b => ⨆ (i : ℕ), ∫⁻ (y : β), f i (b, y) ∂ν
⊢ Measurable fun x => ∫⁻ (y : β), (fun x => ⨆ (n : ℕ), f n x) (x, y) ∂ν

tactic: conv => enter [1, x]; erw [lintegral_iSup (fun n => (hf n).comp m) (this x)]
state_before: case refine'_3
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m : ∀ {α : Type u_2} {β : Type u_1} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α}, Measurable (Prod.mk x)
f : ℕ → α × β → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h2f : Monotone f
h3f : ∀ (n : ℕ), (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (f n)
this✝ : Measurable fun b => ⨆ (i : ℕ), ∫⁻ (y : β), f i (b, y) ∂ν
this : ∀ (x : α), Monotone fun n y => f n (x, y)
⊢ Measurable fun x => ∫⁻ (y : β), (fun x => ⨆ (n : ℕ), f n x) (x, y) ∂ν

tactic: assumption
state_before: case refine'_3
α : Type u_2
α' : Type ?u.3342539
β : Type u_1
β' : Type ?u.3342545
γ : Type ?u.3342548
E : Type ?u.3342551
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SigmaFinite ν
m : ∀ {α : Type u_2} {β : Type u_1} {m : MeasurableSpace α} {mβ : MeasurableSpace β} {x : α}, Measurable (Prod.mk x)
f : ℕ → α × β → ℝ≥0∞
hf : ∀ (n : ℕ), Measurable (f n)
h2f : Monotone f
h3f : ∀ (n : ℕ), (fun f => Measurable fun x => ∫⁻ (y : β), f (x, y) ∂ν) (f n)
this✝ : Measurable fun b => ⨆ (i : ℕ), ∫⁻ (y : β), f i (b, y) ∂ν
this : ∀ (x : α), Monotone fun n y => f n (x, y)
⊢ Measurable fun x => ⨆ (n : ℕ), ∫⁻ (a : β), (f n ∘ Prod.mk x) a ∂ν