Proof using.
intros. unfold doLeader in *.
repeat break_match; find_inversion; auto.
Qed.

(* Specifications: *)
Lemma update_elections_data_client_request_leaderLogs :
forall h st client id c,
leaderLogs (update_elections_data_client_request h st client id c) =
leaderLogs (fst st).
Lemma handleAppendEntriesReply_currentTerm :
forall h st h' t es r st' ms,
handleAppendEntriesReply h st h' t es r = (st', ms) ->
currentTerm st <= currentTerm st'.
Lemma doLeader_log :
forall st h os st' ms,
doLeader st h = (os, st', ms) ->
log st' = log st.
Lemma handleAppendEntries_stateMachine:
forall h st (d : raft_data)
(m : msg) (t : term) (n : name) (pli : logIndex)
(plt : term) (es : list entry) (ci : logIndex),
handleAppendEntries h st t n pli plt es ci = (d, m) ->
stateMachine d = stateMachine st.
Lemma handleRequestVote_no_append_entries :
forall st h h' t lli llt st' m,
handleRequestVote h st t h' lli llt = (st', m) ->
~ is_append_entries m.