Proof using.
elim => //.
move => m0 l IH.
move => m1 m2 H_eq H_in.
case: H_in => H_in.
rewrite H_in /= H_eq.
by left.
have IH' := IH _ _ H_eq H_in.
rewrite /=.
by break_match; first by right.
Qed.
Hypothesis pt_map_msg_injective :
forall m0 m1 m, pt_map_msg m0 = Some m -> pt_map_msg m1 = Some m -> m0 = m1.

(* Specifications: *)
Lemma in_filterMap_pt_map_msg_in_msg :
forall l m0 m1,
pt_map_msg m0 = Some m1 ->
In m1 (filterMap pt_map_msg l) ->
In m0 l.