Proof using.
intros. unfold handleInput, handleTimeout, handleClientRequest, tryToBecomeLeader in *.
repeat break_match; find_inversion; intuition eauto using in_output_list_empty;
unfold in_output_list in *; break_exists; simpl in *; intuition; congruence.
Qed.

(* Specifications: *)
Lemma deduplicate_log'_app :
forall l l' ks,
exists l'',
deduplicate_log' (l ++ l') ks = deduplicate_log' l ks ++ l''.