Theorem: regularSpace_sInf
File: Mathlib/Topology/Separation.lean

tactic: let _ := sInf T
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
⊢ RegularSpace X

tactic: have : ∀ a, (𝓝 a).HasBasis
    (fun If : ΣI : Set T, I → Set X =>
      If.1.Finite ∧ ∀ i : If.1, If.2 i ∈ @nhds X i a ∧ @IsClosed X i (If.2 i))
    fun If => ⋂ i : If.1, If.snd i := by
  intro a
  rw [nhds_sInf, ← iInf_subtype'']
  exact hasBasis_iInf fun t : T => @closed_nhds_basis X t (h t t.2) a
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
x✝ : TopologicalSpace X := sInf T
⊢ RegularSpace X

tactic: refine' RegularSpace.ofBasis this fun a If hIf => isClosed_iInter fun i => _
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    HasBasis (𝓝 a) (fun If => Set.Finite If.fst ∧ ∀ (i : ↑If.fst), Sigma.snd If i ∈ 𝓝 a ∧ IsClosed (Sigma.snd If i))
      fun If => ⋂ (i : ↑If.fst), Sigma.snd If i
⊢ RegularSpace X

tactic: exact (hIf.2 i).2.mono (sInf_le (i : T).2)
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a✝ : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    HasBasis (𝓝 a) (fun If => Set.Finite If.fst ∧ ∀ (i : ↑If.fst), Sigma.snd If i ∈ 𝓝 a ∧ IsClosed (Sigma.snd If i))
      fun If => ⋂ (i : ↑If.fst), Sigma.snd If i
a : X
If : (I : Set ↑T) × (↑I → Set X)
hIf : Set.Finite If.fst ∧ ∀ (i : ↑If.fst), Sigma.snd If i ∈ 𝓝 a ∧ IsClosed (Sigma.snd If i)
i : ↑If.fst
⊢ IsClosed (Sigma.snd If i)

tactic: intro a
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
x✝ : TopologicalSpace X := sInf T
⊢ ∀ (a : X),
    HasBasis (𝓝 a) (fun If => Set.Finite If.fst ∧ ∀ (i : ↑If.fst), Sigma.snd If i ∈ 𝓝 a ∧ IsClosed (Sigma.snd If i))
      fun If => ⋂ (i : ↑If.fst), Sigma.snd If i

tactic: rw [nhds_sInf, ← iInf_subtype'']
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a✝ : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
x✝ : TopologicalSpace X := sInf T
a : X
⊢ HasBasis (𝓝 a) (fun If => Set.Finite If.fst ∧ ∀ (i : ↑If.fst), Sigma.snd If i ∈ 𝓝 a ∧ IsClosed (Sigma.snd If i))
    fun If => ⋂ (i : ↑If.fst), Sigma.snd If i

tactic: exact hasBasis_iInf fun t : T => @closed_nhds_basis X t (h t t.2) a
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : RegularSpace α
a✝ : α
s : Set α
X : Type u_1
T : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ T → RegularSpace X
x✝ : TopologicalSpace X := sInf T
a : X
⊢ HasBasis (⨅ (i : ↑T), 𝓝 a)
    (fun If => Set.Finite If.fst ∧ ∀ (i : ↑If.fst), Sigma.snd If i ∈ 𝓝 a ∧ IsClosed (Sigma.snd If i)) fun If =>
    ⋂ (i : ↑If.fst), Sigma.snd If i