sig
  type 'a printer = Format.formatter -> '-> unit
  and printing = Format.formatter -> unit
  and color = int
  and kind = Katom | Ktype | Krow of Dalton_aux.kind
  module Kind :
    sig
      val atomic : Dalton_aux.kind -> bool
      val rows : Dalton_aux.kind -> int
      val fprint : Format.formatter -> Dalton_aux.kind -> unit
    end
  type variance = Covariant | Contravariant | Invariant
  module Variance :
    sig
      val leq : Dalton_aux.variance -> Dalton_aux.variance -> bool
      val combine :
        Dalton_aux.variance -> Dalton_aux.variance -> Dalton_aux.variance
      val to_string : Dalton_aux.variance -> string
      val fprint : Format.formatter -> Dalton_aux.variance -> unit
      val fprint_name : Format.formatter -> Dalton_aux.variance -> unit
    end
  type constructor_arg = {
    variance : Dalton_aux.variance;
    kind : Dalton_aux.kind;
    ldestr : bool;
    rdestr : bool;
  } 
end