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

Proof steps:
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: 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
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: 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 γ
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: rcases exists_opensMeasurableSpace_of_countablySeparated α with ⟨τ, _, _, _⟩
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: 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.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: 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 γ
M : MeasurableSet s
⊢ MeasurableSet (f '' s)
state_after: no goals
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