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

(* Specifications: *)
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'.
Lemma votesWithLog_update_elections_data_append_entries :
forall h st t n pli plt es ci st' ps t' h' l',
handleAppendEntries h (snd st) t n pli plt es ci = (st', ps) ->
In (t', h', l') (votesWithLog (update_elections_data_appendEntries h st t n pli plt es ci)) ->
In (t', h', l') (votesWithLog (fst st)).