Theorem: comap_coe_nhdsWithin_Iio_of_Ioo_subset
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: nontriviality
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
hb : s ⊆ Iio b
hs : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
⊢ comap Subtype.val (𝓝[<] b) = atTop
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
hb : s ⊆ Iio b
hs : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
⊢ comap Subtype.val (𝓝[<] b) = atTop

tactic: haveI : Nonempty s := nontrivial_iff_nonempty.1 ‹_›
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
hb : s ⊆ Iio b
hs : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
⊢ comap Subtype.val (𝓝[<] b) = atTop
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
hb : s ⊆ Iio b
hs : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
⊢ comap Subtype.val (𝓝[<] b) = atTop

tactic: rcases hs (nonempty_subtype.1 ‹_›) with ⟨a, h, hs⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
hb : s ⊆ Iio b
hs : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
⊢ comap Subtype.val (𝓝[<] b) = atTop
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
⊢ comap Subtype.val (𝓝[<] b) = atTop

tactic: ext u
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
⊢ comap Subtype.val (𝓝[<] b) = atTop
state_after: case intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
⊢ u ∈ comap Subtype.val (𝓝[<] b) ↔ u ∈ atTop

tactic: constructor
state_before: case intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
⊢ u ∈ comap Subtype.val (𝓝[<] b) ↔ u ∈ atTop
state_after: case intro.intro.a.mp
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
⊢ u ∈ comap Subtype.val (𝓝[<] b) → u ∈ atTop

case intro.intro.a.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
⊢ u ∈ atTop → u ∈ comap Subtype.val (𝓝[<] b)

tactic: rintro ⟨t, ht, hts⟩
state_before: case intro.intro.a.mp
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
⊢ u ∈ comap Subtype.val (𝓝[<] b) → u ∈ atTop
state_after: case intro.intro.a.mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
⊢ u ∈ atTop

tactic: obtain ⟨x, ⟨hxa : a ≤ x, hxb : x < b⟩, hxt : Ioo x b ⊆ t⟩ :=
  (mem_nhdsWithin_Iio_iff_exists_mem_Ico_Ioo_subset h).mp ht
state_before: case intro.intro.a.mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
⊢ u ∈ atTop
state_after: case intro.intro.a.mp.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
⊢ u ∈ atTop

tactic: obtain ⟨y, hxy, hyb⟩ := exists_between hxb
state_before: case intro.intro.a.mp.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
⊢ u ∈ atTop
state_after: case intro.intro.a.mp.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
y : α
hxy : x < y
hyb : y < b
⊢ u ∈ atTop

tactic: refine mem_of_superset (mem_atTop ⟨y, hs ⟨hxa.trans_lt hxy, hyb⟩⟩) ?_
state_before: case intro.intro.a.mp.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
y : α
hxy : x < y
hyb : y < b
⊢ u ∈ atTop
state_after: case intro.intro.a.mp.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
y : α
hxy : x < y
hyb : y < b
⊢ {b_1 | ⟨y, ⋯⟩ ≤ b_1} ⊆ u

tactic: rintro ⟨z, hzs⟩ (hyz : y ≤ z)
state_before: case intro.intro.a.mp.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
y : α
hxy : x < y
hyb : y < b
⊢ {b_1 | ⟨y, ⋯⟩ ≤ b_1} ⊆ u
state_after: case intro.intro.a.mp.intro.intro.intro.intro.intro.intro.intro.mk
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
y : α
hxy : x < y
hyb : y < b
z : α
hzs : z ∈ s
hyz : y ≤ z
⊢ ⟨z, hzs⟩ ∈ u

tactic: exact hts (hxt ⟨hxy.trans_le hyz, hb hzs⟩)
state_before: case intro.intro.a.mp.intro.intro.intro.intro.intro.intro.intro.mk
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
t : Set α
ht : t ∈ 𝓝[<] b
hts : Subtype.val ⁻¹' t ⊆ u
x : α
hxt : Ioo x b ⊆ t
hxa : a ≤ x
hxb : x < b
y : α
hxy : x < y
hyb : y < b
z : α
hzs : z ∈ s
hyz : y ≤ z
⊢ ⟨z, hzs⟩ ∈ u
state_after: no goals

tactic: intro hu
state_before: case intro.intro.a.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
⊢ u ∈ atTop → u ∈ comap Subtype.val (𝓝[<] b)
state_after: case intro.intro.a.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
hu : u ∈ atTop
⊢ u ∈ comap Subtype.val (𝓝[<] b)

tactic: obtain ⟨x : s, hx : ∀ z, x ≤ z → z ∈ u⟩ := mem_atTop_sets.1 hu
state_before: case intro.intro.a.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
hu : u ∈ atTop
⊢ u ∈ comap Subtype.val (𝓝[<] b)
state_after: case intro.intro.a.mpr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
hu : u ∈ atTop
x : ↑s
hx : ∀ (z : ↑s), x ≤ z → z ∈ u
⊢ u ∈ comap Subtype.val (𝓝[<] b)

tactic: exact ⟨Ioo x b, Ioo_mem_nhdsWithin_Iio' (hb x.2), fun z hz => hx _ hz.1.le⟩
state_before: case intro.intro.a.mpr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝¹ b : α
s : Set α
hb : s ⊆ Iio b
hs✝ : s.Nonempty → ∃ a < b, Ioo a b ⊆ s
a✝ : Nontrivial (Filter { x // x ∈ s })
this : Nonempty ↑s
a : α
h : a < b
hs : Ioo a b ⊆ s
u : Set { x // x ∈ s }
hu : u ∈ atTop
x : ↑s
hx : ∀ (z : ↑s), x ≤ z → z ∈ u
⊢ u ∈ comap Subtype.val (𝓝[<] b)
state_after: no goals