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

tactic: let _ := sInf T
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
⊢ RegularSpace X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
⊢ 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 := fun a ↦ by
  rw [nhds_sInf, ← iInf_subtype'']
  exact hasBasis_iInf fun t : T => @closed_nhds_basis X t (h t t.2) a
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
⊢ RegularSpace X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
⊢ RegularSpace X

tactic: refine .of_hasBasis this fun a If hIf => isClosed_iInter fun i => ?_
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
⊢ RegularSpace X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
this :
  ∀ (a : X),
    (𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
      ⋂ i, If.snd i
a : X
If : (I : Set ↑T) × (↑I → Set X)
hIf : If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)
i : ↑If.fst
⊢ IsClosed (If.snd i)

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

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

tactic: exact hasBasis_iInf fun t : T => @closed_nhds_basis X t (h t t.2) a
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
inst✝ : RegularSpace X✝
x : X✝
s : Set X✝
X : Type u_3
T : Set (TopologicalSpace X)
h : ∀ t ∈ T, RegularSpace X
x✝ : TopologicalSpace X := sInf T
a : X
⊢ (⨅ i, 𝓝 a).HasBasis (fun If => If.fst.Finite ∧ ∀ (i : ↑If.fst), If.snd i ∈ 𝓝 a ∧ IsClosed (If.snd i)) fun If =>
    ⋂ i, If.snd i
state_after: no goals