Theorem: GromovHausdorff.ghDist_le_nonemptyCompacts_dist
File: Mathlib/Topology/MetricSpace/GromovHausdorff.lean

tactic: have ha : Isometry ((↑) : p → X) := isometry_subtype_coe
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q
state_after: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q

tactic: have hb : Isometry ((↑) : q → X) := isometry_subtype_coe
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q
state_after: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q

tactic: have A : dist p q = hausdorffDist (p : Set X) q := rfl
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q
state_after: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q

tactic: have I : ↑p = range ((↑) : p → X) := Subtype.range_coe_subtype.symm
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q
state_after: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
I : ↑p = range Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q

tactic: have J : ↑q = range ((↑) : q → X) := Subtype.range_coe_subtype.symm
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
I : ↑p = range Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q
state_after: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
I : ↑p = range Subtype.val
J : ↑q = range Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q

tactic: rw [A, I, J]
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
I : ↑p = range Subtype.val
J : ↑q = range Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ dist p q
state_after: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
I : ↑p = range Subtype.val
J : ↑q = range Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ hausdorffDist (range Subtype.val) (range Subtype.val)

tactic: exact ghDist_le_hausdorffDist ha hb
state_before: X : Type u
inst✝ : MetricSpace X
p q : NonemptyCompacts X
ha : Isometry Subtype.val
hb : Isometry Subtype.val
A : dist p q = hausdorffDist ↑p ↑q
I : ↑p = range Subtype.val
J : ↑q = range Subtype.val
⊢ dist p.toGHSpace q.toGHSpace ≤ hausdorffDist (range Subtype.val) (range Subtype.val)
state_after: no goals