sig
  module Make :
    functor (C : LogtkIndex.CLAUSE->
      sig
        type feature_vector = int list
        module Feature :
          sig
            type t = { name : string; f : LogtkIndex.lits -> int; }
            val name : LogtkFeatureVector.Make.Feature.t -> string
            val compute :
              LogtkFeatureVector.Make.Feature.t -> LogtkIndex.lits -> int
            val pp : Buffer.t -> LogtkFeatureVector.Make.Feature.t -> unit
            val fmt :
              Format.formatter -> LogtkFeatureVector.Make.Feature.t -> unit
            val sum_of_depths : LogtkFeatureVector.Make.Feature.t
            val size_plus : LogtkFeatureVector.Make.Feature.t
            val size_minus : LogtkFeatureVector.Make.Feature.t
            val count_symb_plus :
              LogtkSymbol.t -> LogtkFeatureVector.Make.Feature.t
            val count_symb_minus :
              LogtkSymbol.t -> LogtkFeatureVector.Make.Feature.t
            val max_depth_plus :
              LogtkSymbol.t -> LogtkFeatureVector.Make.Feature.t
            val max_depth_minus :
              LogtkSymbol.t -> LogtkFeatureVector.Make.Feature.t
          end
        val compute_fv :
          LogtkFeatureVector.Make.Feature.t list ->
          LogtkIndex.lits -> LogtkFeatureVector.Make.feature_vector
        type t
        module C :
          sig
            type t = C.t
            val cmp : t -> t -> int
            val to_lits : t -> LogtkIndex.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 remove : t -> C.t -> t
        val remove_seq : t -> C.t Sequence.t -> t
        val retrieve_subsuming :
          t -> LogtkIndex.lits -> '-> ('-> C.t -> 'a) -> 'a
        val retrieve_subsuming_c : t -> C.t -> '-> ('-> C.t -> 'a) -> 'a
        val retrieve_subsumed :
          t -> LogtkIndex.lits -> '-> ('-> C.t -> 'a) -> 'a
        val retrieve_subsumed_c : t -> C.t -> '-> ('-> C.t -> 'a) -> 'a
        val iter : t -> (C.t -> unit) -> unit
        val fold : ('-> C.t -> 'a) -> '-> t -> 'a
        val retrieve_alpha_equiv :
          t -> LogtkIndex.lits -> '-> ('-> C.t -> 'a) -> 'a
        val retrieve_alpha_equiv_c :
          t -> C.t -> '-> ('-> C.t -> 'a) -> 'a
        val empty_with : LogtkFeatureVector.Make.Feature.t list -> t
        val default_features : LogtkFeatureVector.Make.Feature.t list
        val features_of_signature :
          ?ignore:(LogtkSymbol.t -> bool) ->
          LogtkSignature.t -> LogtkFeatureVector.Make.Feature.t list
        val of_signature : LogtkSignature.t -> t
        val features : t -> LogtkFeatureVector.Make.Feature.t list
      end
end