Theorem: AntilipschitzWith.properSpace
File: Mathlib/Topology/MetricSpace/Antilipschitz.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K f
f_cont : Continuous f
hf : Function.Surjective f
⊢ ProperSpace β
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
⊢ IsCompact (closedBall x₀ r)
tactic: refine ⟨fun x₀ r => ?_⟩
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
⊢ IsCompact (closedBall x₀ r)
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
⊢ IsCompact (closedBall x₀ r)
tactic: let K := f ⁻¹' closedBall x₀ r
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
⊢ IsCompact (closedBall x₀ r)
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
⊢ IsCompact (closedBall x₀ r)
tactic: have A : IsClosed K := isClosed_ball.preimage f_cont
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
⊢ IsCompact (closedBall x₀ r)
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
B : IsBounded K
⊢ IsCompact (closedBall x₀ r)
tactic: have B : IsBounded K := hK.isBounded_preimage isBounded_closedBall
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
B : IsBounded K
⊢ IsCompact (closedBall x₀ r)
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
B : IsBounded K
this : IsCompact K
⊢ IsCompact (closedBall x₀ r)
tactic: have : IsCompact K := isCompact_iff_isClosed_bounded.2 ⟨A, B⟩
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
B : IsBounded K
this : IsCompact K
⊢ IsCompact (closedBall x₀ r)
state_after: case h.e'_3
α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
B : IsBounded K
this : IsCompact K
⊢ closedBall x₀ r = f '' K
tactic: convert this.image f_cont
state_before: case h.e'_3
α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁴ : PseudoMetricSpace α✝
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
K✝¹ : ℝ≥0
f✝ : α✝ → β
α : Type u_4
inst✝¹ : MetricSpace α
K✝ : ℝ≥0
f : α → β
inst✝ : ProperSpace α
hK : AntilipschitzWith K✝ f
f_cont : Continuous f
hf : Function.Surjective f
x₀ : β
r : ℝ
K : Set α := f ⁻¹' closedBall x₀ r
A : IsClosed K
B : IsBounded K
this : IsCompact K
⊢ closedBall x₀ r = f '' K
state_after: no goals
tactic: exact (hf.image_preimage _).symm