Proof using name_map_bijective.
move => m.
elim => //=.
case => n m' /= l IH n' H_in H_in'.
case: H_in' => H_in'.
inversion H_in'.
left.
by rewrite tot_map_name_inverse_inv.
right.
apply: IH => //.
move => nm H_inn.
apply: H_in.
by right.
Qed.

(* Specifications: *)
Lemma adjacent_in_in_msg :
forall (m : @msg base_fst multi_fst) ns n h,
adjacent_to h (tot_map_name_inv n) ->
In (tot_map_name_inv n) ns ->
In (tot_map_name_inv n, m) (map2snd m (filter_rel adjacent_to_dec h ns)).