-- Mathlib/Topology/Order/Basic.lean
theorem IsOpen.exists_Ioo_subset [OrderTopology α] [Nontrivial α] {s : Set α} (hs : IsOpen s)
    (h : s.Nonempty) : ∃ a b, a < b ∧ Ioo a b ⊆ s

Proof state:
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
h : s.Nonempty
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
obtain ⟨x, hx⟩ : ∃ x, x ∈ s := h

Result:
case intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Proof state:
case intro.intro.inr.inr.intro.intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : y < x
l : α
lx : l < x
hl : Ioc l x ⊆ s
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
exact ⟨l, x, lx, Ioo_subset_Ioc_self.trans hl⟩

Result:
no goals

Proof state:
case intro.intro.inr.inr
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : y < x
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
obtain ⟨l, lx, hl⟩ : ∃ l, l < x ∧ Ioc l x ⊆ s :=
  exists_Ioc_subset_of_mem_nhds (hs.mem_nhds hx) ⟨y, H⟩

Result:
case intro.intro.inr.inr.intro.intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : y < x
l : α
lx : l < x
hl : Ioc l x ⊆ s
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Proof state:
case intro.intro.inl
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : x < y
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
obtain ⟨u, xu, hu⟩ : ∃ u, x < u ∧ Ico x u ⊆ s :=
  exists_Ico_subset_of_mem_nhds (hs.mem_nhds hx) ⟨y, H⟩

Result:
case intro.intro.inl.intro.intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : x < y
u : α
xu : x < u
hu : Ico x u ⊆ s
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Proof state:
case intro.intro.inl.intro.intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : x < y
u : α
xu : x < u
hu : Ico x u ⊆ s
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
exact ⟨x, u, xu, Ioo_subset_Ico_self.trans hu⟩

Result:
no goals

Proof state:
case intro.intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
rcases lt_trichotomy x y with (H | rfl | H)

Result:
case intro.intro.inl
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : x < y
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

case intro.intro.inr.inl
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
hy : x ≠ x
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

case intro.intro.inr.inr
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
H : y < x
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Proof state:
case intro.intro.inr.inl
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
hy : x ≠ x
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
exact (hy rfl).elim

Result:
no goals

Proof state:
case intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s

Tactic:
obtain ⟨y, hy⟩ : ∃ y, y ≠ x := exists_ne x

Result:
case intro.intro
α : Type u
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
hs : IsOpen s
x : α
hx : x ∈ s
y : α
hy : y ≠ x
⊢ ∃ a b, a < b ∧ Ioo a b ⊆ s