Proof using.
destruct net. unfold mgv_deghost, mgv_reghost. simpl in *. f_equal.
rewrite map_map. map_id.
Qed.

(* Specifications: *)
Theorem mgv_ghost_simulation_2 :
forall net net' failed failed' out gnet,
@step_failure _ _ failure_params (failed, net) (failed', net') out ->
mgv_deghost gnet = net ->
exists gnet',
step_failure (failed, gnet) (failed', gnet') out /\
mgv_deghost gnet' = net'.