Proof using.
intros.
induction l; simpl in *; constructor; auto.
Qed.

(* Specifications: *)
Lemma MsgLock_in_queue_or_Locked :
forall c s,
lb_step_execution lb_step_async s ->
weak_fairness lb_step_async label_silent s ->
now (occurred (MsgLock c)) s ->
next (fun s =>
In (mkPacket Server (Client c) Locked)
(nwPackets (evt_a (hd s)))) s \/
exists n,
next (fun s =>
Nth (queue (nwState (evt_a (hd s)) Server)) (S n) c) s.