Theorem: IsGδ.dense_iUnion_interior_of_closed
File: Mathlib/Topology/Baire/Lemmas.lean

Proof steps:
state_before: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
⊢ Dense (⋃ i, interior (f i))
state_after: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
⊢ Dense (⋃ i, interior (f i))
tactic: let g i := (frontier (f i))ᶜ
state_before: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
⊢ Dense (⋃ i, interior (f i))
state_after: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
⊢ Dense (⋃ i, interior (f i))
tactic: have hgo : ∀ i, IsOpen (g i) := fun i => isClosed_frontier.isOpen_compl
state_before: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
⊢ Dense (⋃ i, interior (f i))
state_after: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
⊢ Dense (⋃ i, interior (f i))
tactic: have hgd : Dense (⋂ i, g i) := by
    refine dense_iInter_of_isOpen hgo fun i x => ?_
    rw [closure_compl, interior_frontier (hc _)]
    exact id
state_before: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
⊢ Dense (⋃ i, interior (f i))
state_after: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
⊢ s ∩ ⋂ i, g i ⊆ ⋃ i, interior (f i)
tactic: refine (hd.inter_of_Gδ hs (.iInter_of_isOpen fun i => (hgo i)) hgd).mono ?_
state_before: X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
⊢ s ∩ ⋂ i, g i ⊆ ⋃ i, interior (f i)
state_after: case intro
X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
x : X
hxs : x ∈ s
hxg : x ∈ ⋂ i, g i
⊢ x ∈ ⋃ i, interior (f i)
tactic: rintro x ⟨hxs, hxg⟩
state_before: case intro
X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
x : X
hxs : x ∈ s
hxg : x ∈ ⋂ i, g i
⊢ x ∈ ⋃ i, interior (f i)
state_after: case intro
X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
x : X
hxs : x ∈ s
hxg : ∀ (i : ι), x ∈ g i
⊢ x ∈ ⋃ i, interior (f i)
tactic: rw [mem_iInter] at hxg
state_before: case intro
X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
x : X
hxs : x ∈ s
hxg : ∀ (i : ι), x ∈ g i
⊢ x ∈ ⋃ i, interior (f i)
state_after: case intro.intro
X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
x : X
hxs : x ∈ s
hxg : ∀ (i : ι), x ∈ g i
i : ι
hi : x ∈ f i
⊢ x ∈ ⋃ i, interior (f i)
tactic: rcases mem_iUnion.1 (hU hxs) with ⟨i, hi⟩
state_before: case intro.intro
X : Type u_1
α : Type u_2
ι : Sort u_3
inst✝² : TopologicalSpace X
inst✝¹ : BaireSpace X
inst✝ : Countable ι
s : Set X
hs : IsGδ s
hd : Dense s
f : ι → Set X
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ i, f i
g : ι → Set X := fun i => (frontier (f i))ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ i, g i)
x : X
hxs : x ∈ s
hxg : ∀ (i : ι), x ∈ g i
i : ι
hi : x ∈ f i
⊢ x ∈ ⋃ i, interior (f i)
state_after: no goals
tactic: exact mem_iUnion.2 ⟨i, self_diff_frontier (f i) ▸ ⟨hi, hxg _⟩⟩