Proof using.
induction l; intros.
- simpl in *. constructor.
- simpl in *. repeat break_match; eauto.
+ simpl in *. constructor; eauto.
intuition. do_in_map. find_inversion.
eapply deduplicate_log'_ks with (id := eId a) in H0; try omega.
repeat find_rewrite.
rewrite get_set_same. auto.
+ simpl in *. constructor; eauto.
intuition. do_in_map. find_inversion.
eapply deduplicate_log'_ks with (id := eId a) in H0; try omega.
repeat find_rewrite.
rewrite get_set_same. auto.
Qed.

(* Specifications: *)
Lemma NoDup_deduplicate_log :
forall l,
NoDup (map (fun e => (eClient e, eId e)) (deduplicate_log l)).