sig
  type t
  val name : string
  val rehash : Datatype.Make_input.t -> Datatype.Make_input.t
  val structural_descr : Structural_descr.t
  val reprs : Datatype.Make_input.t list
  val equal : Datatype.Make_input.t -> Datatype.Make_input.t -> bool
  val compare : Datatype.Make_input.t -> Datatype.Make_input.t -> int
  val hash : Datatype.Make_input.t -> int
  val copy : Datatype.Make_input.t -> Datatype.Make_input.t
  val internal_pretty_code :
    Type.precedence ->
    Stdlib.Format.formatter -> Datatype.Make_input.t -> unit
  val pretty : Stdlib.Format.formatter -> Datatype.Make_input.t -> unit
  val varname : Datatype.Make_input.t -> string
  val mem_project :
    (Project_skeleton.t -> bool) -> Datatype.Make_input.t -> bool
end