sig
  type t
  val is_clique_cover : Graph.t -> IntSet.t list -> bool
  val make : Graph.t -> ECC.t
  val make1 : Graph.t -> Graph.t -> ECC.t
  val reduce_rule1 : ECC.t -> bool * ECC.t
  val reduce_rule2 : ECC.t -> bool * ECC.t
  val reduce_rule3 : ECC.t -> bool * ECC.t
  val reduce_rule4 : ECC.t -> bool * ECC.t
  val g : ECC.t -> Graph.t
  val k : ECC.t -> int
  val k_used_up : ECC.t -> bool
  val all_covered : ECC.t -> bool
  val branching_edge : ECC.t -> int * int
  val restore : ECC.t -> IntSet.t list -> IntSet.t list
  val set_max_k : ECC.t -> int -> ECC.t
  val cover : ECC.t -> IntSet.t -> ECC.t
  val reduce : ECC.t -> ECC.t
  val use_rule1 : bool Pervasives.ref
  val use_rule2 : bool Pervasives.ref
  val use_rule3 : bool Pervasives.ref
  val use_rule4 : bool Pervasives.ref
  val rule1_counter : Int64.t Pervasives.ref
  val rule2_counter : Int64.t Pervasives.ref
  val rule3_counter : Int64.t Pervasives.ref
  val rule4_counter : Int64.t Pervasives.ref
end