functor (M : Map.S) ->
  functor (P : sig type p = M.key val p : p predicate end) ->
    sig
      val exists :
        'a Specification.predicate -> 'a M.t Specification.predicate
      val for_all :
        'a Specification.predicate -> 'a M.t Specification.predicate
    end