sig   type relop = [ `Eq | `Geq | `Gt | `Leq | `Lt | `Neq ]   val string_of_relop : OpamFormula.relop -> string   val relop_of_string : string -> OpamFormula.relop   type version_constraint = OpamFormula.relop * OpamPackage.Version.t   type atom = OpamPackage.Name.t * OpamFormula.version_constraint option   val string_of_atom : OpamFormula.atom -> string   val short_string_of_atom : OpamFormula.atom -> string   val string_of_atoms : OpamFormula.atom list -> string   val check : OpamFormula.atom -> OpamPackage.t -> bool   type 'a conjunction = 'a list   val string_of_conjunction :     ('-> string) -> 'OpamFormula.conjunction -> string   type 'a disjunction = 'a list   val string_of_disjunction :     ('-> string) -> 'OpamFormula.disjunction -> string   type 'a cnf = 'OpamFormula.disjunction OpamFormula.conjunction   type 'a dnf = 'OpamFormula.conjunction OpamFormula.disjunction   val string_of_cnf : ('-> string) -> 'OpamFormula.cnf -> string   val string_of_dnf : ('-> string) -> 'OpamFormula.dnf -> string   type 'a formula =       Empty     | Atom of 'a     | Block of 'OpamFormula.formula     | And of 'OpamFormula.formula * 'OpamFormula.formula     | Or of 'OpamFormula.formula * 'OpamFormula.formula   val eval : ('-> bool) -> 'OpamFormula.formula -> bool   val check_relop : OpamFormula.relop -> int -> bool   val eval_relop :     OpamFormula.relop ->     OpamPackage.Version.t -> OpamPackage.Version.t -> bool   val neg_relop : OpamFormula.relop -> OpamFormula.relop   val string_of_formula : ('-> string) -> 'OpamFormula.formula -> string   val ands : 'OpamFormula.formula list -> 'OpamFormula.formula   val ands_to_list : 'OpamFormula.formula -> 'OpamFormula.formula list   val ors : 'OpamFormula.formula list -> 'OpamFormula.formula   val ors_to_list : 'OpamFormula.formula -> 'OpamFormula.formula list   val map :     ('-> 'OpamFormula.formula) ->     'OpamFormula.formula -> 'OpamFormula.formula   val map_formula :     ('OpamFormula.formula -> 'OpamFormula.formula) ->     'OpamFormula.formula -> 'OpamFormula.formula   val neg : ('-> 'a) -> 'OpamFormula.formula -> 'OpamFormula.formula   val iter : ('-> unit) -> 'OpamFormula.formula -> unit   val fold_left : ('-> '-> 'a) -> '-> 'OpamFormula.formula -> 'a   type version_formula = OpamFormula.version_constraint OpamFormula.formula   type t =       (OpamPackage.Name.t * OpamFormula.version_formula) OpamFormula.formula   val cnf_of_formula : 'OpamFormula.formula -> 'OpamFormula.formula   val dnf_of_formula : 'OpamFormula.formula -> 'OpamFormula.formula   val to_atom_formula : OpamFormula.t -> OpamFormula.atom OpamFormula.formula   val of_atom_formula : OpamFormula.atom OpamFormula.formula -> OpamFormula.t   val simplify_version_formula :     OpamFormula.version_formula -> OpamFormula.version_formula   val atoms : OpamFormula.t -> OpamFormula.atom list   val to_string : OpamFormula.t -> string   val to_conjunction :     OpamFormula.t -> OpamFormula.atom OpamFormula.conjunction   val of_conjunction :     OpamFormula.atom OpamFormula.conjunction -> OpamFormula.t   val to_disjunction :     OpamFormula.t -> OpamFormula.atom OpamFormula.disjunction   val of_disjunction :     OpamFormula.atom OpamFormula.disjunction -> OpamFormula.t   val to_cnf : OpamFormula.t -> OpamFormula.atom OpamFormula.cnf   val to_dnf : OpamFormula.t -> OpamFormula.atom OpamFormula.dnf   type 'a ext_package_formula =       (OpamPackage.Name.t * ('a * OpamFormula.version_formula))       OpamFormula.formula   val formula_of_extended :     filter:('-> bool) ->     'OpamFormula.ext_package_formula -> OpamFormula.t end