Proof using.
red. unfold log_properties_hold_on_ghost_logs. intros.
simpl in *.
subst.
find_apply_hyp_hyp; intuition; repeat find_rewrite;
try solve [eapply_prop_hyp msg_log_property msg_log_property; eauto].
do_in_map. subst.
simpl in *.
unfold add_ghost_msg, write_ghost_msg in *.
do_in_map.
subst. simpl in *.
unfold write_ghost_log. simpl in *.
replace d' with (snd (nwState {| nwPackets := ps'; nwState := st' |} h)) by
(simpl; find_higher_order_rewrite; rewrite_update; reflexivity).
eauto.
Qed.

(* Specifications: *)
Lemma log_properties_hold_on_ghost_logs_do_generic_server :
msg_refined_raft_net_invariant_do_generic_server' log_properties_hold_on_ghost_logs.
Lemma log_properties_hold_on_ghost_logs_reboot :
msg_refined_raft_net_invariant_reboot log_properties_hold_on_ghost_logs.