Я пытаюсь понять, что происходит с парой запросов Пролога. У меня есть следующие правила:
similar(a,aa).
similar(aa,aaa).
similar(X,X).
similar(X,Y) :- similar(Y,X).
similar(X,Y) :- similar(X,Z), similar(Z,Y).
Затем я попытаюсь выполнить базовый запрос:
?- similar(a,aaa).
Что приводит к следующей ошибке:
uncaught exception: error(existence_error(procedure,similar/0),similar/0)
Мне кажется, что он вернет True
, потому что будет выглядеть, как similar(a,aa)
и similar(aa,aaa)
, таким образом удовлетворяя второму условию рога.
Что я делаю не так?