Proof using vlcti.
unfold refined_raft_net_invariant_append_entries, votes_correct.
split_votes_correct; start_proof; rewrite @votes_same_append_entries in *.
- eauto.
- find_copy_apply_lem_hyp votes_le_current_term_invariant; auto.
find_copy_apply_lem_hyp handleAppendEntries_currentTerm.
subst.
do_le_antisym.
erewrite handleAppendEntries_same_term_votedFor_preserved by eauto.
eauto.
- find_copy_eapply_lem_hyp handleAppendEntries_term_votedFor; eauto.
break_and.
subst. eauto using eq_trans.
Qed.

Lemma votes_correct_append_entries_reply :
refined_raft_net_invariant_append_entries_reply votes_correct.