My reading of the documentation is that max_integer is only defined if using a version of SWI-Prolog built without multi-precision arithmetic.
max_integer(integer)
Maximum integer value if integers are bounded. See also the flag bounded and section 4.27.2.1.
bounded(bool)
ISO Prolog flag. If true, integer representation is bound by min_integer and max_integer. If false integers can be arbitrarily large and the min_integer and max_integer are not present. The flag max_integer_size may be used to enforce an arbitrary limit rather than exhausting memory. See section 4.27.2.1.
Perhaps you want:
max_tagged_integer(integer)
Maximum integer value represented as a ‘tagged’ value. Tagged integers require one word storage. Larger integers are represented as ‘indirect data’ and require significantly more space.
float_max_integer(float)
The highest integer that can be represented precisely as a floating point number.
Might relate to your earlier remark to have been using the Mint package. Seems this is a bit broken. Normally SWI-Prolog should have GMP (GNU Multiple Precision) library as dependency, which gives it unbounded integers (and rational numbers and good random numbers). GMP is sometimes omitted for special applications that either can use the (little) extra performance or for which the LGPL license is a problem. Since some versions, SWI-Prolog provides an alternative multiple precision library based on LibBF that does not involve the LGPL. That is bundled and selected by default if GMP is not present. Only if you really insist you can specify (when building SWI-Prolog) you want neither and only have small bounded integers.