Proof using.
unfold locks_correct_unlock.
intros.
find_apply_hyp_hyp. clear H1.
break_exists.
unfold valid_unlock in *. intuition.
break_exists.
repeat find_rewrite. repeat find_inversion.
eauto using at_head_of_queue_intro.
Qed.

(* Specifications: *)
Lemma locks_correct_unlock_at_head_preserved :
forall sigma st' p,
locks_correct_unlock sigma p ->
(forall c, at_head_of_queue sigma c -> at_head_of_queue (update name_eq_dec sigma Server st') c) ->
locks_correct_unlock (update name_eq_dec sigma Server st') p.
Lemma locks_correct_unlock_at_head_preserved :
forall sigma st' p,
locks_correct_unlock sigma p ->
(forall c, at_head_of_queue sigma c -> at_head_of_queue (update name_eq_dec sigma Server st') c) ->
locks_correct_unlock (update name_eq_dec sigma Server st') p.