End PMap.
(** * An implementation of maps over any type that injects into type [positive] *)
Module Type INDEXED_TYPE.
Parameter t: Type.
Parameter index: t -> positive.

(* Specifications: *)
Axiom index_inj: forall (x y: t), index x = index y -> x = y.
Parameter eq: forall (x y: t), {x = y} + {x <> y}.
Axiom index_inj: forall (x y: t), index x = index y -> x = y.
Parameter eq: forall (x y: t), {x = y} + {x <> y}.