Theorem: MeasurableEmbedding.prod_mk
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: have h_inj : Function.Injective fun x : γ × α => (g x.fst, f x.snd) := by
  intro x y hxy
  rw [← @Prod.mk.eta _ _ x, ← @Prod.mk.eta _ _ y]
  simp only [Prod.mk.inj_iff] at hxy ⊢
  exact ⟨hg.injective hxy.1, hf.injective hxy.2⟩
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
⊢ MeasurableEmbedding fun x => (g x.1, f x.2)
state_after: α✝ : 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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
⊢ MeasurableEmbedding fun x => (g x.1, f x.2)

tactic: refine ⟨h_inj, ?_, ?_⟩
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
⊢ MeasurableEmbedding fun x => (g x.1, f x.2)
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
⊢ Measurable fun x => (g x.1, f x.2)

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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
⊢ ∀ ⦃s : Set (γ × α)⦄, MeasurableSet s → MeasurableSet ((fun x => (g x.1, f x.2)) '' s)

tactic: intro x y hxy
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
⊢ Injective fun x => (g x.1, f x.2)
state_after: α✝ : 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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
x y : γ × α
hxy : (fun x => (g x.1, f x.2)) x = (fun x => (g x.1, f x.2)) y
⊢ x = y

tactic: rw [← @Prod.mk.eta _ _ x, ← @Prod.mk.eta _ _ y]
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
x y : γ × α
hxy : (fun x => (g x.1, f x.2)) x = (fun x => (g x.1, f x.2)) y
⊢ x = y
state_after: α✝ : 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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
x y : γ × α
hxy : (fun x => (g x.1, f x.2)) x = (fun x => (g x.1, f x.2)) y
⊢ (x.1, x.2) = (y.1, y.2)

tactic: simp only [Prod.mk.inj_iff] at hxy ⊢
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
x y : γ × α
hxy : (fun x => (g x.1, f x.2)) x = (fun x => (g x.1, f x.2)) y
⊢ (x.1, x.2) = (y.1, y.2)
state_after: α✝ : 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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
x y : γ × α
hxy : g x.1 = g y.1 ∧ f x.2 = f y.2
⊢ x.1 = y.1 ∧ x.2 = y.2

tactic: exact ⟨hg.injective hxy.1, hf.injective hxy.2⟩
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
x y : γ × α
hxy : g x.1 = g y.1 ∧ f x.2 = f y.2
⊢ x.1 = y.1 ∧ x.2 = y.2
state_after: no goals

tactic: exact (hg.measurable.comp measurable_fst).prod_mk (hf.measurable.comp measurable_snd)
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
⊢ Measurable fun x => (g x.1, f x.2)
state_after: no goals

tactic: refine fun s hs =>
  @MeasurableSpace.induction_on_inter _
    (fun s => MeasurableSet ((fun x : γ × α => (g x.fst, f x.snd)) '' s)) _ _
    generateFrom_prod.symm isPiSystem_prod ?_ ?_ ?_ ?_ _ hs
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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
⊢ ∀ ⦃s : Set (γ × α)⦄, MeasurableSet s → MeasurableSet ((fun x => (g x.1, f x.2)) '' s)
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) ∅

case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ ∀ t ∈ image2 (fun x x_1 => x ×ˢ x_1) {s | MeasurableSet s} {t | MeasurableSet t},
    (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) t

case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ ∀ (t : Set (γ × α)),
    MeasurableSet t →
      (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) t →
        (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) tᶜ

case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ ∀ (f_1 : ℕ → Set (γ × α)),
    Pairwise (Disjoint on f_1) →
      (∀ (i : ℕ), MeasurableSet (f_1 i)) →
        (∀ (i : ℕ), (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) (f_1 i)) →
          (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) (⋃ i, f_1 i)

tactic: simp only [Set.image_empty, MeasurableSet.empty]
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) ∅
state_after: no goals

tactic: rintro t ⟨t₁, ht₁, t₂, ht₂, rfl⟩
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ ∀ t ∈ image2 (fun x x_1 => x ×ˢ x_1) {s | MeasurableSet s} {t | MeasurableSet t},
    (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) t
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t₁ : Set γ
ht₁ : t₁ ∈ {s | MeasurableSet s}
t₂ : Set α
ht₂ : t₂ ∈ {t | MeasurableSet t}
⊢ MeasurableSet ((fun x => (g x.1, f x.2)) '' (fun x x_1 => x ×ˢ x_1) t₁ t₂)

tactic: rw [← Set.prod_image_image_eq]
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t₁ : Set γ
ht₁ : t₁ ∈ {s | MeasurableSet s}
t₂ : Set α
ht₂ : t₂ ∈ {t | MeasurableSet t}
⊢ MeasurableSet ((fun x => (g x.1, f x.2)) '' (fun x x_1 => x ×ˢ x_1) t₁ t₂)
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t₁ : Set γ
ht₁ : t₁ ∈ {s | MeasurableSet s}
t₂ : Set α
ht₂ : t₂ ∈ {t | MeasurableSet t}
⊢ MeasurableSet ((g '' t₁) ×ˢ (f '' t₂))

