functor (Pt : TermInner.PRINT) (Pty : TermInner.PRINT->
  sig
    val print_spec_defs : (Pt.t, Pty.t) Statement.spec_defs Statement.printer
    val print_clause : (Pt.t, Pty.t) Statement.pred_clause Statement.printer
    val print_clauses :
      (Pt.t, Pty.t) Statement.pred_clause list Statement.printer
    val print_pred_def : (Pt.t, Pty.t) Statement.pred_def Statement.printer
    val print_pred_defs :
      (Pt.t, Pty.t) Statement.pred_def list Statement.printer
    val print_eqns :
      ID.t -> (Pt.t, Pty.t) Statement.equations Statement.printer
    val print_rec_def : (Pt.t, Pty.t) Statement.rec_def Statement.printer
    val print_rec_defs :
      (Pt.t, Pty.t) Statement.rec_def list Statement.printer
    val print_tydef : Pty.t Statement.tydef Statement.printer
    val print_tydefs :
      ([ `Codata | `Data ] * Pty.t Statement.tydef list) Statement.printer
    val print_copy : (Pt.t, Pty.t) Statement.copy Statement.printer
    val print : (Pt.t, Pty.t) Statement.t Statement.printer
  end