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

(* Specifications: *)
Lemma votesWithLog_update_elections_data_timeout :
forall h st out st' ps t' h' l',
handleTimeout h (snd st) = (out, st', ps) ->
In (t', h', l') (votesWithLog (update_elections_data_timeout h st)) ->
In (t', h', l') (votesWithLog (fst st)) \/
(t' = currentTerm st' /\ l' = log st').