sig
  type 'a t
  val ldestr_inv : bool
  val rdestr_inv : bool
  val ldestr : 'a Dalton_sig.GROUND.Type.t -> bool
  val rdestr : 'a Dalton_sig.GROUND.Type.t -> bool
  val compatible :
    'a Dalton_sig.GROUND.Type.t -> 'a Dalton_sig.GROUND.Type.t -> bool
  val map :
    (Dalton_aux.constructor_arg -> 'a -> 'b) ->
    'a Dalton_sig.GROUND.Type.t -> 'b Dalton_sig.GROUND.Type.t
  val iter :
    (Dalton_aux.constructor_arg -> 'a -> unit) ->
    'a Dalton_sig.GROUND.Type.t -> unit
  val iter2 :
    (Dalton_aux.constructor_arg -> 'a -> 'b -> unit) ->
    'a Dalton_sig.GROUND.Type.t -> 'b Dalton_sig.GROUND.Type.t -> unit
  val map2 :
    (Dalton_aux.constructor_arg -> 'a -> 'b -> 'c) ->
    'a Dalton_sig.GROUND.Type.t ->
    'b Dalton_sig.GROUND.Type.t -> 'c Dalton_sig.GROUND.Type.t
  val for_all2 :
    (Dalton_aux.constructor_arg -> 'a -> 'b -> bool) ->
    'a Dalton_sig.GROUND.Type.t -> 'b Dalton_sig.GROUND.Type.t -> bool
  val hash : int Dalton_sig.GROUND.Type.t -> int
  type position
  val parenthesize :
    Dalton_sig.GROUND.Type.position -> 'a Dalton_sig.GROUND.Type.t -> bool
  val fprint :
    Format.formatter ->
    ('a -> bool) ->
    (Dalton_aux.constructor_arg ->
     Dalton_sig.GROUND.Type.position -> Format.formatter -> 'a -> unit) ->
    'a Dalton_sig.GROUND.Type.t -> unit
end