sig
  module Lb :
    sig
      type t
      val bottom : Dalton_sig.GROUND.Lb.t
      val is_bottom : Dalton_sig.GROUND.Lb.t -> bool
      val union :
        Dalton_sig.GROUND.Lb.t ->
        Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Lb.t
      val leq : Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Lb.t -> bool
      val compare : Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Lb.t -> int
      val normalize : Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Lb.t
      val fprint : Format.formatter -> Dalton_sig.GROUND.Lb.t -> unit
      val fprint_in_term :
        int -> Format.formatter -> Dalton_sig.GROUND.Lb.t -> unit
      val draw : Dalton_sig.GROUND.Lb.t -> string list
    end
  module Ub :
    sig
      type t
      val top : Dalton_sig.GROUND.Ub.t
      val is_top : Dalton_sig.GROUND.Ub.t -> bool
      val inter :
        Dalton_sig.GROUND.Ub.t ->
        Dalton_sig.GROUND.Ub.t -> Dalton_sig.GROUND.Ub.t
      val geq : Dalton_sig.GROUND.Ub.t -> Dalton_sig.GROUND.Ub.t -> bool
      val compare : Dalton_sig.GROUND.Ub.t -> Dalton_sig.GROUND.Ub.t -> int
      val normalize : Dalton_sig.GROUND.Ub.t -> Dalton_sig.GROUND.Ub.t
      val fprint : Format.formatter -> Dalton_sig.GROUND.Ub.t -> unit
      val fprint_in_term :
        int -> Format.formatter -> Dalton_sig.GROUND.Ub.t -> unit
      val draw : Dalton_sig.GROUND.Ub.t -> string list
    end
  module Lub :
    sig
      val leq : Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Ub.t -> bool
      val geq : Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Ub.t -> bool
      val fprint_in_term :
        int ->
        Format.formatter ->
        Dalton_sig.GROUND.Lb.t -> Dalton_sig.GROUND.Ub.t -> unit
    end
  module Label :
    sig
      type t
      val compare :
        Dalton_sig.GROUND.Label.t -> Dalton_sig.GROUND.Label.t -> int
      val hash : Dalton_sig.GROUND.Label.t -> int
      val fprint : Format.formatter -> Dalton_sig.GROUND.Label.t -> unit
    end
  module Type :
    sig
      type 'a t
      val ldestr_inv : bool
      val rdestr_inv : bool
      val ldestr : 'Dalton_sig.GROUND.Type.t -> bool
      val rdestr : 'Dalton_sig.GROUND.Type.t -> bool
      val compatible :
        'Dalton_sig.GROUND.Type.t -> 'Dalton_sig.GROUND.Type.t -> bool
      val map :
        (Dalton_aux.constructor_arg -> '-> 'b) ->
        'Dalton_sig.GROUND.Type.t -> 'Dalton_sig.GROUND.Type.t
      val iter :
        (Dalton_aux.constructor_arg -> '-> unit) ->
        'Dalton_sig.GROUND.Type.t -> unit
      val iter2 :
        (Dalton_aux.constructor_arg -> '-> '-> unit) ->
        'Dalton_sig.GROUND.Type.t -> 'Dalton_sig.GROUND.Type.t -> unit
      val map2 :
        (Dalton_aux.constructor_arg -> '-> '-> 'c) ->
        'Dalton_sig.GROUND.Type.t ->
        'Dalton_sig.GROUND.Type.t -> 'Dalton_sig.GROUND.Type.t
      val for_all2 :
        (Dalton_aux.constructor_arg -> '-> '-> bool) ->
        'Dalton_sig.GROUND.Type.t -> 'Dalton_sig.GROUND.Type.t -> bool
      val hash : int Dalton_sig.GROUND.Type.t -> int
      type position
      val parenthesize :
        Dalton_sig.GROUND.Type.position ->
        'Dalton_sig.GROUND.Type.t -> bool
      val fprint :
        Format.formatter ->
        ('-> bool) ->
        (Dalton_aux.constructor_arg ->
         Dalton_sig.GROUND.Type.position -> Format.formatter -> '-> unit) ->
        'Dalton_sig.GROUND.Type.t -> unit
    end
end