Require Export Completeness.

Lemma completion_exists: forall (X:Type) (d:X->X->R) (d_metric:metric d),
exists Y:Type, exists i:X->Y, exists d':Y->Y->R,
exists d'_metric:metric d',
injective i /\ dense (Im Full_set i) (X:=MetricTopology d' d'_metric) /\
(forall x1 x2:X, d' (i x1) (i x2) = d x1 x2) /\
complete d' d'_metric.