OpamFormulaSourceFormulas on packages, opt. with sub-formulas on versions, and conversion functions
binary operations (compatible with the Dose type for Cudf operators!)
Returns a string representing the operator in infix syntax, as used in opam files (">", "=", etc.)
Version constraints for OPAM
Formula atoms for OPAM
The compact atom format used in requests, "pkgOPvers", with '.' allowed instead of '='
Parses a package or atom, in a format similar to short_string_of_atom.
Prints atoms as a conjunction ("&") using the short format
Checks if a package verifies an atom
Return all packages satisfying the given atoms from a set (i.e. name matching at least one of the atoms, version matching all atoms with the appropriate name). If disj is true, returns packages that satisfy at least one of the constraint of a given name, otherwise that satisfy all constraints.
AND formulas
Pretty print AND formulas
OR formulas
Pretty print OR formulas
CNF formulas (Conjunctive Normal Form)
DNF formulas (Disjunctive Normal Form)
General formulas
Check a relational operator against an integer from compare
Evaluate a relational operator between versions
Convert a list of formulas to an AND-formula (Empty formulas are ignored)
Converts back an AND-formula to a list (flattens top-level ands)
Convert a list of formulas to an OR-formula (Empty formulas are ignored)
Converts back an OR-formula to a list (flattens top-level ors)
Map on atoms. Atoms for which the given function returns Empty will be simply removed
Maps top-down on a formula
Maps bottom-up on a formula (atoms first)
Negates a formula (given the function to negate atoms)
Fold function (bottom-up, left-to-right)
Fold function (bottom-up, right-to-left)
exists f formula scans the whole formula until f atom returns true, in which case it returns true. Returns false otherwise
Sort formula, using compare function. `Block` around `Or` and `And` \ are removed.
Expressions composed entirely of version constraints
Checks if a given version satisfies a formula
An atom is: name * (relop * version) formula. Examples of valid formulae:
Returns true if package verifies formula (i.e. it is within at least one package set that is a solution of the formula, and is named in the formula)
Checks if a given set of (installed) packages satisfies a formula
Returns the set of names referred to in a formula
Returns the subset of packages possibly matching the formula (i.e. including all disjunction cases)
val compare_nc :
(OpamPackage.Name.t * version_formula) ->
(OpamPackage.Name.t * version_formula) ->
intTransform a formula where versions can be expressed using formulas to a flat atom formula
val simplify_ineq_formula :
('a -> 'a -> int) ->
(relop * 'a) formula ->
(relop * 'a) formula optionsimplify_ineq_formula comp f returns a canonical version of inequality formula f, based on comparison function comp, where each version appears at most once, and in increasing order. Returns Some Empty if the formula is always true, None if it is always false
Like simplify_ineq_formula, but specialised on version formulas
A more aggressive version of simplify_version_formula that attempts to find a shorter formula describing the same subset of versions within a given set. The empty formula is returned for an empty set, and the original formula is otherwise returned as is if no versions match.
val formula_of_version_set :
OpamPackage.Version.Set.t ->
OpamPackage.Version.Set.t ->
version_formulaformula_of_version_set set subset generates a formula that is enough to describe all packages of subset and exclude packages otherwise in set
Return a conjunction. If the initial formula is not a conjunction, then fail.
Return a formula from a conjunction of atoms
Return a disjunction of atoms from a package formula. It the initial formula is not a disjunction, then fail.
Like to_disjunction, but accepts conjunctions within constraint formulas, resolving them using the provided package set. Conjunctions between packages still raise Failure.
Return a formula from a disjunction of atoms