sig
  type solver
  val load : ?check:bool -> Cudf.universe -> Depsolver.solver
  val edos_install :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package -> Diagnostic.diagnosis
  val edos_coinstall :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list -> Diagnostic.diagnosis
  val edos_coinstall_prod :
    ?global_constraints:bool ->
    Cudf.universe -> Cudf.package list list -> Diagnostic.diagnosis list
  val trim : ?global_constraints:bool -> Cudf.universe -> Cudf.universe
  val find_broken :
    ?global_constraints:bool -> Cudf.universe -> Cudf.package list
  val find_installable :
    ?global_constraints:bool -> Cudf.universe -> Cudf.package list
  val univcheck :
    ?global_constraints:bool ->
    ?callback:(Diagnostic.diagnosis -> unit) -> Cudf.universe -> int
  val listcheck :
    ?global_constraints:bool ->
    ?callback:(Diagnostic.diagnosis -> unit) ->
    Cudf.universe -> Cudf.package list -> int
  val dependency_closure :
    ?maxdepth:int ->
    ?conjunctive: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:Depsolver.enc -> Cudf.universe -> string
  type solver_result =
      Sat of (Cudf.preamble option * Cudf.universe)
    | Unsat of Diagnostic.diagnosis option
    | Error of string
  val check_request :
    ?cmd:string ->
    ?criteria:string -> ?explain:bool -> Cudf.cudf -> Depsolver.solver_result
end