sig
  val union : ('-> '-> 'a) -> 'Imap.t -> 'Imap.t -> 'Imap.t
  val forall : (Imap.key -> '-> F.pred) -> 'Imap.t -> F.pred
  val exists : (Imap.key -> '-> F.pred) -> 'Imap.t -> F.pred
end