sig
  type solver
  val load : ?check:bool -> Cudf.universe -> Algo.Depsolver.solver
  val edos_install :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package -> Algo.Diagnostic.diagnosis
  val edos_coinstall :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list -> Algo.Diagnostic.diagnosis
  val edos_coinstall_prod :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list list -> Algo.Diagnostic.diagnosis list
  val trim : ?global_constraints:bool -> Cudf.universe -> Cudf.universe
  val trimlist :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list -> Cudf.package list
  val find_broken :
    ?global_constraints:bool -> Cudf.universe -> Cudf.package list
  val find_installable :
    ?global_constraints:bool -> Cudf.universe -> Cudf.package list
  val find_listbroken :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list -> Cudf.package list
  val find_listinstallable :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list -> Cudf.package list
  val univcheck :
    ?global_constraints:bool ->
    ?callback:(Algo.Diagnostic.diagnosis -> unit) -> Cudf.universe -> int
  val listcheck :
    ?global_constraints:bool ->
    ?callback:(Algo.Diagnostic.diagnosis -> unit) ->
    Cudf.universe -> Cudf.package list -> int
  val dependency_closure :
    ?maxdepth:int ->
    ?conjunctive:bool ->
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list -> Cudf.package list
  val reverse_dependencies :
    Cudf.universe -> Cudf.package list Common.CudfAdd.Cudf_hashtbl.t
  val reverse_dependency_closure :
    ?maxdepth:int -> Cudf.universe -> Cudf.package list -> Cudf.package list
  type enc = Cnf | Dimacs
  val output_clauses :
    ?global_constraints:bool ->
    ?enc:Algo.Depsolver.enc -> Cudf.universe -> string
  type depclean_result =
      Cudf.package *
      (Cudf_types.vpkglist * Cudf_types.vpkg * Cudf.package list) list *
      (Cudf_types.vpkg * Cudf.package list) list
  val depclean :
    ?global_constraints:bool ->
    ?callback:(Algo.Depsolver.depclean_result -> unit) ->
    Cudf.universe -> Cudf.package list -> Algo.Depsolver.depclean_result list
  type solver_result =
      Sat of (Cudf.preamble option * Cudf.universe)
    | Unsat of Algo.Diagnostic.diagnosis option
    | Error of string
  val check_request :
    ?cmd:string ->
    ?callback:(int array * Algo.Diagnostic.diagnosis -> unit) ->
    ?criteria:string ->
    ?explain:bool -> Cudf.cudf -> Algo.Depsolver.solver_result
  val check_request_using :
    ?call_solver:(Cudf.cudf -> Cudf.preamble option * Cudf.universe) ->
    ?callback:(int array * Algo.Diagnostic.diagnosis -> unit) ->
    ?criteria:string ->
    ?explain:bool -> Cudf.cudf -> Algo.Depsolver.solver_result
end