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

tactic: let g i := frontier (f i)ᶜ
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
⊢ Dense (⋃ (i : ι), interior (f i))

tactic: have hgo : ∀ i, IsOpen (g i) := fun i => isClosed_frontier.isOpen_compl
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
⊢ Dense (⋃ (i : ι), interior (f i))

tactic: have hgd : Dense (⋂ i, g i) := by
  refine' dense_iInter_of_open hgo fun i x => _
  rw [closure_compl, interior_frontier (hc _)]
  exact id
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
⊢ Dense (⋃ (i : ι), interior (f i))

tactic: refine' (hd.inter_of_Gδ hs (isGδ_iInter_of_open fun i => (hgo i)) hgd).mono _
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ (i : ι), g i)
⊢ Dense (⋃ (i : ι), interior (f i))

tactic: rintro x ⟨hxs, hxg⟩
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ (i : ι), g i)
⊢ (s ∩ ⋂ (i : ι), g i) ⊆ ⋃ (i : ι), interior (f i)

tactic: rw [mem_iInter] at hxg
state_before: case intro
α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ (i : ι), g i)
x : α
hxs : x ∈ s
hxg : x ∈ ⋂ (i : ι), g i
⊢ x ∈ ⋃ (i : ι), interior (f i)

tactic: rcases mem_iUnion.1 (hU hxs) with ⟨i, hi⟩
state_before: case intro
α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ (i : ι), g i)
x : α
hxs : x ∈ s
hxg : ∀ (i : ι), x ∈ g i
⊢ x ∈ ⋃ (i : ι), interior (f i)

tactic: exact mem_iUnion.2 ⟨i, self_diff_frontier (f i) ▸ ⟨hi, hxg _⟩⟩
state_before: case intro.intro
α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
hgd : Dense (⋂ (i : ι), g i)
x : α
hxs : x ∈ s
hxg : ∀ (i : ι), x ∈ g i
i : ι
hi : x ∈ f i
⊢ x ∈ ⋃ (i : ι), interior (f i)

tactic: refine' dense_iInter_of_open hgo fun i x => _
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
⊢ Dense (⋂ (i : ι), g i)

tactic: rw [closure_compl, interior_frontier (hc _)]
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
i : ι
x : α
⊢ x ∈ closure (g i)

tactic: exact id
state_before: α : Type u_2
β : Type ?u.24679
γ : Type ?u.24682
ι : Type u_1
inst✝² : TopologicalSpace α
inst✝¹ : BaireSpace α
inst✝ : Encodable ι
s : Set α
hs : IsGδ s
hd : Dense s
f : ι → Set α
hc : ∀ (i : ι), IsClosed (f i)
hU : s ⊆ ⋃ (i : ι), f i
g : ι → Set α := fun i => frontier (f i)ᶜ
hgo : ∀ (i : ι), IsOpen (g i)
i : ι
x : α
⊢ x ∈ ∅ᶜ