Proof using rlmli rmri.
red.
split; red; intros; simpl in *; intuition;
unfold ghost_log_entries_match in *; break_and.
- repeat find_higher_order_rewrite; destruct_update; simpl in *; eauto.
+ find_apply_hyp_hyp. intuition.
* erewrite handleAppendEntriesReply_log; eauto.
* packet_simpl. apply entries_match_refl.
+ find_apply_hyp_hyp. intuition.
* eauto.
* packet_simpl.
erewrite handleAppendEntriesReply_log with (st'0 := d) by eauto.
eapply lifted_entries_match_invariant; eauto.
- find_apply_hyp_hyp.
find_apply_hyp_hyp.
intuition.
+ eauto.
+ subst. simpl in *.
do_in_map. subst. simpl in *.
unfold add_ghost_msg in *. do_in_map. subst. simpl in *.
erewrite handleAppendEntriesReply_same_log by eauto.
eauto.
+ subst. simpl in *.
do_in_map. subst. simpl in *.
unfold add_ghost_msg in *. do_in_map. subst. simpl in *.
erewrite handleAppendEntriesReply_same_log by eauto.
eauto.
+ subst. simpl in *.
repeat do_in_map. subst. simpl in *.
unfold add_ghost_msg in *. repeat do_in_map. subst. simpl in *.
auto.
Qed.

Lemma ghost_log_entries_match_request_vote :
msg_refined_raft_net_invariant_request_vote' ghost_log_entries_match.