У меня есть предикат, который получает вход bst T и возвращает список S значений, содержащихся в bst, которые принадлежат определенному диапазону [R1, R2], и это отлично работает. Когда я пытаюсь подсчитать итерацию, чтобы получить список на выходе, я получаю Always false. Это код моего предиката:Пролог: итерация счетчика в дереве двоичного поиска
findExamsInRange(R1, R2, T, S, N) :-
find(R1, R2, T, S, N),
N > 0.
find(R1, R2, nil, [], N).
find(R1, R2, t(V,L,R), S, N) :-
V >= R1,
V =< R2,
find(R1,R2, L, L,NL),
find(R1,R2, R, LR,NR),
append([V|LL], LR, S),
N is NL+NR+1.
find(R1, R2, t(V,L,R), S, N) :-
V < R1,
find(R1, R2, R, S, N).
find(R1, R2, t(V,L,R), S, N) :-
V > R2,
find(R1, R2, L, S, N).
Может кто-нибудь помочь мне, почему я не могу получить значение N
?