Proof using.
induction tr; intros; simpl in *; repeat break_match; intuition.
Qed.

(* Specifications: *)
Lemma trace_mutual_exclusion'_extend_input_server :
forall tr h i,
trace_mutual_exclusion' h tr ->
trace_mutual_exclusion' h (tr ++ [(Server, inl i)]).
Lemma last_holder'_input_inv :
forall tr h c i n,
i <> Unlock ->
last_holder' h (tr ++ [(Client c, inl i)]) = Some n ->
last_holder' h tr = Some n.
Lemma trace_mutual_exclusion'_extend_input_server :
forall tr h i,
trace_mutual_exclusion' h tr ->
trace_mutual_exclusion' h (tr ++ [(Server, inl i)]).
Lemma last_holder'_input_inv :
forall tr h c i n,
i <> Unlock ->
last_holder' h (tr ++ [(Client c, inl i)]) = Some n ->
last_holder' h tr = Some n.