Theorem: AEMeasurable.map_map_of_aemeasurable
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

tactic: ext1 s hs
state_before: ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
⊢ Measure.map g (Measure.map f μ) = Measure.map (g ∘ f) μ

tactic: let g' := hg.mk g
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
⊢ ↑↑(Measure.map g (Measure.map f μ)) s = ↑↑(Measure.map (g ∘ f) μ) s

tactic: have A : map g (map f μ) = map g' (map f μ) := by
  apply MeasureTheory.Measure.map_congr
  exact hg.ae_eq_mk
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
⊢ ↑↑(Measure.map g (Measure.map f μ)) s = ↑↑(Measure.map (g ∘ f) μ) s

tactic: have B : map (g ∘ f) μ = map (g' ∘ f) μ := by
  apply MeasureTheory.Measure.map_congr
  exact ae_of_ae_map hf hg.ae_eq_mk
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
A : Measure.map g (Measure.map f μ) = Measure.map g' (Measure.map f μ)
⊢ ↑↑(Measure.map g (Measure.map f μ)) s = ↑↑(Measure.map (g ∘ f) μ) s

tactic: simp only [A, B, hs, hg.measurable_mk.aemeasurable.comp_aemeasurable hf, hg.measurable_mk,
  hg.measurable_mk hs, hf, map_apply, map_apply_of_aemeasurable]
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
A : Measure.map g (Measure.map f μ) = Measure.map g' (Measure.map f μ)
B : Measure.map (g ∘ f) μ = Measure.map (g' ∘ f) μ
⊢ ↑↑(Measure.map g (Measure.map f μ)) s = ↑↑(Measure.map (g ∘ f) μ) s

tactic: rfl
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
A : Measure.map g (Measure.map f μ) = Measure.map g' (Measure.map f μ)
B : Measure.map (g ∘ f) μ = Measure.map (g' ∘ f) μ
⊢ ↑↑μ (f ⁻¹' (mk g hg ⁻¹' s)) = ↑↑μ (mk g hg ∘ f ⁻¹' s)

tactic: apply MeasureTheory.Measure.map_congr
state_before: ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
⊢ Measure.map g (Measure.map f μ) = Measure.map g' (Measure.map f μ)

tactic: exact hg.ae_eq_mk
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
⊢ g =ᶠ[ae (Measure.map f μ)] g'

tactic: apply MeasureTheory.Measure.map_congr
state_before: ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
A : Measure.map g (Measure.map f μ) = Measure.map g' (Measure.map f μ)
⊢ Measure.map (g ∘ f) μ = Measure.map (g' ∘ f) μ

tactic: exact ae_of_ae_map hf hg.ae_eq_mk
state_before: case h
ι : Type ?u.2309729
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.2309741
R : Type ?u.2309744
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g✝ : α → β
μ ν : MeasureTheory.Measure α
g : β → γ
f : α → β
hg : AEMeasurable g
hf : AEMeasurable f
s : Set γ
hs : MeasurableSet s
g' : β → γ := mk g hg
A : Measure.map g (Measure.map f μ) = Measure.map g' (Measure.map f μ)
⊢ g ∘ f =ᶠ[ae μ] g' ∘ f