Запись преемника Пролог дает неполный результат и бесконечный цикл
Я начал изучать Пролог и впервые узнал о записи преемника.
И здесь я узнаю о написании аксиом Пеано в Прологе.
Смотрите страницу 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?Я прочитал другой ответ на бесконечный цикл. Но я бы хотел, чтобы кто-то ответил на основании этого сценария. Это очень помогает мне.