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

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
⊢ ∃ 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: 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: 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: refine ⟨K \ f ⁻¹' V, diff_mem hKx ?_, hKc.diff <| Vo.preimage hf, fun y hy ↦ ?_⟩
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: simp_rw [separatedNhds_iff_disjoint, nhdsSet_singleton, hc.disjoint_nhdsSet_right,
  disjoint_nhds_nhds_iff_not_inseparable]
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)
⊢ SeparatedNhds {f x} (f '' K \ interior 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)
⊢ ∀ x_1 ∈ f '' K \ interior s, ¬Inseparable (f x) x_1

tactic: rintro y ⟨-, hys⟩ hxy
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)
⊢ ∀ x_1 ∈ f '' K \ interior s, ¬Inseparable (f x) x_1
state_after: case 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)
y : Y
hys : y ∉ interior s
hxy : Inseparable (f x) y
⊢ False

tactic: refine hys <| (hxy.mem_open_iff isOpen_interior).1 ?_
state_before: case 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)
y : Y
hys : y ∉ interior s
hxy : Inseparable (f x) y
⊢ False
state_after: case 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)
y : Y
hys : y ∉ interior s
hxy : Inseparable (f x) y
⊢ f x ∈ interior s

tactic: rwa [mem_interior_iff_mem_nhds]
state_before: case 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)
y : Y
hys : y ∉ interior s
hxy : Inseparable (f x) y
⊢ f x ∈ interior s
state_after: no goals

tactic: filter_upwards [hf.continuousAt <| Uo.mem_nhds (hxU rfl)] with x hx
  using Set.disjoint_left.1 hd hx
state_before: 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
state_after: no goals

tactic: by_contra hys
state_before: 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
state_after: 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
hys : f y ∉ s
⊢ False

tactic: exact hy.2 (hV ⟨mem_image_of_mem _ hy.1, not_mem_subset interior_subset hys⟩)
state_before: 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
hys : f y ∉ s
⊢ False
state_after: no goals