Proof using.
unfold update_elections_data_requestVoteReply.
intros. repeat break_match; repeat tuple_inversion; intuition.
Qed.

(* Specifications: *)
Lemma votes_same_append_entries :
forall h st t n pli plt es ci,
votes (update_elections_data_appendEntries h st t n pli plt es ci) =
votes (fst st).
Lemma votes_update_elections_data_request_vote_intro :
forall h st t src lli llt st' m h',
handleRequestVote h (snd st) t src lli llt = (st', m) ->
votedFor st' = Some h' ->
currentTerm (snd st) < currentTerm st' \/ votedFor (snd st) = None ->
In (currentTerm st', h')
(votes (update_elections_data_requestVote h src t src lli llt st)).
Lemma update_elections_data_request_vote_reply_votesWithLog :
forall  (h : name)
(st : electionsData *
RaftState.raft_data term name entry logIndex serverType data clientId output)
(src : name) (t : nat) (r : bool),
votesWithLog (update_elections_data_requestVoteReply h src t r st) =
votesWithLog (fst st).