Proof using.
unfold handleInput, handleTimeout, handleInput, tryToBecomeLeader, handleClientRequest.
intuition.
repeat break_match; repeat find_inversion; eauto using in_output_trace_not_nil.
- exfalso. eapply in_output_list_not_leader_singleton; eauto.
- exfalso. eapply in_output_list_not_leader_singleton; eauto.
Qed.

(* Specifications: *)
Lemma in_output_list_cons_or :
forall a b c l,
in_output_list client id out (ClientResponse a b c :: l) ->
(a = client /\ b = id /\ c = out) \/
in_output_list client id out l.