Definition mgv_ghost_packet p :=
  @mkPacket _ mgv_refined_multi_params
            (@pSrc _ multi_params p)
            (pDst p)
            (ghost_msg_default, pBody p).Definition mgv_reghost (net : @network _ multi_params) : @network _ mgv_refined_multi_params.

(* Specifications: *)
Lemma mgv_reghost_deghost_partial_inverses : forall net, mgv_deghost (mgv_reghost net) = net.
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'.
Theorem mgv_ghost_invariant_lift : forall P : _ -> Prop, (forall net net' failed failed' out, @step_failure _ _ failure_params (failed, net) (failed', net') out -> P net -> P net') -> (forall net net' failed failed' out, step_failure (failed, net) (failed', net') out -> P (mgv_deghost net) -> P (mgv_deghost net')).
Theorem mgv_ghost_invariant_lower : forall P : _ -> Prop, (forall net net' failed failed' out, step_failure (failed, net) (failed', net') out -> P (mgv_deghost net) -> P (mgv_deghost net')) -> (forall net net' failed failed' out, @step_failure _ _ failure_params (failed, net) (failed', net') out -> P net -> P net').