(** To benefit from some proof automation, we populate a rewrite database with some of the properties above. *)

(* Specifications: *)
Lemma notin_dests_cons:
forall x s d m,
~In x (dests ((s, d) :: m)) <-> x <> d /\ ~In x (dests m).
Lemma notin_dests_append:
forall d m1 m2,
~In d (dests (m1 ++ m2)) <-> ~In d (dests m1) /\ ~In d (dests m2).
Lemma notin_dests_cons:
forall x s d m,
~In x (dests ((s, d) :: m)) <-> x <> d /\ ~In x (dests m).
Lemma notin_dests_append:
forall d m1 m2,
~In d (dests (m1 ++ m2)) <-> ~In d (dests m1) /\ ~In d (dests m2).