sig   type inconsistency_reason =       [ `Conflict of           (Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkglist       | `Unsat_dep of           (Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkgformula ]   type bad_solution_reason =       [ `Conflict of           (Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkglist       | `Downgrade of Cudf_types.vpkglist       | `Missing_install of Cudf_types.vpkglist       | `Missing_upgrade of Cudf_types.vpkglist       | `Multi_upgrade of Cudf_types.pkgname list       | `Not_kept of           Cudf_types.pkgname * Cudf_types.version * Cudf_types.enum_keep       | `Unremoved of Cudf_types.vpkglist       | `Unsat_dep of           (Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkgformula ]   val explain_reason : Cudf_checker.bad_solution_reason -> string   val satisfy_formula :     Cudf.universe -> Cudf_types.vpkgformula -> bool * Cudf_types.vpkgformula   val disjoint :     Cudf.universe ->     ?ignore:(Cudf.package -> bool) ->     Cudf_types.vpkglist -> bool * Cudf_types.vpkglist   val is_consistent :     Cudf.universe -> bool * Cudf_checker.inconsistency_reason option   val is_solution :     Cudf.universe * Cudf.request ->     Cudf.universe -> bool * Cudf_checker.bad_solution_reason list end