sig
  type package = {
    package : Cudf_types.pkgname;
    version : Cudf_types.version;
    depends : Cudf_types.vpkgformula;
    conflicts : Cudf_types.vpkglist;
    provides : Cudf_types.veqpkglist;
    installed : bool;
    keep : Cudf_types.enum_keep option;
    extra : (string * string) list;
  }
  val ( =% ) : Cudf.package -> Cudf.package -> bool
  type request = {
    problem_id : string;
    install : Cudf_types.vpkglist;
    remove : Cudf_types.vpkglist;
    upgrade : Cudf_types.vpkglist;
  }
  val default_package : Cudf.package
  val default_request : Cudf.request
  type cudf_doc = Cudf.package list * Cudf.request
  type cudf_item = [ `Package of Cudf.package | `Request of Cudf.request ]
  exception Constraint_violation of string
  type universe
  type cudf = Cudf.universe * Cudf.request
  type solution = Cudf.universe
  val load_universe : Cudf.package list -> Cudf.universe
  val lookup_package :
    Cudf.universe -> Cudf_types.pkgname * Cudf_types.version -> Cudf.package
  val mem_installed :
    ?include_features:bool ->
    ?ignore:(Cudf.package -> bool) ->
    Cudf.universe -> Cudf_types.vpkg -> bool
  val who_provides :
    Cudf.universe ->
    Cudf_types.vpkg -> (Cudf.package * Cudf_types.version option) list
  val lookup_packages :
    ?filter:Cudf_types.constr ->
    Cudf.universe -> Cudf_types.pkgname -> Cudf.package list
  val get_installed :
    Cudf.universe -> Cudf_types.pkgname -> Cudf.package list
  val iter_packages : (Cudf.package -> unit) -> Cudf.universe -> unit
  val fold_packages : ('-> Cudf.package -> 'a) -> '-> Cudf.universe -> 'a
  val get_packages :
    ?filter:(Cudf.package -> bool) -> Cudf.universe -> Cudf.package list
  val universe_size : Cudf.universe -> int
  val installed_size : Cudf.universe -> int
  val status : Cudf.universe -> Cudf.universe
  val lookup_package_property : Cudf.package -> string -> string
  val lookup_request_property : Cudf.request -> string -> string
  val version_matches : Cudf_types.version -> Cudf_types.constr -> bool
  val ( |= ) : Cudf_types.version -> Cudf_types.constr -> bool
end