Corollary tot_map_update_packet_eq :
forall f p d,
  (fun n : name => tot_map_data (update name_eq_dec f (pDst p) d (tot_map_name_inv n))) =
  (update name_eq_dec (fun n : name => tot_map_data (f (tot_map_name_inv n))) (pDst (tot_map_packet p)) (tot_map_data d)).

(* Specifications: *)
Lemma tot_map_packet_map_eq : forall l h, map tot_map_packet (map (fun m : name * msg => {| pSrc := h; pDst := fst m; pBody := snd m |}) l) = map (fun m : name * msg => {| pSrc := tot_map_name h; pDst := fst m; pBody := snd m |}) (tot_map_name_msgs l).
Lemma tot_init_handlers_fun_eq : init_handlers = fun n : name => tot_map_data (init_handlers (tot_map_name_inv n)).
Theorem step_async_tot_mapped_simulation_1 : forall net net' tr, @step_async _ multi_fst net net' tr -> @step_async _ multi_snd (tot_map_net net) (tot_map_net net') (map tot_map_trace_occ tr).