Proof using.
intros. unfold has_key, key_of in *.
break_match. subst. simpl in *. repeat (do_bool; intuition).
match goal with
| _ : (?x, ?y) = (?x', ?y') -> False |- _ =>
destruct (clientId_eq_dec x x'); destruct (eq_nat_dec y y')
end; subst; intuition.
- right. do_bool. congruence.
- left. break_if; congruence.
- left. break_if; congruence.
Qed.

Lemma has_key_true_same_client :
forall c i e,
has_key c i e = true ->
eClient e = c.