tactic: exact (hg.measurableSet_image.mpr ht₁).prod (hf.measurableSet_image.mpr ht₂)
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t₁ : Set γ
ht₁ : t₁ ∈ {s | MeasurableSet s}
t₂ : Set α
ht₂ : t₂ ∈ {t | MeasurableSet t}
⊢ MeasurableSet ((g '' t₁) ×ˢ (f '' t₂))
state_after: no goals

tactic: intro t _ ht_m
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ ∀ (t : Set (γ × α)),
    MeasurableSet t →
      (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) t →
        (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) tᶜ
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t : Set (γ × α)
a✝ : MeasurableSet t
ht_m : MeasurableSet ((fun x => (g x.1, f x.2)) '' t)
⊢ MeasurableSet ((fun x => (g x.1, f x.2)) '' tᶜ)

tactic: rw [← Set.range_diff_image h_inj, ← Set.prod_range_range_eq]
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t : Set (γ × α)
a✝ : MeasurableSet t
ht_m : MeasurableSet ((fun x => (g x.1, f x.2)) '' t)
⊢ MeasurableSet ((fun x => (g x.1, f x.2)) '' tᶜ)
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t : Set (γ × α)
a✝ : MeasurableSet t
ht_m : MeasurableSet ((fun x => (g x.1, f x.2)) '' t)
⊢ MeasurableSet (range g ×ˢ range f \ (fun x => (g x.1, f x.2)) '' t)

tactic: exact
  MeasurableSet.diff (MeasurableSet.prod hg.measurableSet_range hf.measurableSet_range) ht_m
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
t : Set (γ × α)
a✝ : MeasurableSet t
ht_m : MeasurableSet ((fun x => (g x.1, f x.2)) '' t)
⊢ MeasurableSet (range g ×ˢ range f \ (fun x => (g x.1, f x.2)) '' t)
state_after: no goals

tactic: intro g _ _ hg
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g : γ → δ
hg : MeasurableEmbedding g
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
⊢ ∀ (f_1 : ℕ → Set (γ × α)),
    Pairwise (Disjoint on f_1) →
      (∀ (i : ℕ), MeasurableSet (f_1 i)) →
        (∀ (i : ℕ), (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) (f_1 i)) →
          (fun s => MeasurableSet ((fun x => (g x.1, f x.2)) '' s)) (⋃ i, f_1 i)
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g✝ : γ → δ
hg✝ : MeasurableEmbedding g✝
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g✝ x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
g : ℕ → Set (γ × α)
a✝¹ : Pairwise (Disjoint on g)
a✝ : ∀ (i : ℕ), MeasurableSet (g i)
hg : ∀ (i : ℕ), (fun s => MeasurableSet ((fun x => (g✝ x.1, f x.2)) '' s)) (g i)
⊢ MeasurableSet ((fun x => (g✝ x.1, f x.2)) '' ⋃ i, g i)

tactic: simp_rw [Set.image_iUnion]
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g✝ : γ → δ
hg✝ : MeasurableEmbedding g✝
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g✝ x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
g : ℕ → Set (γ × α)
a✝¹ : Pairwise (Disjoint on g)
a✝ : ∀ (i : ℕ), MeasurableSet (g i)
hg : ∀ (i : ℕ), (fun s => MeasurableSet ((fun x => (g✝ x.1, f x.2)) '' s)) (g i)
⊢ MeasurableSet ((fun x => (g✝ x.1, f x.2)) '' ⋃ i, g i)
state_after: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g✝ : γ → δ
hg✝ : MeasurableEmbedding g✝
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g✝ x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
g : ℕ → Set (γ × α)
a✝¹ : Pairwise (Disjoint on g)
a✝ : ∀ (i : ℕ), MeasurableSet (g i)
hg : ∀ (i : ℕ), (fun s => MeasurableSet ((fun x => (g✝ x.1, f x.2)) '' s)) (g i)
⊢ MeasurableSet (⋃ i, (fun x => (g✝ x.1, f x.2)) '' g i)

tactic: exact MeasurableSet.iUnion hg
state_before: case refine_2.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
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : α → β
g✝ : γ → δ
hg✝ : MeasurableEmbedding g✝
hf : MeasurableEmbedding f
h_inj : Injective fun x => (g✝ x.1, f x.2)
s : Set (γ × α)
hs : MeasurableSet s
g : ℕ → Set (γ × α)
a✝¹ : Pairwise (Disjoint on g)
a✝ : ∀ (i : ℕ), MeasurableSet (g i)
hg : ∀ (i : ℕ), (fun s => MeasurableSet ((fun x => (g✝ x.1, f x.2)) '' s)) (g i)
⊢ MeasurableSet (⋃ i, (fun x => (g✝ x.1, f x.2)) '' g i)
state_after: no goals