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;     was_installed : bool;     keep : Cudf_types.enum_keep;     pkg_extra : Cudf_types.typed_value Cudf_types.stanza;   }   val ( =% ) : Cudf.package -> Cudf.package -> bool   val ( <% ) : Cudf.package -> Cudf.package -> int   val ( >% ) : Cudf.package -> Cudf.package -> int   type request = {     request_id : string;     install : Cudf_types.vpkglist;     remove : Cudf_types.vpkglist;     upgrade : Cudf_types.vpkglist;     req_extra : Cudf_types.typed_value Cudf_types.stanza;   }   type preamble = {     preamble_id : string;     property : Cudf_types.typedecl;     univ_checksum : string;     status_checksum : string;     req_checksum : string;   }   val default_preamble : Cudf.preamble   val default_package : Cudf.package   val default_request : Cudf.request   type cudf_doc = Cudf.preamble option * Cudf.package list * Cudf.request   type cudf_item =       [ `Package of Cudf.package       | `Preamble of Cudf.preamble       | `Request of Cudf.request ]   exception Constraint_violation of string   type universe   type cudf = Cudf.preamble * Cudf.universe * Cudf.request   type solution = Cudf.preamble * Cudf.universe   val empty_universe : ?size:int -> unit -> Cudf.universe   val load_universe : Cudf.package list -> Cudf.universe   val add_package : Cudf.universe -> Cudf.package -> unit   val remove_package :     Cudf.universe -> Cudf_types.pkgname * Cudf_types.version -> unit   val lookup_package :     Cudf.universe -> Cudf_types.pkgname * Cudf_types.version -> Cudf.package   val mem_package :     Cudf.universe -> Cudf_types.pkgname * Cudf_types.version -> bool   val mem_installed :     ?include_features:bool ->     ?ignore:(Cudf.package -> bool) ->     Cudf.universe -> Cudf_types.vpkg -> bool   val who_provides :     ?installed:bool ->     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 uid_by_package : Cudf.universe -> Cudf.package -> int   val package_by_uid : Cudf.universe -> int -> Cudf.package   val iter_packages : (Cudf.package -> unit) -> Cudf.universe -> unit   val fold_packages : ('-> Cudf.package -> 'a) -> '-> Cudf.universe -> 'a   val iteri_packages : (int -> Cudf.package -> unit) -> Cudf.universe -> unit   val iter_packages_by_name :     (Cudf_types.pkgname -> Cudf.package list -> unit) ->     Cudf.universe -> unit   val fold_packages_by_name :     ('-> Cudf_types.pkgname -> Cudf.package list -> 'a) ->     '-> Cudf.universe -> 'a   val package_names : Cudf.universe -> Cudf_types.pkgname list   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 lookup_preamble_property : Cudf.preamble -> string -> string   val lookup_typed_package_property :     Cudf.package -> string -> Cudf_types.typed_value   val lookup_typed_request_property :     Cudf.request -> string -> Cudf_types.typed_value   val lookup_typed_preamble_property :     Cudf.preamble -> string -> Cudf_types.typed_value   val lookup_package_typedecl :     ?extra:Cudf_types.typedecl -> string -> Cudf_types.typedecl1   val version_matches : Cudf_types.version -> Cudf_types.constr -> bool   val ( |= ) : Cudf_types.version -> Cudf_types.constr -> bool end