Theorem: MeasurableSet.image_of_measurable_injOn
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: letI := upgradeStandardBorel γ
state_before: α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
⊢ MeasurableSet (f '' s)
state_after: α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
⊢ MeasurableSet (f '' s)

tactic: let tγ : TopologicalSpace γ := inferInstance
state_before: α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
⊢ MeasurableSet (f '' s)
state_after: α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
⊢ MeasurableSet (f '' s)

tactic: rcases exists_opensMeasurableSpace_of_countablySeparated α with ⟨τ, _, _, _⟩
state_before: α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
⊢ MeasurableSet (f '' s)
state_after: case intro.intro.intro
α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
τ : TopologicalSpace α
left✝¹ : SecondCountableTopology α
left✝ : T4Space α
right✝ : OpensMeasurableSpace α
⊢ MeasurableSet (f '' s)

tactic: obtain ⟨t', t't, f_cont, t'_polish⟩ :
    ∃ t' : TopologicalSpace γ, t' ≤ tγ ∧ @Continuous γ _ t' _ f ∧ @PolishSpace γ t' :=
  f_meas.exists_continuous
state_before: case intro.intro.intro
α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
τ : TopologicalSpace α
left✝¹ : SecondCountableTopology α
left✝ : T4Space α
right✝ : OpensMeasurableSpace α
⊢ MeasurableSet (f '' s)
state_after: case intro.intro.intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
τ : TopologicalSpace α
left✝¹ : SecondCountableTopology α
left✝ : T4Space α
right✝ : OpensMeasurableSpace α
t' : TopologicalSpace γ
t't : t' ≤ tγ
f_cont : Continuous f
t'_polish : PolishSpace γ
⊢ MeasurableSet (f '' s)

tactic: have M : MeasurableSet[@borel γ t'] s :=
  @Continuous.measurable γ γ t' (@borel γ t')
    (@BorelSpace.opensMeasurable γ t' (@borel γ t') (@BorelSpace.mk _ _ (borel γ) rfl))
    tγ _ _ _ (continuous_id_of_le t't) s hs
state_before: case intro.intro.intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
τ : TopologicalSpace α
left✝¹ : SecondCountableTopology α
left✝ : T4Space α
right✝ : OpensMeasurableSpace α
t' : TopologicalSpace γ
t't : t' ≤ tγ
f_cont : Continuous f
t'_polish : PolishSpace γ
⊢ MeasurableSet (f '' s)
state_after: case intro.intro.intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
τ : TopologicalSpace α
left✝¹ : SecondCountableTopology α
left✝ : T4Space α
right✝ : OpensMeasurableSpace α
t' : TopologicalSpace γ
t't : t' ≤ tγ
f_cont : Continuous f
t'_polish : PolishSpace γ
M : MeasurableSet s
⊢ MeasurableSet (f '' s)

tactic: exact
  @MeasurableSet.image_of_continuousOn_injOn γ
    _ _ _ _  s f _ t' t'_polish (@borel γ t') (@BorelSpace.mk _ _ (borel γ) rfl)
    M (@Continuous.continuousOn γ _ t' _ f s f_cont) f_inj
state_before: case intro.intro.intro.intro.intro.intro
α✝ : Type u_1
ι : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
tβ : TopologicalSpace β
inst✝⁵ : T2Space β
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace α
s : Set γ
f✝ : γ → β
f : γ → α
inst✝² : MeasurableSpace.CountablySeparated α
inst✝¹ : MeasurableSpace γ
inst✝ : StandardBorelSpace γ
hs : MeasurableSet s
f_meas : Measurable f
f_inj : InjOn f s
this : UpgradedStandardBorel γ := upgradeStandardBorel γ
tγ : TopologicalSpace γ := inferInstance
τ : TopologicalSpace α
left✝¹ : SecondCountableTopology α
left✝ : T4Space α
right✝ : OpensMeasurableSpace α
t' : TopologicalSpace γ
t't : t' ≤ tγ
f_cont : Continuous f
t'_polish : PolishSpace γ
M : MeasurableSet s
⊢ MeasurableSet (f '' s)
state_after: no goals