Proof using.
move => net net' failed failed' tr H_st.
eapply step_ordered_failure_pt_mapped_simulation_1 in H_st.
case: H_st => H_st.
have H_eq_n: failed = map (@tot_map_name _ _ _ _ multi_params_orig_name_tot_map) failed by rewrite /tot_map_name /= map_id.
rewrite {1}H_eq_n.
have H_eq_n': failed' = map (@tot_map_name _ _ _ _ multi_params_orig_name_tot_map) failed' by rewrite /tot_map_name /= map_id.
rewrite {1}H_eq_n'.
left.
rewrite -2!pt_map_onet_deserialize_onet.
have ->: tr = filterMap (@pt_map_trace_ev _ _ _ _ _ orig_multi_params_name_tot_map) tr.
rewrite /pt_map_trace_ev /= /id.
clear.
elim: tr => //=.
case => a; case => b l IH; first by rewrite -IH.
by rewrite -IH.
exact: H_st.
right.
break_and.
split; first by rewrite -2!pt_map_onet_deserialize_onet.
split => //.
move: H1.
rewrite /pt_map_trace_ev /= /id /=.
set f := fun _ => _.
clear.
elim => //=.
elim: tr => //=.
case => n; case => /= [i|o] l IH.
* by rewrite -IH.
* by rewrite -IH.
Qed.

(* Specifications: *)
Lemma step_ordered_failure_serialized_simulation_star :
forall net failed tr,
@step_ordered_failure_star _ _ serialized_name_overlay_params serialized_fail_msg_params step_ordered_failure_init (failed, net) tr ->
@step_ordered_failure_star _ _ orig_name_overlay_params orig_fail_msg_params step_ordered_failure_init (failed, deserialize_onet net) tr.