Theorem: exists_mem_nhds_isCompact_mapsTo_of_isCompact_mem_nhds
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
⊢ ∃ K ∈ 𝓝 x, IsCompact K ∧ MapsTo f K s
state_after: X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
hc : IsCompact (f '' K \ interior s)
⊢ ∃ K ∈ 𝓝 x, IsCompact K ∧ MapsTo f K s
tactic: have hc : IsCompact (f '' K \ interior s) := (hKc.image hf).diff isOpen_interior
state_before: X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
hc : IsCompact (f '' K \ interior s)
⊢ ∃ K ∈ 𝓝 x, IsCompact K ∧ MapsTo f K s
state_after: case intro.intro.intro.intro.intro.intro
X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
hc : IsCompact (f '' K \ interior s)
U V : Set Y
Uo : IsOpen U
Vo : IsOpen V
hxU : {f x} ⊆ U
hV : f '' K \ interior s ⊆ V
hd : Disjoint U V
⊢ ∃ K ∈ 𝓝 x, IsCompact K ∧ MapsTo f K s
tactic: obtain ⟨U, V, Uo, Vo, hxU, hV, hd⟩ : SeparatedNhds {f x} (f '' K \ interior s) := by
    simp_rw [separatedNhds_iff_disjoint, nhdsSet_singleton, hc.disjoint_nhdsSet_right,
      disjoint_nhds_nhds_iff_not_inseparable]
    rintro y ⟨-, hys⟩ hxy
    refine hys <| (hxy.mem_open_iff isOpen_interior).1 ?_
    rwa [mem_interior_iff_mem_nhds]
state_before: case intro.intro.intro.intro.intro.intro
X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
hc : IsCompact (f '' K \ interior s)
U V : Set Y
Uo : IsOpen U
Vo : IsOpen V
hxU : {f x} ⊆ U
hV : f '' K \ interior s ⊆ V
hd : Disjoint U V
⊢ ∃ K ∈ 𝓝 x, IsCompact K ∧ MapsTo f K s
state_after: case intro.intro.intro.intro.intro.intro.refine_1
X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
hc : IsCompact (f '' K \ interior s)
U V : Set Y
Uo : IsOpen U
Vo : IsOpen V
hxU : {f x} ⊆ U
hV : f '' K \ interior s ⊆ V
hd : Disjoint U V
⊢ (f ⁻¹' V)ᶜ ∈ 𝓝 x

case intro.intro.intro.intro.intro.intro.refine_2
X✝ : Type u_1
Y✝ : Type u_2
inst✝⁵ : TopologicalSpace X✝
inst✝⁴ : FirstCountableTopology X✝
inst✝³ : R1Space X✝
x✝ y✝ : X✝
X : Type u_3
Y : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : R1Space Y
f : X → Y
x : X
K : Set X
s : Set Y
hf : Continuous f
hs : s ∈ 𝓝 (f x)
hKc : IsCompact K
hKx : K ∈ 𝓝 x
hc : IsCompact (f '' K \ interior s)
U V : Set Y
Uo : IsOpen U
Vo : IsOpen V
hxU : {f x} ⊆ U
hV : f '' K \ interior s ⊆ V
hd : Disjoint U V
y : X
hy : y ∈ K \ f ⁻¹' V
⊢ f y ∈ s
tactic: refine ⟨K \ f ⁻¹' V, diff_mem hKx ?_, hKc.diff <| Vo.preimage hf, fun y hy ↦ ?_⟩