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

(* Specifications: *)
Lemma eventually_Unlock :
forall n c s,
event_step_star step_async step_async_init (hd s) ->
lb_step_execution lb_step_async s ->
weak_fairness lb_step_async label_silent s ->
Nth (queue (nwState (evt_a (hd s)) Server)) (S n) c ->
exists c,
eventually (fun s => In (mkPacket c Server Unlock) (nwPackets (evt_a (hd s)))) s.