Theorem: Ordinal.isLimit_of_mem_frontier
File: Mathlib/SetTheory/Ordinal/Topology.lean

tactic: simp only [frontier_eq_closure_inter_closure, Set.mem_inter_iff, mem_closure_iff] at ha
state_before: s : Set Ordinal.{u}
a : Ordinal.{u}
ha : a ∈ frontier s
⊢ a.IsLimit
state_after: s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
⊢ a.IsLimit

tactic: by_contra h
state_before: s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
⊢ a.IsLimit
state_after: s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : ¬a.IsLimit
⊢ False

tactic: rw [← isOpen_singleton_iff] at h
state_before: s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : ¬a.IsLimit
⊢ False
state_after: s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
⊢ False

tactic: rcases ha.1 _ h rfl with ⟨b, hb, hb'⟩
state_before: s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
⊢ False
state_after: case intro.intro
s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
b : Ordinal.{u}
hb : b ∈ {a}
hb' : b ∈ s
⊢ False

tactic: rcases ha.2 _ h rfl with ⟨c, hc, hc'⟩
state_before: case intro.intro
s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
b : Ordinal.{u}
hb : b ∈ {a}
hb' : b ∈ s
⊢ False
state_after: case intro.intro.intro.intro
s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
b : Ordinal.{u}
hb : b ∈ {a}
hb' : b ∈ s
c : Ordinal.{u}
hc : c ∈ {a}
hc' : c ∈ sᶜ
⊢ False

tactic: rw [Set.mem_singleton_iff] at *
state_before: case intro.intro.intro.intro
s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
b : Ordinal.{u}
hb : b ∈ {a}
hb' : b ∈ s
c : Ordinal.{u}
hc : c ∈ {a}
hc' : c ∈ sᶜ
⊢ False
state_after: case intro.intro.intro.intro
s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
b : Ordinal.{u}
hb : b = a
hb' : b ∈ s
c : Ordinal.{u}
hc : c = a
hc' : c ∈ sᶜ
⊢ False

tactic: subst hb
state_before: case intro.intro.intro.intro
s : Set Ordinal.{u}
a : Ordinal.{u}
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → a ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {a}
b : Ordinal.{u}
hb : b = a
hb' : b ∈ s
c : Ordinal.{u}
hc : c = a
hc' : c ∈ sᶜ
⊢ False
state_after: case intro.intro.intro.intro
s : Set Ordinal.{u}
b : Ordinal.{u}
hb' : b ∈ s
c : Ordinal.{u}
hc' : c ∈ sᶜ
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → b ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → b ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {b}
hc : c = b
⊢ False

tactic: subst hc
state_before: case intro.intro.intro.intro
s : Set Ordinal.{u}
b : Ordinal.{u}
hb' : b ∈ s
c : Ordinal.{u}
hc' : c ∈ sᶜ
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → b ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → b ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {b}
hc : c = b
⊢ False
state_after: case intro.intro.intro.intro
s : Set Ordinal.{u}
c : Ordinal.{u}
hc' : c ∈ sᶜ
hb' : c ∈ s
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → c ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → c ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {c}
⊢ False

tactic: exact hc' hb'
state_before: case intro.intro.intro.intro
s : Set Ordinal.{u}
c : Ordinal.{u}
hc' : c ∈ sᶜ
hb' : c ∈ s
ha :
  (∀ (o : Set Ordinal.{u}), IsOpen o → c ∈ o → (o ∩ s).Nonempty) ∧
    ∀ (o : Set Ordinal.{u}), IsOpen o → c ∈ o → (o ∩ sᶜ).Nonempty
h : IsOpen {c}
⊢ False
state_after: no goals