Theorem: measurable_measure_prod_mk_left_finite
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: refine' induction_on_inter (C := fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s))
  generateFrom_prod.symm isPiSystem_prod _ _ _ _ hs
state_before: α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)

tactic: simp [measurable_zero, const_def]
state_before: case refine'_1
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) ∅

tactic: rintro _ ⟨s, t, hs, _, rfl⟩
state_before: case refine'_2
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ (t : Set (α × β)),
    t ∈ image2 (fun x x_1 => x ×ˢ x_1) {s | MeasurableSet s} {t | MeasurableSet t} →
      (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) t

tactic: simp only [mk_preimage_prod_right_eq_if, measure_if]
state_before: case refine'_2.intro.intro.intro.intro
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s✝ : Set (α × β)
hs✝ : MeasurableSet s✝
s : Set α
t : Set β
hs : s ∈ {s | MeasurableSet s}
left✝ : t ∈ {t | MeasurableSet t}
⊢ Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' (fun x x_1 => x ×ˢ x_1) s t)

tactic: exact measurable_const.indicator hs
state_before: case refine'_2.intro.intro.intro.intro
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s✝ : Set (α × β)
hs✝ : MeasurableSet s✝
s : Set α
t : Set β
hs : s ∈ {s | MeasurableSet s}
left✝ : t ∈ {t | MeasurableSet t}
⊢ Measurable fun x => indicator s (fun x => ↑↑ν t) x

tactic: intro t ht h2t
state_before: case refine'_3
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ (t : Set (α × β)),
    MeasurableSet t →
      (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) t → (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (tᶜ)

tactic: simp_rw [preimage_compl, measure_compl (measurable_prod_mk_left ht) (measure_ne_top ν _)]
state_before: case refine'_3
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
t : Set (α × β)
ht : MeasurableSet t
h2t : Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' t)
⊢ Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' tᶜ)

tactic: exact h2t.const_sub _
state_before: case refine'_3
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
t : Set (α × β)
ht : MeasurableSet t
h2t : Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' t)
⊢ Measurable fun x => ↑↑ν univ - ↑↑ν (Prod.mk x ⁻¹' t)

tactic: intro f h1f h2f h3f
state_before: case refine'_4
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ (f : ℕ → Set (α × β)),
    Pairwise (Disjoint on f) →
      (∀ (i : ℕ), MeasurableSet (f i)) →
        (∀ (i : ℕ), (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (f i)) →
          (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (⋃ (i : ℕ), f i)

tactic: simp_rw [preimage_iUnion]
state_before: case refine'_4
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
f : ℕ → Set (α × β)
h1f : Pairwise (Disjoint on f)
h2f : ∀ (i : ℕ), MeasurableSet (f i)
h3f : ∀ (i : ℕ), (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (f i)
⊢ Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' ⋃ (i : ℕ), f i)

tactic: have : ∀ b, ν (⋃ i, Prod.mk b ⁻¹' f i) = ∑' i, ν (Prod.mk b ⁻¹' f i) := fun b =>
  measure_iUnion (fun i j hij => Disjoint.preimage _ (h1f hij)) fun i =>
    measurable_prod_mk_left (h2f i)
state_before: case refine'_4
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
f : ℕ → Set (α × β)
h1f : Pairwise (Disjoint on f)
h2f : ∀ (i : ℕ), MeasurableSet (f i)
h3f : ∀ (i : ℕ), (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (f i)
⊢ Measurable fun x => ↑↑ν (⋃ (i : ℕ), Prod.mk x ⁻¹' f i)

tactic: simp_rw [this]
state_before: case refine'_4
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
f : ℕ → Set (α × β)
h1f : Pairwise (Disjoint on f)
h2f : ∀ (i : ℕ), MeasurableSet (f i)
h3f : ∀ (i : ℕ), (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (f i)
this : ∀ (b : α), ↑↑ν (⋃ (i : ℕ), Prod.mk b ⁻¹' f i) = ∑' (i : ℕ), ↑↑ν (Prod.mk b ⁻¹' f i)
⊢ Measurable fun x => ↑↑ν (⋃ (i : ℕ), Prod.mk x ⁻¹' f i)

tactic: apply Measurable.ennreal_tsum h3f
state_before: case refine'_4
α : Type u_2
α' : Type ?u.1615115
β : Type u_1
β' : Type ?u.1615121
γ : Type ?u.1615124
E : Type ?u.1615127
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : MeasureTheory.Measure α
ν ν' : MeasureTheory.Measure β
τ : MeasureTheory.Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
f : ℕ → Set (α × β)
h1f : Pairwise (Disjoint on f)
h2f : ∀ (i : ℕ), MeasurableSet (f i)
h3f : ∀ (i : ℕ), (fun s => Measurable fun x => ↑↑ν (Prod.mk x ⁻¹' s)) (f i)
this : ∀ (b : α), ↑↑ν (⋃ (i : ℕ), Prod.mk b ⁻¹' f i) = ∑' (i : ℕ), ↑↑ν (Prod.mk b ⁻¹' f i)
⊢ Measurable fun x => ∑' (i : ℕ), ↑↑ν (Prod.mk x ⁻¹' f i)