sig
  type cst = Ind_cst.t
  type term = Logtk.Term.t
  type case
  type t
  module Case :
    sig
      type t = Cover_set.case
      val equal : Cover_set.Case.t -> Cover_set.Case.t -> bool
      val compare : Cover_set.Case.t -> Cover_set.Case.t -> int
      val hash : Cover_set.Case.t -> int
      val pp : Cover_set.Case.t CCFormat.printer
      val is_rec : Cover_set.Case.t -> bool
      val is_base : Cover_set.Case.t -> bool
      val to_term : Cover_set.Case.t -> Cover_set.term
      val to_lit : Cover_set.Case.t -> Logtk.Literal.t
      val same_cst : Cover_set.Case.t -> Cover_set.Case.t -> bool
      val sub_constants : Cover_set.Case.t -> Cover_set.cst list
      val skolems : Cover_set.Case.t -> (Logtk.ID.t * Logtk.Type.t) list
    end
  val pp : Cover_set.t CCFormat.printer
  val ty : Cover_set.t -> Logtk.Type.t
  val top : Cover_set.t -> Cover_set.cst
  val declarations : Cover_set.t -> (Logtk.ID.t * Logtk.Type.t) Sequence.t
  val cases :
    ?which:[ `All | `Base | `Rec ] ->
    Cover_set.t -> Cover_set.case Sequence.t
  val sub_constants : Cover_set.t -> Cover_set.cst Sequence.t
  val make : ?cover_set_depth:int -> depth:int -> Logtk.Type.t -> Cover_set.t
end