proposition: Lemma edist_fin_open : open [set xy : X * X | edist xy \is a fin_num].
proof: Proof. move=> z /= /edist_finP [] _/posnumP[r] bzr. exists (ball z.1 r%:num, ball z.2 r%:num); first by split; exact: nbhsx_ballx. case=> a b [bza bzb]; apply/edist_finP; exists (r%:num + r%:num + r%:num) => //. exact/(ball_triangle _ bzb)/(ball_triangle _ bzr)/ball_sym. Qed.
imports: HB(structures) mathcomp(all_ssreflect ssralg ssrint ssrnum finmap matrix) mathcomp(rat interval zmodp vector fieldext falgebra) mathcomp(mathcomp_extra boolp classical_sets functions) mathcomp(cardinality set_interval Rstruct) ereal reals signed topology prodnormedzmodule