Proof using.
handler_unfold.
intros.
repeat break_match; repeat tuple_inversion;
subst; simpl in *; subst; simpl in *.
- left. eexists. intuition.
- left. eexists. intuition.
- left. eexists. intuition.
- auto.
- auto.
Qed.

(* Specifications: *)
Lemma locks_correct_update_false :
forall sigma st' x,
locks_correct sigma ->
held st' = false ->
locks_correct (update name_eq_dec sigma (Client x) st').
Lemma locks_correct_update_false :
forall sigma st' x,
locks_correct sigma ->
held st' = false ->
locks_correct (update name_eq_dec sigma (Client x) st').
Lemma ClientNetHandler_lbcases :
forall c m st l out st' ms,
ClientNetHandler c m st = (l, out, st', ms) ->
ms = [] /\
((st' = st /\ out = [] /\ l = Nop) \/
(m = Locked /\ out = [Locked] /\ held st' = true /\ l = MsgLocked c)).