A constraint specifier is, in its compact form,
F and A are respectively the functor name and
arity of the constraint, e.g.:
:- chr_constraint foo/1. :- chr_constraint bar/2, baz/3.
In its extended form, a constraint specifier is
c(A_1, ... ,A_n) where c
is the constraint's functor,
n its arity and the A_i are argument specifiers.
An argument specifier is a mode, optionally followed by a type. Example:
:- chr_constraint get_value(+,?). :- chr_constraint domain(?int, +list(int)), alldifferent(?list(int)).