sig
  val resolve :
    ?verbose:bool ->
    Cudf.universe ->
    Cudf_types.vpkg OpamTypes.request ->
    (Cudf.package OpamTypes.action list, Algo.Diagnostic.reason list)
    OpamTypes.result
  type 'a state = 'a list
  type 'a state_space = 'a array list
  val zero : int -> int OpamHeuristic.state
  val succ :
    bounds:int list ->
    int OpamHeuristic.state -> int OpamHeuristic.state option
  val brute_force :
    ?verbose:bool ->
    ('OpamHeuristic.state -> bool) ->
    'OpamHeuristic.state_space -> 'OpamHeuristic.state option
  val state_space :
    ?filters:(Cudf_types.pkgname -> Cudf_types.constr) ->
    Cudf.universe ->
    Cudf_types.vpkglist ->
    Cudf_types.pkgname list -> Cudf.package OpamHeuristic.state_space
  val explore :
    ?verbose:bool ->
    Cudf.universe ->
    Cudf.package OpamHeuristic.state_space ->
    Cudf.package OpamHeuristic.state option
  val state_of_request :
    ?verbose:bool ->
    Cudf.universe ->
    Cudf_types.vpkg OpamTypes.request ->
    Cudf.package OpamHeuristic.state option
  val actions_of_state :
    Cudf.universe ->
    Cudf_types.vpkg OpamTypes.request ->
    Cudf.package OpamHeuristic.state -> Cudf.package OpamTypes.action list
end