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

tactic: obtain ⟨U, hU_nhds, hU_inter⟩ := nhds_inter_eq_singleton_of_mem_discrete hx
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
⊢ ∃ U, IsOpen U ∧ U ∩ s = {x}
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
⊢ ∃ U, IsOpen U ∧ U ∩ s = {x}

tactic: obtain ⟨t, ht_sub, ht_open, ht_x⟩ := mem_nhds_iff.mp hU_nhds
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
⊢ ∃ U, IsOpen U ∧ U ∩ s = {x}
state_after: case intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ ∃ U, IsOpen U ∧ U ∩ s = {x}

tactic: refine ⟨t, ht_open, Set.Subset.antisymm ?_ ?_⟩
state_before: case intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ ∃ U, IsOpen U ∧ U ∩ s = {x}
state_after: case intro.intro.intro.intro.intro.refine_1
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ t ∩ s ⊆ {x}

case intro.intro.intro.intro.intro.refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ {x} ⊆ t ∩ s

tactic: exact hU_inter ▸ Set.inter_subset_inter_left s ht_sub
state_before: case intro.intro.intro.intro.intro.refine_1
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ t ∩ s ⊆ {x}
state_after: no goals

tactic: rw [Set.subset_inter_iff, Set.singleton_subset_iff, Set.singleton_subset_iff]
state_before: case intro.intro.intro.intro.intro.refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ {x} ⊆ t ∩ s
state_after: case intro.intro.intro.intro.intro.refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ x ∈ t ∧ x ∈ s

tactic: exact ⟨ht_x, hx⟩
state_before: case intro.intro.intro.intro.intro.refine_2
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
U : Set X
hU_nhds : U ∈ 𝓝 x
hU_inter : U ∩ s = {x}
t : Set X
ht_sub : t ⊆ U
ht_open : IsOpen t
ht_x : x ∈ t
⊢ x ∈ t ∧ x ∈ s
state_after: no goals