Definition ghost_packet p :=
  @mkPacket _ refined_multi_params
            (@pSrc _ multi_params p)
            (pDst p)
            (pBody p).Definition reghost (net : @network _ multi_params) : @network _ refined_multi_params.

(* Specifications: *)
Lemma reghost_deghost_partial_inverses : forall net, deghost (reghost net) = net.
Theorem 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 (deghost net) -> P (deghost net')).
Theorem ghost_invariant_lower : forall P : _ -> Prop, (forall net net' failed failed' out, step_failure (failed, net) (failed', net') out -> P (deghost net) -> P (deghost net')) -> (forall net net' failed failed' out, @step_failure _ _ failure_params (failed, net) (failed', net') out -> P net -> P net').