Proof using.
induction tr; intros; simpl in *; repeat break_match; auto; try congruence; subst; eauto.
Qed.

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