Theorem: EMetric.hausdorffEdist_triangle
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [hausdorffEdist_def]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ hausdorffEdist s u ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ (⨆ x ∈ s, infEdist x u) ⊔ ⨆ y ∈ u, infEdist y s ≤ hausdorffEdist s t + hausdorffEdist t u

tactic: simp only [sup_le_iff, iSup_le_iff]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ (⨆ x ∈ s, infEdist x u) ⊔ ⨆ y ∈ u, infEdist y s ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ (∀ i ∈ s, infEdist i u ≤ hausdorffEdist s t + hausdorffEdist t u) ∧
    ∀ i ∈ u, infEdist i s ≤ hausdorffEdist s t + hausdorffEdist t u

tactic: constructor
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ (∀ i ∈ s, infEdist i u ≤ hausdorffEdist s t + hausdorffEdist t u) ∧
    ∀ i ∈ u, infEdist i s ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: case left
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ i ∈ s, infEdist i u ≤ hausdorffEdist s t + hausdorffEdist t u

case right
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ i ∈ u, infEdist i s ≤ hausdorffEdist s t + hausdorffEdist t u

tactic: show ∀ x ∈ s, infEdist x u ≤ hausdorffEdist s t + hausdorffEdist t u
state_before: case left
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ i ∈ s, infEdist i u ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: case left
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ x ∈ s, infEdist x u ≤ hausdorffEdist s t + hausdorffEdist t u

tactic: exact fun x xs =>
  calc
    infEdist x u ≤ infEdist x t + hausdorffEdist t u :=
      infEdist_le_infEdist_add_hausdorffEdist
    _ ≤ hausdorffEdist s t + hausdorffEdist t u :=
      add_le_add_right (infEdist_le_hausdorffEdist_of_mem xs) _
state_before: case left
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ x ∈ s, infEdist x u ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: no goals

tactic: show ∀ x ∈ u, infEdist x s ≤ hausdorffEdist s t + hausdorffEdist t u
state_before: case right
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ i ∈ u, infEdist i s ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: case right
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ x ∈ u, infEdist x s ≤ hausdorffEdist s t + hausdorffEdist t u

tactic: exact fun x xu =>
  calc
    infEdist x s ≤ infEdist x t + hausdorffEdist t s :=
      infEdist_le_infEdist_add_hausdorffEdist
    _ ≤ hausdorffEdist u t + hausdorffEdist t s :=
      add_le_add_right (infEdist_le_hausdorffEdist_of_mem xu) _
    _ = hausdorffEdist s t + hausdorffEdist t u := by simp [hausdorffEdist_comm, add_comm]
state_before: case right
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ ∀ x ∈ u, infEdist x s ≤ hausdorffEdist s t + hausdorffEdist t u
state_after: no goals

tactic: simp [hausdorffEdist_comm, add_comm]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
x : α
xu : x ∈ u
⊢ hausdorffEdist u t + hausdorffEdist t s = hausdorffEdist s t + hausdorffEdist t u
state_after: no goals