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 : '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
end