sig
  val print_var : TypeCore.env -> TypeCore.name -> MzPprint.document
  val pvar : Buffer.t -> TypeCore.env * TypeCore.name -> unit
  val print_datacon : Datacon.name -> MzPprint.document
  val print_field_name : TypeCore.Field.name -> MzPprint.document
  val print_field : SurfaceSyntax.field -> MzPprint.document
  val p_kind : Buffer.t -> Kind.kind -> unit
  val print_names : TypeCore.env -> TypeCore.name list -> MzPprint.document
  val pnames : Buffer.t -> TypeCore.env * TypeCore.name list -> unit
  val pname : Buffer.t -> TypeCore.env * TypeCore.var -> unit
  val print_quantified :
    TypeCore.env ->
    string -> TypeCore.name -> Kind.kind -> TypeCore.typ -> MzPprint.document
  val print_point : TypeCore.env -> TypeCore.var -> MzPprint.document
  val print_type : TypeCore.env -> TypeCore.typ -> MzPprint.document
  val print_constraint :
    TypeCore.env -> TypeCore.mode_constraint -> MzPprint.document
  val print_data_field_def :
    TypeCore.env -> TypeCore.data_field_def -> MzPprint.document
  val print_branch : TypeCore.env -> TypeCore.branch -> MzPprint.document
  val pfact : Buffer.t -> Fact.fact -> unit
  val print_facts : TypeCore.env -> MzPprint.document
  val print_permission_list :
    TypeCore.env * TypeCore.typ list -> MzPprint.document
  val ppermission_list : Buffer.t -> TypeCore.env * TypeCore.var -> unit
  val print_permissions : TypeCore.env -> MzPprint.document
  val ppermissions : Buffer.t -> TypeCore.env -> unit
  val ptype : Buffer.t -> TypeCore.env * TypeCore.typ -> unit
  val penv : Buffer.t -> TypeCore.env -> unit
  val pconstraint :
    Buffer.t -> TypeCore.env * TypeCore.mode_constraint -> unit
  val print_binders : TypeCore.env -> MzPprint.document
end