-- Mathlib/Topology/MetricSpace/Polish.lean
theorem iInf {ι : Type*} [Countable ι] {t : ι → TopologicalSpace α}
    (ht₀ : ∃ i₀, ∀ i, t i ≤ t i₀) (ht : ∀ i, @PolishSpace α (t i)) : @PolishSpace α (⨅ i, t i)

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this : SecondCountableTopology α
⊢ T1Space α

Tactic:
letI := t i₀

Result:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this✝ : SecondCountableTopology α
this : TopologicalSpace α := t i₀
⊢ T1Space α

Proof state:
case intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
⊢ PolishSpace α

Tactic:
rcases CompletePseudometrizable.iInf ⟨t i₀, letI := t i₀; haveI := ht i₀; inferInstance, hi₀⟩
  fun i ↦
    letI := t i; haveI := ht i; letI := upgradePolishSpace α
    ⟨inferInstance, inferInstance, inferInstance, rfl⟩
  with ⟨u, hcomp, hcount, htop⟩

Result:
case intro.intro.intro.intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
⊢ PolishSpace α

Proof state:
case intro.intro.intro.intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
⊢ PolishSpace α

Tactic:
have : @SecondCountableTopology α u.toTopologicalSpace :=
  htop.symm ▸ secondCountableTopology_iInf fun i ↦ letI := t i; (ht i).toSecondCountableTopology

Result:
case intro.intro.intro.intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this : SecondCountableTopology α
⊢ PolishSpace α

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this✝ : SecondCountableTopology α
this : TopologicalSpace α := t i₀
⊢ T1Space α

Tactic:
haveI := ht i₀

Result:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this✝¹ : SecondCountableTopology α
this✝ : TopologicalSpace α := t i₀
this : PolishSpace α
⊢ T1Space α

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht₀ : ∃ i₀, ∀ (i : ι), t i ≤ t i₀
ht : ∀ (i : ι), PolishSpace α
⊢ PolishSpace α

Tactic:
rcases ht₀ with ⟨i₀, hi₀⟩

Result:
case intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
⊢ PolishSpace α

Proof state:
case intro.intro.intro.intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this : SecondCountableTopology α
⊢ PolishSpace α

Tactic:
have : @T1Space α u.toTopologicalSpace :=
  htop.symm ▸ t1Space_antitone (iInf_le _ i₀) (by letI := t i₀; haveI := ht i₀; infer_instance)

Result:
case intro.intro.intro.intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this✝ : SecondCountableTopology α
this : T1Space α
⊢ PolishSpace α

Proof state:
case intro.intro.intro.intro
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this✝ : SecondCountableTopology α
this : T1Space α
⊢ PolishSpace α

Tactic:
infer_instance

Result:
no goals

Proof state:
α : Type u_1
ι : Type u_3
inst✝ : Countable ι
t : ι → TopologicalSpace α
ht : ∀ (i : ι), PolishSpace α
i₀ : ι
hi₀ : ∀ (i : ι), t i ≤ t i₀
u : UniformSpace α
hcomp : CompleteSpace α
hcount : (𝓤 α).IsCountablyGenerated
htop : UniformSpace.toTopologicalSpace = ⨅ i, t i
this✝¹ : SecondCountableTopology α
this✝ : TopologicalSpace α := t i₀
this : PolishSpace α
⊢ T1Space α

Tactic:
infer_instance

Result:
no goals