Theorem: Metric.hausdorffEdist_ne_top_of_nonempty_of_bounded
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rcases hs with ⟨cs, hcs⟩
state_before: ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hs : Set.Nonempty s
ht : Set.Nonempty t
bs : Bounded s
bt : Bounded t
⊢ hausdorffEdist s t ≠ ⊤

tactic: rcases ht with ⟨ct, hct⟩
state_before: case intro
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
ht : Set.Nonempty t
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
⊢ hausdorffEdist s t ≠ ⊤

tactic: rcases(bounded_iff_subset_ball ct).1 bs with ⟨rs, hrs⟩
state_before: case intro.intro
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
⊢ hausdorffEdist s t ≠ ⊤

tactic: rcases(bounded_iff_subset_ball cs).1 bt with ⟨rt, hrt⟩
state_before: case intro.intro.intro
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
⊢ hausdorffEdist s t ≠ ⊤

tactic: exact ne_top_of_le_ne_top ENNReal.ofReal_ne_top this
state_before: case intro.intro.intro.intro
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
this : hausdorffEdist s t ≤ ENNReal.ofReal (max rs rt)
⊢ hausdorffEdist s t ≠ ⊤

tactic: apply hausdorffEdist_le_of_mem_edist
state_before: ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
⊢ hausdorffEdist s t ≤ ENNReal.ofReal (max rs rt)

tactic: intro x xs
state_before: case H1
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
⊢ ∀ (x : α), x ∈ s → ∃ y, y ∈ t ∧ edist x y ≤ ENNReal.ofReal (max rs rt)

tactic: exists ct, hct
state_before: case H1
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xs : x ∈ s
⊢ ∃ y, y ∈ t ∧ edist x y ≤ ENNReal.ofReal (max rs rt)

tactic: have : dist x ct ≤ max rs rt := le_trans (hrs xs) (le_max_left _ _)
state_before: case H1
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xs : x ∈ s
⊢ edist x ct ≤ ENNReal.ofReal (max rs rt)

tactic: rwa [edist_dist, ENNReal.ofReal_le_ofReal_iff]
state_before: case H1
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xs : x ∈ s
this : dist x ct ≤ max rs rt
⊢ edist x ct ≤ ENNReal.ofReal (max rs rt)

tactic: exact le_trans dist_nonneg this
state_before: case H1
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xs : x ∈ s
this : dist x ct ≤ max rs rt
⊢ 0 ≤ max rs rt

tactic: intro x xt
state_before: case H2
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
⊢ ∀ (x : α), x ∈ t → ∃ y, y ∈ s ∧ edist x y ≤ ENNReal.ofReal (max rs rt)

tactic: exists cs, hcs
state_before: case H2
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xt : x ∈ t
⊢ ∃ y, y ∈ s ∧ edist x y ≤ ENNReal.ofReal (max rs rt)

tactic: have : dist x cs ≤ max rs rt := le_trans (hrt xt) (le_max_right _ _)
state_before: case H2
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xt : x ∈ t
⊢ edist x cs ≤ ENNReal.ofReal (max rs rt)

tactic: rwa [edist_dist, ENNReal.ofReal_le_ofReal_iff]
state_before: case H2
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xt : x ∈ t
this : dist x cs ≤ max rs rt
⊢ edist x cs ≤ ENNReal.ofReal (max rs rt)

tactic: exact le_trans dist_nonneg this
state_before: case H2
ι : Sort ?u.72861
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x✝ y : α
Φ : α → β
bs : Bounded s
bt : Bounded t
cs : α
hcs : cs ∈ s
ct : α
hct : ct ∈ t
rs : ℝ
hrs : s ⊆ closedBall ct rs
rt : ℝ
hrt : t ⊆ closedBall cs rt
x : α
xt : x ∈ t
this : dist x cs ≤ max rs rt
⊢ 0 ≤ max rs rt