?- Z = 8, X = 9, #Z #= #X mod #Y.
Z = 8, X = 9, clpz:(Y in 9..sup), clpz:(9 mod#Y#=8). % unexpected
Expected: false
; nonvar(Z), nonvar(X) ->
( Z > 0 ->
( X < 0 -> true
- ; X >= Z
+ ; X >= Z,
+ % due to X = Z+Y*_ and Y > Z
+ ( X-Z > 0 ->
+ X-Z > Z
+ ; true
+ )
)
; Z < 0 ->
( X > 0 -> true
- ; X =< Z
+ ; X =< Z,
+ % due to X = Z+Y*_ and Y < Z
+ ( X-Z < 0 ->
+ X-Z < Z
+ ; true
+ )
)
; Z =:= 0 % Multiple solutions so do nothing special.
),