У меня проблемы с пониманием того, что происходит в этом примере
Изучите Пролог сейчас - Глава 3 - Пример 3: Преемник
numeral(0).
numeral(succ(X)) :- numeral(X).
Когда задается вопрос о числе (X), он сначала даст 0 для X, затем продолжит с succ (0), увеличивая часть succ (0) на единицу таким образом, пока не закончится место:
X = 0 ?
X = succ(0) ? ;
X = succ(succ(0)) ? ;
X = succ(succ(succ(0))) ? ;
X = succ(succ(succ(succ(0)))) ?
Я изо всех сил пытаюсь понять, почему он увеличивает succ (0)?
Я знаю, что пролог сначала найдет факт и сопоставит его, следовательно, первый 0. Затем он вернется назад, чтобы увидеть, есть ли другие решения, и «увидит» правило. В правиле он будет использовать созданный экземпляр X в 0. Где я терплю неудачу, это чтобы понять, почему он продолжает увеличивать succ (0). Становится ли X succ (0) вместо 0?
Мои извинения за глупый мозг.