Theorem: CompleteSpace.iInf
File: Mathlib/Topology/UniformSpace/Pi.lean

Proof steps:
state_before: ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
ht : ∃ t, T2Space X ∧ ∀ (i : ι), toTopologicalSpace ≤ t
⊢ CompleteSpace X
state_after: ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
ht : ∃ t, T2Space X ∧ ∀ (i : ι), toTopologicalSpace ≤ t
a✝ : Nontrivial X
⊢ CompleteSpace X
tactic: nontriviality X
state_before: ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
ht : ∃ t, T2Space X ∧ ∀ (i : ι), toTopologicalSpace ≤ t
a✝ : Nontrivial X
⊢ CompleteSpace X
state_after: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
⊢ CompleteSpace X
tactic: rcases ht with ⟨t, ht, hut⟩
state_before: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this : UniformInducing (const ι)
⊢ CompleteSpace X
state_after: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this : UniformInducing (const ι)
⊢ IsComplete (⋂ i, ⋂ i_1, {x | x i = x i_1})
tactic: simp_rw [@completeSpace_iff_isComplete_range _ _ (_) (_) _ this, range_const_eq_diagonal,
    setOf_forall]
state_before: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this : UniformInducing (const ι)
⊢ IsComplete (⋂ i, ⋂ i_1, {x | x i = x i_1})
state_after: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this✝ : UniformInducing (const ι)
this : Pi.topologicalSpace ≤ Pi.topologicalSpace
⊢ IsComplete (⋂ i, ⋂ i_1, {x | x i = x i_1})
tactic: have : Pi.topologicalSpace (t₂ := fun i ↦ (u i).toTopologicalSpace) ≤
         Pi.topologicalSpace (t₂ := fun _ ↦ t) :=
    iInf_mono fun i ↦ induced_mono <| hut i
state_before: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this✝ : UniformInducing (const ι)
this : Pi.topologicalSpace ≤ Pi.topologicalSpace
⊢ IsComplete (⋂ i, ⋂ i_1, {x | x i = x i_1})
state_after: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this✝ : UniformInducing (const ι)
this : Pi.topologicalSpace ≤ Pi.topologicalSpace
⊢ IsClosed (⋂ i, ⋂ i_1, {x | x i = x i_1})
tactic: refine IsClosed.isComplete <| .mono ?_ this
state_before: case intro.intro
ι✝ : Type u_1
ι' : Type u_2
β : Type u_3
α : ι✝ → Type u
U : (i : ι✝) → UniformSpace (α i)
inst✝ : UniformSpace β
ι : Type u_4
X : Type u_5
u : ι → UniformSpace X
hu : ∀ (i : ι), CompleteSpace X
a✝ : Nontrivial X
t : TopologicalSpace X
ht : T2Space X
hut : ∀ (i : ι), toTopologicalSpace ≤ t
this✝ : UniformInducing (const ι)
this : Pi.topologicalSpace ≤ Pi.topologicalSpace
⊢ IsClosed (⋂ i, ⋂ i_1, {x | x i = x i_1})
state_after: no goals
tactic: exact isClosed_iInter fun i ↦ isClosed_iInter fun j ↦
    isClosed_eq (continuous_apply _) (continuous_apply _)