Theorem: TopologicalSpace.IsTopologicalBasis.insert_empty
File: Mathlib/Topology/Bases.lean

tactic: refine ⟨?_, by rw [sUnion_insert, empty_union, h.sUnion_eq], ?_⟩
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ IsTopologicalBasis (insert ∅ s)
state_after: case refine_1
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ ∀ t₁ ∈ insert ∅ s, ∀ t₂ ∈ insert ∅ s, ∀ x ∈ t₁ ∩ t₂, ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂

case refine_2
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ t = generateFrom (insert ∅ s)

tactic: rw [sUnion_insert, empty_union, h.sUnion_eq]
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ ⋃₀ insert ∅ s = univ
state_after: no goals

tactic: rintro t₁ (rfl | h₁) t₂ (rfl | h₂) x ⟨hx₁, hx₂⟩
state_before: case refine_1
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ ∀ t₁ ∈ insert ∅ s, ∀ t₂ ∈ insert ∅ s, ∀ x ∈ t₁ ∩ t₂, ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂
state_after: case refine_1.inl.inl.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
x : α
hx₁ hx₂ : x ∈ ∅
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ ∅ ∩ ∅

case refine_1.inl.inr.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₂ : Set α
h₂ : t₂ ∈ s
x : α
hx₁ : x ∈ ∅
hx₂ : x ∈ t₂
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ ∅ ∩ t₂

case refine_1.inr.inl.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₁ : Set α
h₁ : t₁ ∈ s
x : α
hx₁ : x ∈ t₁
hx₂ : x ∈ ∅
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ ∅

case refine_1.inr.inr.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₁ : Set α
h₁ : t₁ ∈ s
t₂ : Set α
h₂ : t₂ ∈ s
x : α
hx₁ : x ∈ t₁
hx₂ : x ∈ t₂
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂

tactic: cases hx₁
state_before: case refine_1.inl.inl.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
x : α
hx₁ hx₂ : x ∈ ∅
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ ∅ ∩ ∅
state_after: no goals

tactic: cases hx₁
state_before: case refine_1.inl.inr.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₂ : Set α
h₂ : t₂ ∈ s
x : α
hx₁ : x ∈ ∅
hx₂ : x ∈ t₂
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ ∅ ∩ t₂
state_after: no goals

tactic: cases hx₂
state_before: case refine_1.inr.inl.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₁ : Set α
h₁ : t₁ ∈ s
x : α
hx₁ : x ∈ t₁
hx₂ : x ∈ ∅
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ ∅
state_after: no goals

tactic: obtain ⟨t₃, h₃, hs⟩ := h.exists_subset_inter _ h₁ _ h₂ x ⟨hx₁, hx₂⟩
state_before: case refine_1.inr.inr.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₁ : Set α
h₁ : t₁ ∈ s
t₂ : Set α
h₂ : t₂ ∈ s
x : α
hx₁ : x ∈ t₁
hx₂ : x ∈ t₂
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂
state_after: case refine_1.inr.inr.intro.intro.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₁ : Set α
h₁ : t₁ ∈ s
t₂ : Set α
h₂ : t₂ ∈ s
x : α
hx₁ : x ∈ t₁
hx₂ : x ∈ t₂
t₃ : Set α
h₃ : t₃ ∈ s
hs : x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂

tactic: exact ⟨t₃, .inr h₃, hs⟩
state_before: case refine_1.inr.inr.intro.intro.intro
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t₁ : Set α
h₁ : t₁ ∈ s
t₂ : Set α
h₂ : t₂ ∈ s
x : α
hx₁ : x ∈ t₁
hx₂ : x ∈ t₂
t₃ : Set α
h₃ : t₃ ∈ s
hs : x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂
⊢ ∃ t₃ ∈ insert ∅ s, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂
state_after: no goals

tactic: rw [h.eq_generateFrom]
state_before: case refine_2
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ t = generateFrom (insert ∅ s)
state_after: case refine_2
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ generateFrom s = generateFrom (insert ∅ s)

tactic: refine le_antisymm (le_generateFrom fun t => ?_) (generateFrom_anti <| subset_insert ∅ s)
state_before: case refine_2
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ generateFrom s = generateFrom (insert ∅ s)
state_after: case refine_2
α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t : Set α
⊢ t ∈ insert ∅ s → IsOpen t

tactic: rintro (rfl | ht)
state_before: case refine_2
α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t : Set α
⊢ t ∈ insert ∅ s → IsOpen t
state_after: case refine_2.inl
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ IsOpen ∅

case refine_2.inr
α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t : Set α
ht : t ∈ s
⊢ IsOpen t

tactic: exact @isOpen_empty _ (generateFrom s)
state_before: case refine_2.inl
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
⊢ IsOpen ∅
state_after: no goals

tactic: exact .basic t ht
state_before: case refine_2.inr
α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ : Set α
s : Set (Set α)
h : IsTopologicalBasis s
t : Set α
ht : t ∈ s
⊢ IsOpen t
state_after: no goals