Proof using.
move => net tr H_step.
apply step_async_tot_mapped_simulation_star_1 in H_step.
rewrite /tot_map_name /tot_map_net /= /id /= in H_step.
rewrite /tot_map_trace_occ /= /id /= in H_step.
rewrite /tot_map_packet /= /id /= in H_step.
rewrite /serialize_net.
move: H_step.
set fp := fun p : packet => _.
have H_eq: fp = serialize_packet by rewrite /fp ; apply functional_extensionality; case => /= src dst m.
rewrite H_eq {H_eq fp}.
set mp := fun e : name * _ => _.
suff H_eq': map mp tr = tr by rewrite H_eq'.
elim: tr => //=.
case => a.
case => /= [i|o] l IH; rewrite IH //.
by rewrite map_id.
Qed.

Lemma step_failure_serialize_simulation :
forall net net' failed failed' tr,
@step_failure _ _ orig_failure_params (failed, net) (failed', net') tr ->
@step_failure _ _ serialized_failure_params (failed, serialize_net net) (failed', serialize_net net') tr.