-- Mathlib/Topology/MetricSpace/Polish.lean
theorem _root_.CompletePseudometrizable.iInf {ι : Type*} [Countable ι]
    {t : ι → TopologicalSpace α} (ht₀ : ∃ t₀, @T2Space α t₀ ∧ ∀ i, t i ≤ t₀)
    (ht : ∀ i, ∃ u : UniformSpace α, CompleteSpace α ∧ 𝓤[u].IsCountablyGenerated ∧
      u.toTopologicalSpace = t i) :
    ∃ u : UniformSpace α, CompleteSpace α ∧
      𝓤[u].IsCountablyGenerated ∧ u.toTopologicalSpace = ⨅ i, t i

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), (fun i => UniformSpace.toTopologicalSpace) i ≤ t₀
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = (fun i => UniformSpace.toTopologicalSpace) i
⊢ (⨅ i, 𝓤 α).IsCountablyGenerated

Tactic:
infer_instance

Result:
no goals

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), t i ≤ t₀
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = t i
⊢ ∃ u, CompleteSpace α ∧ (𝓤 α).IsCountablyGenerated ∧ UniformSpace.toTopologicalSpace = ⨅ i, t i

Tactic:
obtain rfl : t = fun i ↦ (u i).toTopologicalSpace := (funext hut).symm

Result:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), (fun i => UniformSpace.toTopologicalSpace) i ≤ t₀
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = (fun i => UniformSpace.toTopologicalSpace) i
⊢ ∃ u_1,
    CompleteSpace α ∧
      (𝓤 α).IsCountablyGenerated ∧ UniformSpace.toTopologicalSpace = ⨅ i, (fun i => UniformSpace.toTopologicalSpace) i

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), (fun i => UniformSpace.toTopologicalSpace) i ≤ t₀
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = (fun i => UniformSpace.toTopologicalSpace) i
⊢ (𝓤 α).IsCountablyGenerated

Tactic:
rw [iInf_uniformity]

Result:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), (fun i => UniformSpace.toTopologicalSpace) i ≤ t₀
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = (fun i => UniformSpace.toTopologicalSpace) i
⊢ (⨅ i, 𝓤 α).IsCountablyGenerated

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), t i ≤ t₀
ht : ∀ (i : ι), ∃ u, CompleteSpace α ∧ (𝓤 α).IsCountablyGenerated ∧ UniformSpace.toTopologicalSpace = t i
⊢ ∃ u, CompleteSpace α ∧ (𝓤 α).IsCountablyGenerated ∧ UniformSpace.toTopologicalSpace = ⨅ i, t i

Tactic:
choose u hcomp hcount hut using ht

Result:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), t i ≤ t₀
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = t i
⊢ ∃ u, CompleteSpace α ∧ (𝓤 α).IsCountablyGenerated ∧ UniformSpace.toTopologicalSpace = ⨅ i, t i

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), (fun i => UniformSpace.toTopologicalSpace) i ≤ t₀
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = (fun i => UniformSpace.toTopologicalSpace) i
⊢ ∃ u_1,
    CompleteSpace α ∧
      (𝓤 α).IsCountablyGenerated ∧ UniformSpace.toTopologicalSpace = ⨅ i, (fun i => UniformSpace.toTopologicalSpace) i

Tactic:
refine ⟨⨅ i, u i, .iInf hcomp ht₀, ?_, UniformSpace.toTopologicalSpace_iInf⟩

Result:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
u : ι → UniformSpace α
hcomp : ∀ (i : ι), CompleteSpace α
hcount : ∀ (i : ι), (𝓤 α).IsCountablyGenerated
ht₀ : ∃ t₀, T2Space α ∧ ∀ (i : ι), (fun i => UniformSpace.toTopologicalSpace) i ≤ t₀
hut : ∀ (i : ι), UniformSpace.toTopologicalSpace = (fun i => UniformSpace.toTopologicalSpace) i
⊢ (𝓤 α).IsCountablyGenerated