functor (P1 : TermInner.PRINT) (P2 : TermInner.PRINT) -> sig val print : (P1.t, P2.t) Problem.t Problem.printer end