`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 : ('a -> string) -> 'a OpamFormula.conjunction -> string type 'a disjunction = 'a list val string_of_disjunction : ('a -> string) -> 'a OpamFormula.disjunction -> string type 'a cnf = 'a OpamFormula.disjunction OpamFormula.conjunction type 'a dnf = 'a OpamFormula.conjunction OpamFormula.disjunction val string_of_cnf : ('a -> string) -> 'a OpamFormula.cnf -> string val string_of_dnf : ('a -> string) -> 'a OpamFormula.dnf -> string type 'a formula = Empty | Atom of 'a | Block of 'a OpamFormula.formula | And of 'a OpamFormula.formula * 'a OpamFormula.formula | Or of 'a OpamFormula.formula * 'a OpamFormula.formula val eval : ('a -> bool) -> 'a 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 : ('a -> string) -> 'a OpamFormula.formula -> string val ands : 'a OpamFormula.formula list -> 'a OpamFormula.formula val ands_to_list : 'a OpamFormula.formula -> 'a OpamFormula.formula list val ors : 'a OpamFormula.formula list -> 'a OpamFormula.formula val ors_to_list : 'a OpamFormula.formula -> 'a OpamFormula.formula list val map : ('a -> 'b OpamFormula.formula) -> 'a OpamFormula.formula -> 'b OpamFormula.formula val map_formula : ('a OpamFormula.formula -> 'a OpamFormula.formula) -> 'a OpamFormula.formula -> 'a OpamFormula.formula val neg : ('a -> 'a) -> 'a OpamFormula.formula -> 'a OpamFormula.formula val iter : ('a -> unit) -> 'a OpamFormula.formula -> unit val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b 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 : 'a OpamFormula.formula -> 'a OpamFormula.formula val dnf_of_formula : 'a OpamFormula.formula -> 'a 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:('a -> bool) -> 'a OpamFormula.ext_package_formula -> OpamFormula.t end`