Theorem: EMetricSpace.ext
File: Mathlib/Topology/EMetricSpace/Basic.lean

Proof steps:
state_before: α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
m m' : EMetricSpace α
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ m = m'
state_after: case mk
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
m' : EMetricSpace α
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ mk eq_of_edist_eq_zero✝ = m'
tactic: cases m
state_before: case mk
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
m' : EMetricSpace α
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ mk eq_of_edist_eq_zero✝ = m'
state_after: case mk.mk
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
toPseudoEMetricSpace✝¹ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝¹ : ∀ {x y : α}, edist x y = 0 → x = y
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ mk eq_of_edist_eq_zero✝¹ = mk eq_of_edist_eq_zero✝
tactic: cases m'
state_before: case mk.mk
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
toPseudoEMetricSpace✝¹ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝¹ : ∀ {x y : α}, edist x y = 0 → x = y
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ mk eq_of_edist_eq_zero✝¹ = mk eq_of_edist_eq_zero✝
state_after: case mk.mk.e_toPseudoEMetricSpace
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
toPseudoEMetricSpace✝¹ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝¹ : ∀ {x y : α}, edist x y = 0 → x = y
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ toPseudoEMetricSpace✝¹ = toPseudoEMetricSpace✝
tactic: congr
state_before: case mk.mk.e_toPseudoEMetricSpace
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
toPseudoEMetricSpace✝¹ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝¹ : ∀ {x y : α}, edist x y = 0 → x = y
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ toPseudoEMetricSpace✝¹ = toPseudoEMetricSpace✝
state_after: case mk.mk.e_toPseudoEMetricSpace.h
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
toPseudoEMetricSpace✝¹ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝¹ : ∀ {x y : α}, edist x y = 0 → x = y
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
tactic: ext1
state_before: case mk.mk.e_toPseudoEMetricSpace.h
α✝ : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α✝
α : Type u_2
toPseudoEMetricSpace✝¹ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝¹ : ∀ {x y : α}, edist x y = 0 → x = y
toPseudoEMetricSpace✝ : PseudoEMetricSpace α
eq_of_edist_eq_zero✝ : ∀ {x y : α}, edist x y = 0 → x = y
h : PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
⊢ PseudoEMetricSpace.toEDist = PseudoEMetricSpace.toEDist
state_after: no goals
tactic: assumption