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.