Definition orig_packet := @packet _ orig_multi_params.Definition orig_network := @network _ orig_multi_params.Definition log_packet := @do_packet _ log_multi_params.Definition log_network := @do_network _ log_multi_params.Definition revertPacket (p : log_packet) : orig_packet :=
    @mkPacket _ orig_multi_params (do_pSrc p) (do_pDst p) (do_pBody p).Definition revertLogNetwork (net: log_network) : orig_network :=
    mkNetwork (map revertPacket (nwdoPackets net)) (fun h => (log_data (nwdoState net h))).

(* Specifications: *)
Theorem log_step_failure_step : forall net net' failed failed' tr tr', @step_failure_disk_ops_star _ _ log_failure_params step_failure_disk_ops_init (failed, net) tr -> @step_failure_disk_ops _ _ log_failure_params (failed, net) (failed', net') tr' -> step_failure (failed, revertLogNetwork net) (failed', revertLogNetwork net') tr'.
Lemma log_step_failure_star_simulation : forall net failed tr, step_failure_disk_ops_star step_failure_disk_ops_init (failed, net) tr -> step_failure_star step_failure_init (failed, revertLogNetwork net) tr.