l3lab/ntp-mathlib huggingface dataset:
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · 

Proof state:
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
⊢ Measurable Prod.snd

Next tactic:
exact measurable_snd
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  

Proof state:
case h
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
⊢ ↑↑(Measure.map (fun ω => (X ω, ω)) μ) (Prod.snd ⁻¹' s) = 0

Next tactic:
by_cases hX : AEMeasurable X μ
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · 

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : AEMeasurable X
⊢ ↑↑(Measure.map (fun ω => (X ω, ω)) μ) (Prod.snd ⁻¹' s) = 0

Next tactic:
rw [Measure.map_apply_of_aemeasurable]
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · 

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : AEMeasurable X
⊢ ↑↑μ ((fun ω => (X ω, ω)) ⁻¹' (Prod.snd ⁻¹' s)) = 0

Next tactic:
rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : AEMeasurable X
⊢ ↑↑μ s = 0

Next tactic:
exact hμs
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      exact hμs
    · 

Proof state:
case pos.hf
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : AEMeasurable X
⊢ AEMeasurable fun ω => (X ω, ω)

Next tactic:
exact hX.prod_mk aemeasurable_id
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      exact hμs
    · exact hX.prod_mk aemeasurable_id
    · 

Proof state:
case pos.hs
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : AEMeasurable X
⊢ MeasurableSet (Prod.snd ⁻¹' s)

Next tactic:
exact measurable_snd hs
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      exact hμs
    · exact hX.prod_mk aemeasurable_id
    · exact measurable_snd hs
  · 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : ¬AEMeasurable X
⊢ ↑↑(Measure.map (fun ω => (X ω, ω)) μ) (Prod.snd ⁻¹' s) = 0

Next tactic:
rw [Measure.map_of_not_aemeasurable]
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      exact hμs
    · exact hX.prod_mk aemeasurable_id
    · exact measurable_snd hs
  · rw [Measure.map_of_not_aemeasurable]
    · 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : ¬AEMeasurable X
⊢ ↑↑0 (Prod.snd ⁻¹' s) = 0

Next tactic:
simp
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      exact hμs
    · exact hX.prod_mk aemeasurable_id
    · exact measurable_snd hs
  · rw [Measure.map_of_not_aemeasurable]
    · simp
    · 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : ¬AEMeasurable X
⊢ ¬AEMeasurable fun ω => (X ω, ω)

Next tactic:
contrapose! hX
theorem _root_.MeasureTheory.AEStronglyMeasurable.comp_snd_map_prod_mk
    {Ω F} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} [TopologicalSpace F] {f : Ω → F}
    (hf : AEStronglyMeasurable f μ) :
    AEStronglyMeasurable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  refine' ⟨fun x => hf.mk f x.2, hf.stronglyMeasurable_mk.comp_measurable measurable_snd, _⟩
  suffices h : Measure.QuasiMeasurePreserving Prod.snd (μ.map fun ω => (X ω, ω)) μ
  · exact Measure.QuasiMeasurePreserving.ae_eq h hf.ae_eq_mk
  refine' ⟨measurable_snd, Measure.AbsolutelyContinuous.mk fun s hs hμs => _⟩
  rw [Measure.map_apply _ hs]
  swap; · exact measurable_snd
  by_cases hX : AEMeasurable X μ
  · rw [Measure.map_apply_of_aemeasurable]
    · rw [← univ_prod, mk_preimage_prod, preimage_univ, univ_inter, preimage_id']
      exact hμs
    · exact hX.prod_mk aemeasurable_id
    · exact measurable_snd hs
  · rw [Measure.map_of_not_aemeasurable]
    · simp
    · contrapose! hX; 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F✝ : Type u_4
inst✝⁵ : MeasurableSpace Ω✝
inst✝⁴ : StandardBorelSpace Ω✝
inst✝³ : Nonempty Ω✝
inst✝² : NormedAddCommGroup F✝
mα : MeasurableSpace α
μ✝ : Measure α
inst✝¹ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s✝ : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F✝
Ω : Type u_5
F : Type u_6
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
inst✝ : TopologicalSpace F
f : Ω → F
hf : AEStronglyMeasurable f μ
s : Set Ω
hs : MeasurableSet s
hμs : ↑↑μ s = 0
hX : AEMeasurable fun ω => (X ω, ω)
⊢ AEMeasurable X

Next tactic:
exact measurable_fst.comp_aemeasurable hX
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  

Proof state:
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
⊢ Integrable fun x => f x.2

Next tactic:
by_cases hX : AEMeasurable X μ
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · 

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : AEMeasurable X
⊢ Integrable fun x => f x.2

Next tactic:
have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
    

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : AEMeasurable X
hf : AEStronglyMeasurable (fun x => f x.2) (Measure.map (fun ω => (X ω, ω)) μ)
⊢ Integrable fun x => f x.2

Next tactic:
refine' ⟨hf, _⟩
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
    refine' ⟨hf, _⟩
    

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : AEMeasurable X
hf : AEStronglyMeasurable (fun x => f x.2) (Measure.map (fun ω => (X ω, ω)) μ)
⊢ HasFiniteIntegral fun x => f x.2

Next tactic:
rw [HasFiniteIntegral, lintegral_map' hf.ennnorm (hX.prod_mk aemeasurable_id)]
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
    refine' ⟨hf, _⟩
    rw [HasFiniteIntegral, lintegral_map' hf.ennnorm (hX.prod_mk aemeasurable_id)]
    

Proof state:
case pos
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : AEMeasurable X
hf : AEStronglyMeasurable (fun x => f x.2) (Measure.map (fun ω => (X ω, ω)) μ)
⊢ ∫⁻ (a : Ω), ↑‖f (X a, a).2‖₊ ∂μ < ⊤

Next tactic:
exact hf_int.2
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
    refine' ⟨hf, _⟩
    rw [HasFiniteIntegral, lintegral_map' hf.ennnorm (hX.prod_mk aemeasurable_id)]
    exact hf_int.2
  · 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : ¬AEMeasurable X
⊢ Integrable fun x => f x.2

Next tactic:
rw [Measure.map_of_not_aemeasurable]
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
    refine' ⟨hf, _⟩
    rw [HasFiniteIntegral, lintegral_map' hf.ennnorm (hX.prod_mk aemeasurable_id)]
    exact hf_int.2
  · rw [Measure.map_of_not_aemeasurable]
    · 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : ¬AEMeasurable X
⊢ Integrable fun x => f x.2

Next tactic:
simp
theorem _root_.MeasureTheory.Integrable.comp_snd_map_prod_mk
    {Ω} {mΩ : MeasurableSpace Ω} (X : Ω → β) {μ : Measure Ω} {f : Ω → F} (hf_int : Integrable f μ) :
    Integrable (fun x : β × Ω => f x.2) (μ.map fun ω => (X ω, ω)) := by
  by_cases hX : AEMeasurable X μ
  · have hf := hf_int.1.comp_snd_map_prod_mk X (mΩ := mΩ) (mβ := mβ)
    refine' ⟨hf, _⟩
    rw [HasFiniteIntegral, lintegral_map' hf.ennnorm (hX.prod_mk aemeasurable_id)]
    exact hf_int.2
  · rw [Measure.map_of_not_aemeasurable]
    · simp
    · 

Proof state:
case neg
α : Type u_1
β : Type u_2
Ω✝ : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω✝
inst✝³ : StandardBorelSpace Ω✝
inst✝² : Nonempty Ω✝
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ✝ : Measure α
inst✝ : IsFiniteMeasure μ✝
X✝ : α → β
Y : α → Ω✝
mβ : MeasurableSpace β
s : Set Ω✝
t : Set β
f✝ : β × Ω✝ → F
Ω : Type u_5
mΩ : MeasurableSpace Ω
X : Ω → β
μ : Measure Ω
f : Ω → F
hf_int : Integrable f
hX : ¬AEMeasurable X
⊢ ¬AEMeasurable fun ω => (X ω, ω)

Next tactic:
contrapose! hX