Theorem: IsGδ.union
File: Mathlib/Topology/GDelta.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s t : Set X
hs : IsGδ s
ht : IsGδ t
⊢ IsGδ (s ∪ t)
state_after: case intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
t : Set X
ht : IsGδ t
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
⊢ IsGδ (⋂₀ S ∪ t)
tactic: rcases hs with ⟨S, Sopen, Scount, rfl⟩
state_before: case intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
t : Set X
ht : IsGδ t
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
⊢ IsGδ (⋂₀ S ∪ t)
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
⊢ IsGδ (⋂₀ S ∪ ⋂₀ T)
tactic: rcases ht with ⟨T, Topen, Tcount, rfl⟩
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
⊢ IsGδ (⋂₀ S ∪ ⋂₀ T)
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
⊢ IsGδ (⋂ p ∈ S ×ˢ T, p.1 ∪ p.2)
tactic: rw [sInter_union_sInter]
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
⊢ IsGδ (⋂ p ∈ S ×ˢ T, p.1 ∪ p.2)
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
⊢ ∀ i ∈ S ×ˢ T, IsOpen (i.1 ∪ i.2)
tactic: refine .biInter_of_isOpen (Scount.prod Tcount) ?_
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
⊢ ∀ i ∈ S ×ˢ T, IsOpen (i.1 ∪ i.2)
state_after: case intro.intro.intro.intro.intro.intro.mk.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
a b : Set X
ha : (a, b).1 ∈ S
hb : (a, b).2 ∈ T
⊢ IsOpen ((a, b).1 ∪ (a, b).2)
tactic: rintro ⟨a, b⟩ ⟨ha, hb⟩
state_before: case intro.intro.intro.intro.intro.intro.mk.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
S : Set (Set X)
Sopen : ∀ t ∈ S, IsOpen t
Scount : S.Countable
T : Set (Set X)
Topen : ∀ t ∈ T, IsOpen t
Tcount : T.Countable
a b : Set X
ha : (a, b).1 ∈ S
hb : (a, b).2 ∈ T
⊢ IsOpen ((a, b).1 ∪ (a, b).2)
state_after: no goals
tactic: exact (Sopen a ha).union (Topen b hb)