Proof using.
red. unfold allEntries_log in *. intros. simpl in *.
repeat find_higher_order_rewrite.
destruct_update; simpl in *;
try find_rewrite_lem update_elections_data_timeout_allEntries;
find_copy_apply_lem_hyp handleTimeout_log_same;
find_apply_lem_hyp handleTimeout_currentTerm_leaderId;
repeat find_rewrite;
find_apply_hyp_hyp; intuition;
right; break_exists_exists; intuition;
repeat find_higher_order_rewrite;
destruct_update; simpl in *; auto;
rewrite update_elections_data_timeout_leaderLogs; auto.
Qed.

(* Specifications: *)
Lemma doLeader_currentTerm_leaderId :
forall st h out st' m,
doLeader st h = (out, st', m) ->
currentTerm st' = currentTerm st /\
leaderId st' = leaderId st.