sig
  type lits = Index_intf.lits
  module Make :
    functor (C : Index.CLAUSE->
      sig
        type feature_vector = int list
        module Feature :
          sig
            type t = { name : string; f : FeatureVector.lits -> int; }
            val name : FeatureVector.Make.Feature.t -> string
            val compute :
              FeatureVector.Make.Feature.t -> FeatureVector.lits -> int
            val pp : t CCFormat.printer
            val to_string : t -> string
            val sum_of_depths : FeatureVector.Make.Feature.t
            val size_plus : FeatureVector.Make.Feature.t
            val size_minus : FeatureVector.Make.Feature.t
            val count_symb_plus : ID.t -> FeatureVector.Make.Feature.t
            val count_symb_minus : ID.t -> FeatureVector.Make.Feature.t
            val max_depth_plus : ID.t -> FeatureVector.Make.Feature.t
            val max_depth_minus : ID.t -> FeatureVector.Make.Feature.t
          end
        val compute_fv :
          FeatureVector.Make.Feature.t list ->
          FeatureVector.lits -> FeatureVector.Make.feature_vector
        type t
        module C :
          sig
            type t = C.t
            val compare : t -> t -> int
            val to_lits : t -> Index_intf.lits
          end
        val name : string
        val empty : unit -> t
        val add : t -> C.t -> t
        val add_seq : t -> C.t Sequence.t -> t
        val add_list : t -> C.t list -> t
        val remove : t -> C.t -> t
        val remove_seq : t -> C.t Sequence.t -> t
        val retrieve_subsuming : t -> Index_intf.lits -> C.t Sequence.t
        val retrieve_subsuming_c : t -> C.t -> C.t Sequence.t
        val retrieve_subsumed : t -> Index_intf.lits -> C.t Sequence.t
        val retrieve_subsumed_c : t -> C.t -> C.t Sequence.t
        val iter : t -> C.t Sequence.t
        val fold : ('-> C.t -> 'a) -> '-> t -> 'a
        val retrieve_alpha_equiv : t -> FeatureVector.lits -> C.t Sequence.t
        val retrieve_alpha_equiv_c : t -> C.t -> C.t Sequence.t
        val empty_with : FeatureVector.Make.Feature.t list -> t
        val default_features : FeatureVector.Make.Feature.t list
        val features_of_signature :
          ?ignore:(ID.t -> bool) ->
          Signature.t -> FeatureVector.Make.Feature.t list
        val of_signature : Signature.t -> t
        val features : t -> FeatureVector.Make.Feature.t list
      end
end