Вы можете ограничить область X
, чтобы она находилась вне диапазона от V1
до V2
:
not_between(X, Lower, Upper) :-
% it is not the case that X is both greater and
% equal to Lower, and less than or equal to Upper:
#\ ((X #>= Lower) #/\ (X #=< Upper)).
Замените testbb/3
на not_between/3
.Это определение гарантирует, что X
не может принимать значения Lower
и Upper
точно;вместо этого вы могли бы использовать ограничения диапазона #<
и #>
, если хотите, чтобы они были включены в домен для X
.
. Это проверено и работает с SWI-Prolog.Чтобы использовать CLP (FD) в файле SWI-Prolog, убедитесь, что вы импортировали библиотеку CLP (FD) в верхней части исходного файла в директиве, например:
:- use_module(library(clpfd)).