module type a = sig type t end module A (AO : a) : sig val f : AO.t -> bool end