Theorem: TopologicalSpace.isOpen_top_iff
File: Mathlib/Topology/Order.lean

tactic: induction h
state_before: α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
h : IsOpen U
⊢ U = ∅ ∨ U = univ

tactic: case basic h => exact False.elim h
state_before: case basic
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U s✝ : Set α
a✝ : s✝ ∈ ↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)
⊢ s✝ = ∅ ∨ s✝ = univ

case univ
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
⊢ univ = ∅ ∨ univ = univ

case inter
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U s✝ t✝ : Set α
a✝¹ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s✝
a✝ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) t✝
a_ih✝¹ : s✝ = ∅ ∨ s✝ = univ
a_ih✝ : t✝ = ∅ ∨ t✝ = univ
⊢ s✝ ∩ t✝ = ∅ ∨ s✝ ∩ t✝ = univ

case sUnion
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → s = ∅ ∨ s = univ
⊢ ⋃₀ S✝ = ∅ ∨ ⋃₀ S✝ = univ

tactic: case univ => exact .inr rfl
state_before: case univ
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
⊢ univ = ∅ ∨ univ = univ

case inter
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U s✝ t✝ : Set α
a✝¹ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s✝
a✝ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) t✝
a_ih✝¹ : s✝ = ∅ ∨ s✝ = univ
a_ih✝ : t✝ = ∅ ∨ t✝ = univ
⊢ s✝ ∩ t✝ = ∅ ∨ s✝ ∩ t✝ = univ

case sUnion
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → s = ∅ ∨ s = univ
⊢ ⋃₀ S✝ = ∅ ∨ ⋃₀ S✝ = univ

tactic: case inter h₁ h₂ =>
  rcases h₁ with (rfl | rfl) <;> rcases h₂ with (rfl | rfl) <;> simp
state_before: case inter
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U s✝ t✝ : Set α
a✝¹ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s✝
a✝ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) t✝
a_ih✝¹ : s✝ = ∅ ∨ s✝ = univ
a_ih✝ : t✝ = ∅ ∨ t✝ = univ
⊢ s✝ ∩ t✝ = ∅ ∨ s✝ ∩ t✝ = univ

case sUnion
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → s = ∅ ∨ s = univ
⊢ ⋃₀ S✝ = ∅ ∨ ⋃₀ S✝ = univ

tactic: case sUnion _ ih => exact sUnion_mem_empty_univ ih
state_before: case sUnion
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → s = ∅ ∨ s = univ
⊢ ⋃₀ S✝ = ∅ ∨ ⋃₀ S✝ = univ

tactic: exact False.elim h
state_before: α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U s✝ : Set α
h : s✝ ∈ ↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)
⊢ s✝ = ∅ ∨ s✝ = univ

tactic: exact .inr rfl
state_before: α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
⊢ univ = ∅ ∨ univ = univ

tactic: rcases h₁ with (rfl | rfl) <;> rcases h₂ with (rfl | rfl) <;> simp
state_before: α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U s✝ t✝ : Set α
a✝¹ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s✝
a✝ : GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) t✝
h₁ : s✝ = ∅ ∨ s✝ = univ
h₂ : t✝ = ∅ ∨ t✝ = univ
⊢ s✝ ∩ t✝ = ∅ ∨ s✝ ∩ t✝ = univ

tactic: exact sUnion_mem_empty_univ ih
state_before: α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen (↑OrderDual.ofDual (↑OrderDual.ofDual ⊥)) s
ih : ∀ (s : Set α), s ∈ S✝ → s = ∅ ∨ s = univ
⊢ ⋃₀ S✝ = ∅ ∨ ⋃₀ S✝ = univ

tactic: rintro (rfl | rfl)
state_before: α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
U : Set α
⊢ U = ∅ ∨ U = univ → IsOpen U

tactic: exacts [@isOpen_empty _ ⊤, @isOpen_univ _ ⊤]
state_before: case inl
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
⊢ IsOpen ∅

case inr
α✝ : Type ?u.11392
t t₁ t₂ : TopologicalSpace α✝
s : Set α✝
α : Type u_1
⊢ IsOpen univ