In the default execution mode, CLP(FD) constraints still exhibit some
non-relational properties. For example, adding constraints can
yield new solutions:

?- X #= 2, X = 1+1.
false.
?- X = 1+1, X #= 2, X = 1+1.
X = 1+1.

This behaviour is highly problematic from a logical point of view,
and it may render declarative debugging techniques inapplicable.

Set the Prolog flag clpfd_monotonic to true
to make CLP(FD)
monotonic: This means that adding new constraints cannot
yield new solutions. When this flag is true, we must wrap
variables that occur in arithmetic expressions with the functor (?)/1
or (#)/1. For example: