Запись преемника Пролог дает неполный результат и бесконечный цикл

Я начал изучать Пролог и впервые узнал о записи преемника.

И здесь я узнаю о написании аксиом Пеано в Прологе.

Смотрите страницу 12PDF:

<code>sum(0, M, M).
sum(s(N), M, s(K)) :-
    sum(N,M,K).

prod(0,M,0).
prod(s(N), M, P) :-
    prod(N,M,K),
    sum(K,M,P).
</code>

Я положил правила умножения в Пролог. Затем я делаю запрос:

<code>?- prod(X,Y,s(s(s(s(s(s(0))))))).
</code>

Что означает найти фактор 6 в принципе.

Вот результаты.

<code>X = s(0),
Y = s(s(s(s(s(s(0)))))) ? ;
X = s(s(0)),
Y = s(s(s(0))) ? ;
X = s(s(s(0))),
Y = s(s(0)) ? ;
infinite loop
</code>

Этот результат имеет две проблемы:

Not all results are shown, note that the result X=6,Y=1 is missing. It does not stop unless I Ctrl+C then choose abort.

Итак ... мои вопросы:

WHY is that? I tried switching "prod" and "sum" around. The resulting code gives me all results. And again, WHY is that? It still dead-loops though. HOW to resolve that?

Я прочитал другой ответ на бесконечный цикл. Но я бы хотел, чтобы кто-то ответил на основании этого сценария. Это очень помогает мне.

Ответы на вопрос(2)

Ваш ответ на вопрос