Proof using.
intros. unfold handleRequestVoteReply, advanceCurrentTerm in *.
repeat break_match; subst; simpl in *; do_bool; intuition.
Qed.

Theorem handleTimeout_log_term_type :
forall h st out st' ps,
handleTimeout h st = (out, st', ps) ->
(log st' = log st /\ currentTerm st' = currentTerm st /\ type st' = type st) \/
currentTerm st' = S (currentTerm st).