Proof using rvrtsi.
red. unfold requestVoteReply_moreUpToDate. intros. simpl in *.
subst. repeat find_higher_order_rewrite.
destruct_update; simpl in *; eauto.
- find_eapply_lem_hyp update_elections_data_timeout_votesWithLog_votesReceived; eauto.
intuition; try congruence.
repeat find_rewrite. simpl in *. intuition. subst.
exists (log d). intuition. auto using moreUpToDate_refl.
- find_copy_eapply_lem_hyp update_elections_data_timeout_votesWithLog_votesReceived; eauto.
intuition; try congruence.
repeat find_rewrite. simpl in *.
find_eapply_lem_hyp requestVoteReply_term_sanity_invariant; eauto;
unfold raft_data in *; simpl in *;
unfold raft_data in *; simpl in *; try omega; [idtac].
find_apply_hyp_hyp. intuition.
exfalso.
do_in_map.
remember (pDst p) as h. subst p. simpl in *.
unfold handleTimeout, tryToBecomeLeader in *.
repeat break_match; find_inversion; simpl in *; intuition.
- find_apply_hyp_hyp.
intuition.
+ eapply_prop_hyp pBody pBody; eauto.
break_exists_exists; intuition; eauto using update_elections_data_timeout_votesWithLog_old.
+ exfalso.
do_in_map. remember (pSrc p).
subst p. simpl in *.
unfold handleTimeout, tryToBecomeLeader in *.
repeat break_match; find_inversion; simpl in *; intuition;
do_in_map; subst; simpl in *; congruence.
- find_apply_hyp_hyp.
intuition.
+ eapply_prop_hyp pBody pBody; eauto.
+ exfalso.
do_in_map. remember (pSrc p).
subst p. simpl in *.
unfold handleTimeout, tryToBecomeLeader in *.
repeat break_match; find_inversion; simpl in *; intuition;
do_in_map; subst; simpl in *; congruence.
Qed.

(* Specifications: *)
Lemma requestVoteReply_moreUpToDate_client_request :
refined_raft_net_invariant_client_request requestVoteReply_moreUpToDate.