Proof using vlcti.
unfold refined_raft_net_invariant_append_entries_reply, votes_correct.
split_votes_correct; start_proof.
- find_copy_apply_lem_hyp votes_le_current_term_invariant; auto.
find_copy_apply_lem_hyp handleAppendEntriesReply_currentTerm.
subst.
do_le_antisym.
erewrite handleAppendEntriesReply_same_term_votedFor_preserved by eauto.
eauto.
- find_copy_eapply_lem_hyp handleAppendEntriesReply_term_votedFor; eauto.
break_and. subst.
eauto using eq_trans.
Qed.

(* Specifications: *)
Lemma votes_correct_request_vote :
refined_raft_net_invariant_request_vote votes_correct.