`module Version = Dose_versioning.Debian`
`type range = [`

1. `| `Hi of string`
2. `| `In of string * string`
3. `| `Lo of string`
4. `| `Eq of string`

`]`
`val string_of_range : [< `Eq of string | `Hi of string | `In of string * string | `Lo of string ] -> string`
`val range : ?bottom:bool -> string list -> [> `Eq of string | `Hi of string | `In of string * string | `Lo of string ] list`
`val discriminant : ?bottom:bool -> ?highest:bool -> (([> `Eq of string | `Hi of string | `In of string * string | `Lo of string ] as 'a) -> 'b -> 'c) -> string list -> 'b list -> ('a * 'a list) list`

`discriminants ?bottom ?ascending evalsel vl constraints` returns the discriminants of the versions `vl` w.r.t. the `constraints`, using `evalsel` to determine whether a a version satisfy a constraint. For each discriminant, a canonical representative is given, as well as the list of all other equivalent versions.

- parameter bottom

  set to true includes a version strictly smaller than all `vl`

- parameter highest

  chooses the highest version as representative, if set to true, and the lowest otherwise.

`val add_unique : ('a, ('b, unit) ExtLib.Hashtbl.t) ExtLib.Hashtbl.t -> 'a -> 'b -> unit`
`val conj_iter : ('a, (([> `Eq | `Geq | `Gt | `Leq | `Lt | `Neq ] * 'b) option, unit) ExtLib.Hashtbl.t) ExtLib.Hashtbl.t -> (('a * 'c) * (string * 'b) option) list -> unit`
`val cnf_iter : ('a, (([> `Eq | `Geq | `Gt | `Leq | `Lt | `Neq ] * 'b) option, unit) ExtLib.Hashtbl.t) ExtLib.Hashtbl.t -> (('a * 'c) * (string * 'b) option) list list -> unit`
`val constraints : < breaks : (('a * 'b) * (string * string) option) list ; conflicts : (('a * 'c) * (string * string) option) list ; depends : (('a * 'd) * (string * string) option) list list ; pre_depends : (('a * 'e) * (string * string) option) list list ; provides : (('a * 'f) * (string * string) option) list.. > list -> ('a, ([> `Eq | `Geq | `Gt | `Leq | `Lt | `Neq ] * string) list) ExtLib.Hashtbl.t`

`constraints universe` returns a map between package names and an ordered list of constraints where the package name is mentioned

`val all_constraints : ('a, 'b list) ExtLib.Hashtbl.t -> 'a -> 'b list`
`val align : string -> [ `Eq of string | `Hi of string | `In of string * string | `Lo of string ] -> [ `Eq of string | `Hi of string | `In of string * string | `Lo of string ]`
`val all_versions : ('a * 'b) list -> 'b list`
`val migrate : (< version : string.. > as 'a) list -> [ `Eq of string | `Hi of string | `In of string * string | `Lo of string ] -> (('a * [ `Eq of string | `Hi of string | `In of string * string | `Lo of string ]) * [ `Eq of string | `Hi of string | `In of string * string | `Lo of string ]) list`
`val extract_epochs : string list -> string list`
`val add_normalize : string list -> string list`
`val add_epochs : string list -> string list -> string list`
`val all_ver_constr : ('a, ('b * string) list) ExtLib.Hashtbl.t -> < name : 'a ; version : string.. > list -> string list * ('b * string) list`