Theorem: IsClosed.exists_infDist_eq_dist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
hne : s.Nonempty
x : α
⊢ ∃ y ∈ s, infDist x s = dist x y
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
⊢ ∃ y ∈ s, infDist x s = dist x y
tactic: rcases hne with ⟨z, hz⟩
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
⊢ ∃ y ∈ s, infDist x s = dist x y
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
⊢ ∃ y ∈ s, infDist x (s ∩ closedBall x (dist z x)) = dist x y
tactic: rw [← infDist_inter_closedBall_of_mem hz]
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
⊢ ∃ y ∈ s, infDist x (s ∩ closedBall x (dist z x)) = dist x y
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
⊢ ∃ y ∈ s, infDist x t = dist x y
tactic: set t := s ∩ closedBall x (dist z x)
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
⊢ ∃ y ∈ s, infDist x t = dist x y
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
htc : IsCompact t
⊢ ∃ y ∈ s, infDist x t = dist x y
tactic: have htc : IsCompact t := (isCompact_closedBall x (dist z x)).inter_left h
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
htc : IsCompact t
⊢ ∃ y ∈ s, infDist x t = dist x y
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
htc : IsCompact t
htne : t.Nonempty
⊢ ∃ y ∈ s, infDist x t = dist x y
tactic: have htne : t.Nonempty := ⟨z, hz, mem_closedBall.2 le_rfl⟩
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
htc : IsCompact t
htne : t.Nonempty
⊢ ∃ y ∈ s, infDist x t = dist x y
state_after: case intro.intro.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y✝ : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
htc : IsCompact t
htne : t.Nonempty
y : α
hyd : infDist x t = dist x y
hys : y ∈ s
⊢ ∃ y ∈ s, infDist x t = dist x y
tactic: obtain ⟨y, ⟨hys, -⟩, hyd⟩ : ∃ y ∈ t, infDist x t = dist x y := htc.exists_infDist_eq_dist htne x
state_before: case intro.intro.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
s t✝ u : Set α
x✝ y✝ : α
Φ : α → β
inst✝ : ProperSpace α
h : IsClosed s
x z : α
hz : z ∈ s
t : Set α := s ∩ closedBall x (dist z x)
htc : IsCompact t
htne : t.Nonempty
y : α
hyd : infDist x t = dist x y
hys : y ∈ s
⊢ ∃ y ∈ s, infDist x t = dist x y
state_after: no goals
tactic: exact ⟨y, hys, hyd⟩