The Predicates <tt>eq</tt>, <tt>ne</tt>, <tt>lt</tt>, <tt>le</tt>, <tt>ge</tt>, <tt>gt</tt>

HANDBOOK / GENTLE PRIMER / A Summary of Predefined Predicates /

# The Predicates `eq`, `ne`, `lt`, `le`, `ge`, `gt`

The conditions `eq` and `ne` are used to compare values for equality.

       eq(X, Y)

succeeds if X is equal to Y and fails otherwise.

       ne(X, Y)

succeeds if X is not equal to Y and fails otherwise. These predicates work for all types including user-defined types, i.e. they may be used to compare terms. For example,

       eq(list(red, X), list(red, list(yellow,nil)))

succeeds if `X` is `list(yellow,nil)`.

The predicates `gt`, `ge`, `lt`, and `le` are defined only for the types `INT` and `STRING`.

       gt(X, Y)

succeeds if `X` is greater than `Y` and fails otherwise.

For example,

       gt(N, 0)

succeeds if `N` is a positive number.

In the case of strings, the lexicographical order is used for comparison. For example,

       gt("axy", "abc")
       gt("aaaa", "aa")

succeed.

Similarly, `ge`, `lt`, and `le` stand for ``greater or equal'', ``less than'', and ``less or equal'', respectively