sig
  val string_of_request : OpamTypes.atom OpamTypes.request -> string
  val stats : OpamTypes.solution -> OpamTypes.stats
  val new_packages : OpamTypes.solution -> OpamTypes.package_set
  val string_of_stats : OpamTypes.stats -> string
  val solution_is_empty : OpamTypes.solution -> bool
  val delete_or_update : OpamTypes.solution -> bool
  val print_solution :
    messages:(OpamTypes.package -> string list) ->
    rewrite:(OpamTypes.package -> OpamTypes.package) ->
    OpamTypes.solution -> unit
  val resolve :
    ?verbose:bool ->
    OpamTypes.universe ->
    OpamTypes.atom OpamTypes.request ->
    (OpamTypes.solution, string) OpamTypes.result
  val installable : OpamTypes.universe -> OpamTypes.package_set
  val dependencies :
    depopts:bool ->
    installed:bool ->
    OpamTypes.universe -> OpamTypes.package_set -> OpamTypes.package list
  val reverse_dependencies :
    depopts:bool ->
    installed:bool ->
    OpamTypes.universe -> OpamTypes.package_set -> OpamTypes.package list
  val sequential_solution :
    OpamTypes.package OpamTypes.action list -> OpamTypes.solution
end