Theorem: MeasureTheory.StronglyMeasurable.isSeparable_range
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
⊢ IsSeparable (range f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
⊢ IsSeparable (range f)
tactic: have : IsSeparable (closure (⋃ n, range (hf.approx n))) :=
    .closure <| .iUnion fun n => (hf.approx n).finite_range.isSeparable
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
⊢ IsSeparable (range f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
⊢ range f ⊆ closure (⋃ n, range ↑(hf.approx n))
tactic: apply this.mono
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
⊢ range f ⊆ closure (⋃ n, range ↑(hf.approx n))
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
⊢ f x ∈ closure (⋃ n, range ↑(hf.approx n))
tactic: rintro _ ⟨x, rfl⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
⊢ f x ∈ closure (⋃ n, range ↑(hf.approx n))
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
⊢ ∀ᶠ (x_1 : ℕ) in atTop, ↑(hf.approx x_1) x ∈ ⋃ n, range ↑(hf.approx n)
tactic: apply mem_closure_of_tendsto (hf.tendsto_approx x)
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
⊢ ∀ᶠ (x_1 : ℕ) in atTop, ↑(hf.approx x_1) x ∈ ⋃ n, range ↑(hf.approx n)
state_after: case intro.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
n : ℕ
⊢ ↑(hf.approx n) x ∈ ⋃ n, range ↑(hf.approx n)
tactic: filter_upwards with n
state_before: case intro.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
n : ℕ
⊢ ↑(hf.approx n) x ∈ ⋃ n, range ↑(hf.approx n)
state_after: case intro.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
n : ℕ
⊢ ↑(hf.approx n) x ∈ range ↑(hf.approx n)
tactic: apply mem_iUnion_of_mem n
state_before: case intro.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
hf : StronglyMeasurable f
this : IsSeparable (closure (⋃ n, range ↑(hf.approx n)))
x : α
n : ℕ
⊢ ↑(hf.approx n) x ∈ range ↑(hf.approx n)
state_after: no goals
tactic: exact mem_range_self _