functor (P : sig val phase : Options.category end) -> S