Proof using name_map_bijective.
elim.
case => //=.
move => n l IH.
case => //=.
move => n' l' H_eq.
inversion H_eq.
find_apply_lem_hyp tot_map_name_injective.
find_eapply_lem_hyp IH.
by repeat find_rewrite.
Qed.

(* Specifications: *)
Theorem step_failure_tot_mapped_simulation_2 :
forall net net' failed failed' out mnet mfailed mfailed' mout,
@step_failure _ _ fail_snd (failed, net) (failed', net') out ->
tot_map_net mnet = net ->
map tot_map_name mfailed = failed ->
map tot_map_name mfailed' = failed' ->
map tot_map_trace_occ mout = out ->
exists mnet', @step_failure _ _ fail_fst (mfailed, mnet) (mfailed', mnet') mout /\
tot_map_net mnet' = net'.