Ответ в теме: Проверка принадлежности числа диапазону на Prolog

      Комментарии к записи Ответ в теме: Проверка принадлежности числа диапазону на Prolog отключены
#2636

Реализовать требуемое вам поведение можно следующим образом:

in_range(Value, range(Value, _)):-!.
in_range(Value, range(_, Value)):-!.
in_range(Value, range(From, To)):-
  Value > From, Value < To.

Первые два правила срабатывают если одна из границ диапазона не задана или не задано исходное число (т.к. в этом случае оно тоже успешно унифицируется любой границей диапазона).

Однако, с помощью такого правила вы не сможете например получить все числа в диапазоне (мне кажется вы могли иметь это, говоря о случае когда не задано исходное число) — для этого нужно использовать предикат between.

Вложения: