Theorem: LowerTopology.isLowerSet_of_isOpen
File: Mathlib/Topology/Order/LowerTopology.lean

tactic: replace h := isOpen_iff_generate_Ici_compl.1 h
state_before: α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
h : IsOpen s
⊢ IsLowerSet s

tactic: induction h
state_before: α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
h : GenerateOpen {t | ∃ a, Ici aᶜ = t} s
⊢ IsLowerSet s

tactic: case basic u h' => obtain ⟨a, rfl⟩ := h'; exact (isUpperSet_Ici a).compl
state_before: case basic
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s s✝ : Set α
a✝ : s✝ ∈ {t | ∃ a, Ici aᶜ = t}
⊢ IsLowerSet s✝

case univ
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ IsLowerSet univ

case inter
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s s✝ t✝ : Set α
a✝¹ : GenerateOpen {t | ∃ a, Ici aᶜ = t} s✝
a✝ : GenerateOpen {t | ∃ a, Ici aᶜ = t} t✝
a_ih✝¹ : IsLowerSet s✝
a_ih✝ : IsLowerSet t✝
⊢ IsLowerSet (s✝ ∩ t✝)

case sUnion
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen {t | ∃ a, Ici aᶜ = t} s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → IsLowerSet s
⊢ IsLowerSet (⋃₀ S✝)

tactic: case univ => exact isLowerSet_univ
state_before: case univ
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ IsLowerSet univ

case inter
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s s✝ t✝ : Set α
a✝¹ : GenerateOpen {t | ∃ a, Ici aᶜ = t} s✝
a✝ : GenerateOpen {t | ∃ a, Ici aᶜ = t} t✝
a_ih✝¹ : IsLowerSet s✝
a_ih✝ : IsLowerSet t✝
⊢ IsLowerSet (s✝ ∩ t✝)

case sUnion
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen {t | ∃ a, Ici aᶜ = t} s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → IsLowerSet s
⊢ IsLowerSet (⋃₀ S✝)

tactic: case inter u v _ _ hu2 hv2 => exact hu2.inter hv2
state_before: case inter
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s s✝ t✝ : Set α
a✝¹ : GenerateOpen {t | ∃ a, Ici aᶜ = t} s✝
a✝ : GenerateOpen {t | ∃ a, Ici aᶜ = t} t✝
a_ih✝¹ : IsLowerSet s✝
a_ih✝ : IsLowerSet t✝
⊢ IsLowerSet (s✝ ∩ t✝)

case sUnion
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen {t | ∃ a, Ici aᶜ = t} s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → IsLowerSet s
⊢ IsLowerSet (⋃₀ S✝)

tactic: case sUnion _ _ ih => exact isLowerSet_sUnion ih
state_before: case sUnion
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen {t | ∃ a, Ici aᶜ = t} s
a_ih✝ : ∀ (s : Set α), s ∈ S✝ → IsLowerSet s
⊢ IsLowerSet (⋃₀ S✝)

tactic: obtain ⟨a, rfl⟩ := h'
state_before: α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s u : Set α
h' : u ∈ {t | ∃ a, Ici aᶜ = t}
⊢ IsLowerSet u

tactic: exact (isUpperSet_Ici a).compl
state_before: case intro
α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
a : α
⊢ IsLowerSet (Ici aᶜ)

tactic: exact isLowerSet_univ
state_before: α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ IsLowerSet univ

tactic: exact hu2.inter hv2
state_before: α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s u v : Set α
a✝¹ : GenerateOpen {t | ∃ a, Ici aᶜ = t} u
a✝ : GenerateOpen {t | ∃ a, Ici aᶜ = t} v
hu2 : IsLowerSet u
hv2 : IsLowerSet v
⊢ IsLowerSet (u ∩ v)

tactic: exact isLowerSet_sUnion ih
state_before: α : Type u_1
β : Type ?u.5122
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
S✝ : Set (Set α)
a✝ : ∀ (s : Set α), s ∈ S✝ → GenerateOpen {t | ∃ a, Ici aᶜ = t} s
ih : ∀ (s : Set α), s ∈ S✝ → IsLowerSet s
⊢ IsLowerSet (⋃₀ S✝)