Module F := Facts M.
Definition key := X.t.
Definition t := M.t.
Definition empty := M.empty.
Definition add (A : Type) (i : key) (v : A) (m : t A) : t A :=
M.add (X.index i) v m.
Definition find (A : Type) (i : key) (m : t A) : option A :=
M.find (X.index i) m.
Definition remove (A : Type) (i : key) (m : t A) : t A :=
M.remove (X.index i) m.

Lemma add_neq_o : forall A m x y e, ~ E.eq x y -> find y (add x e m) = @find A y m.