Proof using vci vvwlci.
unfold currentTerm_votedFor_votesWithLog. intros.
eapply votes_votesWithLog_correspond_invariant; eauto.
break_and.
eapply votes_correct_invariant; eauto.
Qed.

Lemma handleRequestVote_currentTerm_leaderId' :
forall h st t c li lt st' m,
handleRequestVote h st t c li lt = (st', m) ->
votedFor st' <> votedFor st ->
currentTerm st < currentTerm st' \/
leaderId st = None.