`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`