`type changeset = Dose_common.CudfAdd.Cudf_set.t * Dose_common.CudfAdd.Cudf_set.t`

a tuple holding the packages to be installed and the packages to be removed

`type difference = (Cudf_types.pkgname, changeset) ExtLib.Hashtbl.t`

associates to each package name a change_set containing for each package name the associated versions of this package to be installed and removed

`val make_solution : universe:Cudf.universe -> solution:Cudf.universe -> changeset`

return a changeset containing all the packages to be installed and/or removed

`val make_difference : universe:Cudf.universe -> solution:Cudf.universe -> difference`

return the difference table where packages are indexed by package name

`type summary = {`

1. `install : Cudf.package list;`
2. `remove : Cudf.package list;`
3. `upgrade : (Cudf.package * Cudf.package) list;`
4. `downgrade : (Cudf.package * Cudf.package) list;`
5. `notchange : Cudf.package list;`

`}`

The list of packages to install, remove, etc

`val make_summary : Cudf.universe -> difference -> summary`