Proof using.
intros.
invcs H.
invcs H2.
- monad_unfold.
unfold NetHandler in *.
break_match_hyp.
+ unfold occurred in *.
find_apply_lem_hyp ClientNetHandler_lbcases; intuition; congruence.
+ unfold occurred in *.
find_apply_lem_hyp ServerNetHandler_lbcases; intuition;
break_exists; intuition; congruence.
- monad_unfold.
find_apply_lem_hyp InputHandler_lbcases.
intuition; try congruence.
break_exists. intuition; try congruence.
fold LockServ_MultiParams in *. (* typeclass stuff *)
repeat find_rewrite.
simpl. left. unfold occurred in *.
congruence.
- unfold occurred in *. congruence.
Qed.

(* Specifications: *)
Lemma InputHandler_Client_Unlock :
forall c sigma,
exists sigma' os ms,
InputHandler (Client c) Unlock sigma = (InputUnlock c, os, sigma', ms).