Theorem: isOpen_iff_forall_specializes
File: Mathlib/Topology/AlexandrovDiscrete.lean

Proof steps:
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
⊢ IsOpen s ↔ ∀ (x y : α), x ⤳ y → y ∈ s → x ∈ s
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), x ⤳ y → y ∈ s → x ∈ s
⊢ IsOpen s
tactic: refine ⟨fun hs x y hxy ↦ hxy.mem_open hs, fun hs ↦ ?_⟩
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), x ⤳ y → y ∈ s → x ∈ s
⊢ IsOpen s
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
⊢ IsOpen s
tactic: simp_rw [specializes_iff_exterior_subset] at hs
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
⊢ IsOpen s
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
⊢ ∀ x ∈ s, ∃ t ⊆ s, IsOpen t ∧ x ∈ t
tactic: simp_rw [isOpen_iff_mem_nhds, mem_nhds_iff]
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
⊢ ∀ x ∈ s, ∃ t ⊆ s, IsOpen t ∧ x ∈ t
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a✝ x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
a : α
ha : a ∈ s
⊢ ∃ t ⊆ s, IsOpen t ∧ a ∈ t
tactic: rintro a ha
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a✝ x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
a : α
ha : a ∈ s
⊢ ∃ t ⊆ s, IsOpen t ∧ a ∈ t
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a✝ x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
a : α
ha : a ∈ s
b : α
hb : b ∈ exterior {a}
⊢ exterior {b} ⊆ exterior {a}
tactic: refine ⟨_, fun b hb ↦ hs _ _ ?_ ha, isOpen_exterior, subset_exterior <| mem_singleton _⟩
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
s t : Set α
a✝ x y : α
inst✝¹ : AlexandrovDiscrete α
inst✝ : AlexandrovDiscrete β
hs : ∀ (x y : α), exterior {x} ⊆ exterior {y} → y ∈ s → x ∈ s
a : α
ha : a ∈ s
b : α
hb : b ∈ exterior {a}
⊢ exterior {b} ⊆ exterior {a}
state_after: no goals
tactic: rwa [isOpen_exterior.exterior_subset, singleton_subset_iff]