Proof using.
move => net net' tr H_st.
rewrite -2!pt_map_net_deserialize_net.
have ->: tr = filterMap (@pt_map_trace_occ _ _ _ _ _ orig_multi_params_name_tot_map) tr.
rewrite /pt_map_trace_occ /= /id.
clear.
elim: tr => //=.
case => a; case => b l IH; first by rewrite -IH.
rewrite -IH.
set fm := filterMap _ _.
have H_b: b = fm.
rewrite /fm {fm}.
elim: b => //=.
move => o l' IH'.
by rewrite -IH'.
by rewrite H_b.
apply step_async_pt_mapped_simulation_1 in H_st.
case: H_st => H_st; first by left.
break_and.
by right.
Qed.

(* Specifications: *)
(* due to use of general simulation lemmas, this lemma is not as general as it could be *)
(* if Cheerios-specific assumptions were used *)
Lemma step_async_deserialized_simulation_star :
forall net tr,
@step_async_star _ serialized_multi_params step_async_init net tr ->
exists tr', @step_async_star _ orig_multi_params step_async_init (deserialize_net net) tr' /\
filterMap trace_non_empty_out tr = filterMap trace_non_empty_out tr'.