Вопрос для понимающего человека скорее всего не сложный. Я просто немного не понимаю способ работы рантайма Пролога.
Есть правило
test(K,N):-K>0,K=<N.
Ничего нет проще. Пишем потом
?- test(1,5).
true.
?- test(7,5).
false.
?- test(X,5).
ERROR: =</2: Arguments are not sufficiently instantiated
Логично, требовать всемогущей магии от интерпретатора нельзя. Даже понятно что значит ошибка. Не понятно как от нее избавиться, что дописать еще. Хотелось бы получить по очереди значения от 1 до 5. Не список, а именно чтобы оно последовательно выводило и ожидало нажатия ";", как если бы правило было
test(1,5).
test(2,5).
test(3,5).
test(4,5).
test(5,5).
Тогда
?- test2(X,5).
X = 1 ;
X = 2 ;
X = 3 ;
X = 4 ;
X = 5.
Вроде бы вопрос пустяковый, но ничего конкретного нигде нет. Я даже вопрос кратко сформулировать не могу.