projog

3.20. between(X,Y,Z) - checks if a number is within a specified range.

between(X,Y,Z) succeeds if the integer numeric value represented by Z is greater than or equal to the integer numeric value represented by X and is less than or equal to the integer numeric value represented by Y.

If Z is an uninstantiated variable then Z will be successively unified with all integer values in the range from X to Y.

Examples

?- between(1, 5, 1).

yes

?- between(1, 5, 2).

yes

?- between(1, 5, 3).

yes

?- between(1, 5, 4).

yes

?- between(1, 5, 5).

yes

?- between(1, 5, 0).

no

?- between(1, 5, -1).

no

?- between(1, 5, -9223372036854775808).

no

?- between(1, 5, 6).

no

?- between(1, 5, 7).

no

?- between(1, 5, 9223372036854775807).

no

?- between(-9223372036854775808, 9223372036854775807, -9223372036854775808).

yes

?- between(-9223372036854775808, 9223372036854775807, -1).

yes

?- between(-9223372036854775808, 9223372036854775807, 0).

yes

?- between(-9223372036854775808, 9223372036854775807, 1).

yes

?- between(-9223372036854775808, 9223372036854775807, 9223372036854775807).

yes

?- between(1, 1, X).
X = 1

yes

?- between(1, 2, X).
X = 1

yes;
X = 2

yes

?- between(1, 5, X).
X = 1

yes;
X = 2

yes;
X = 3

yes;
X = 4

yes;
X = 5

yes

?- between(5, 1, X).

no

?- between(5-2, 2+3, 2*2).

yes

?- between(5-2, 2+3, 8-6).

no