Theorem: ClosedEmbedding.polishSpace
File: Mathlib/Topology/MetricSpace/Polish.lean

tactic: letI := upgradePolishSpace β
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
⊢ PolishSpace α
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this : UpgradedPolishSpace β := upgradePolishSpace β
⊢ PolishSpace α

tactic: letI : MetricSpace α := hf.toEmbedding.comapMetricSpace f
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this : UpgradedPolishSpace β := upgradePolishSpace β
⊢ PolishSpace α
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝ : UpgradedPolishSpace β := upgradePolishSpace β
this : MetricSpace α := Embedding.comapMetricSpace f ⋯
⊢ PolishSpace α

tactic: haveI : SecondCountableTopology α := hf.toEmbedding.secondCountableTopology
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝ : UpgradedPolishSpace β := upgradePolishSpace β
this : MetricSpace α := Embedding.comapMetricSpace f ⋯
⊢ PolishSpace α
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝¹ : UpgradedPolishSpace β := upgradePolishSpace β
this✝ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this : SecondCountableTopology α
⊢ PolishSpace α

tactic: have : CompleteSpace α := by
  rw [completeSpace_iff_isComplete_range hf.toEmbedding.to_isometry.uniformInducing]
  exact hf.isClosed_range.isComplete
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝¹ : UpgradedPolishSpace β := upgradePolishSpace β
this✝ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this : SecondCountableTopology α
⊢ PolishSpace α
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝² : UpgradedPolishSpace β := upgradePolishSpace β
this✝¹ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this✝ : SecondCountableTopology α
this : CompleteSpace α
⊢ PolishSpace α

tactic: infer_instance
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝² : UpgradedPolishSpace β := upgradePolishSpace β
this✝¹ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this✝ : SecondCountableTopology α
this : CompleteSpace α
⊢ PolishSpace α
state_after: no goals

tactic: rw [completeSpace_iff_isComplete_range hf.toEmbedding.to_isometry.uniformInducing]
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝¹ : UpgradedPolishSpace β := upgradePolishSpace β
this✝ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this : SecondCountableTopology α
⊢ CompleteSpace α
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝¹ : UpgradedPolishSpace β := upgradePolishSpace β
this✝ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this : SecondCountableTopology α
⊢ IsComplete (range f)

tactic: exact hf.isClosed_range.isComplete
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PolishSpace β
f : α → β
hf : ClosedEmbedding f
this✝¹ : UpgradedPolishSpace β := upgradePolishSpace β
this✝ : MetricSpace α := Embedding.comapMetricSpace f ⋯
this : SecondCountableTopology α
⊢ IsComplete (range f)
state_after: no goals