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_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ Measurable fun x => ν (Prod.mk x ⁻¹' s)
state_after: case refine_1
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) ∅

case refine_2
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ 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

case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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ᶜ

case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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
state_before: case refine_1
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ (fun s => Measurable fun x => ν (Prod.mk x ⁻¹' s)) ∅
state_after: no goals

tactic: rintro _ ⟨s, hs, t, _, rfl⟩
state_before: case refine_2
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s : Set (α × β)
hs : MeasurableSet s
⊢ ∀ 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
state_after: case refine_2.intro.intro.intro.intro
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s✝ : Set (α × β)
hs✝ : MeasurableSet s✝
s : Set α
hs : s ∈ {s | MeasurableSet s}
t : Set β
left✝ : t ∈ {t | MeasurableSet t}
⊢ Measurable fun x => ν (Prod.mk x ⁻¹' (fun x x_1 => x ×ˢ x_1) s t)

tactic: simp only [mk_preimage_prod_right_eq_if, measure_if]
state_before: case refine_2.intro.intro.intro.intro
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s✝ : Set (α × β)
hs✝ : MeasurableSet s✝
s : Set α
hs : s ∈ {s | MeasurableSet s}
t : Set β
left✝ : t ∈ {t | MeasurableSet t}
⊢ Measurable fun x => ν (Prod.mk x ⁻¹' (fun x x_1 => x ×ˢ x_1) s t)
state_after: case refine_2.intro.intro.intro.intro
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s✝ : Set (α × β)
hs✝ : MeasurableSet s✝
s : Set α
hs : s ∈ {s | MeasurableSet s}
t : Set β
left✝ : t ∈ {t | MeasurableSet t}
⊢ Measurable fun x => s.indicator (fun x => ν t) x

tactic: exact measurable_const.indicator hs
state_before: case refine_2.intro.intro.intro.intro
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : IsFiniteMeasure ν
s✝ : Set (α × β)
hs✝ : MeasurableSet s✝
s : Set α
hs : s ∈ {s | MeasurableSet s}
t : Set β
left✝ : t ∈ {t | MeasurableSet t}
⊢ Measurable fun x => s.indicator (fun x => ν t) x
state_after: no goals

tactic: intro t ht h2t
state_before: case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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ᶜ
state_after: case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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: simp_rw [preimage_compl, measure_compl (measurable_prod_mk_left ht) (measure_ne_top ν _)]
state_before: case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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ᶜ)
state_after: case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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: exact h2t.const_sub _
state_before: case refine_3
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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)
state_after: no goals

tactic: intro f h1f h2f h3f
state_before: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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)
state_after: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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: simp_rw [preimage_iUnion]
state_before: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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)
state_after: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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: 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_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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)
state_after: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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: simp_rw [this]
state_before: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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)
state_after: case refine_4
α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : 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)
state_after: no goals