Proof using.
intros. unfold update_elections_data_appendEntries.
repeat break_match; auto.
Qed.

Lemma votes_update_elections_data_timeout_votedFor :
forall h st out st' ps t' h',
handleTimeout h (snd st) = (out, st', ps) ->
In (t', h') (votes (update_elections_data_timeout h st)) ->
In (t', h') (votes (fst st)) \/
t' = currentTerm st' /\
t' = S (currentTerm (snd st)) /\
votedFor st' = Some h'.