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_eq_o : forall A m x y e, E.eq x y -> @find A y (add x e m) = Some e.