Ranged variables in eplex can be provided by either the ic-library or
the older range-library.
Currently, for backwards compatibility, range
is the default solver for handling eplex variables with lib(eplex).
The use of ic- or
range- library with eplex could be explicitly requested by
lib(ic_eplex) or lib(ic_range) respectively.
The relevant predicates are:
If a variable is logically integral, this means that any bound updates will automatically be rounded inwards to the next integer (subject to int_tolerance, see 11.11.2.4, and the variable can only be instantiated to an integer, not to a float. However, this does not imply that the external solver considers the variable as integral - use integers/1 to achieve this!
The symbolic bounds -inf and inf can be used. The default range is -inf..inf. Mathematical Programming style nonnegative variables should be declared as X :: 0.0..inf.