Аксиома состояния наследника пролога ОШИБКА: вне локального стека
Я пытаюсь сформулировать аксиому государства-преемника для агента, который движется (север, юг, запад, восток) в сетке 4x4. Сетка имеет два препятствия на 1,1 и 2,2, а начальная позиция агента - 3,3. Агент должен добраться до телепортала, который находится в положении 1,2, не сталкиваясь с какими-либо препятствиями. Вот код:
obstacle(1,1).
obstacle(2,3).
teleportal(1,3).
agent(3,3,s0).
agent(X, Y, result(A,S)):-
( agent(X,Y,S),
( A = north, (X=0; (obstacle(X2,Y), X2 is X-1)))
;
(A = south, (X=3; (obstacle(X2,Y), X2 is X+1)));
(A = west, (Y=0; (obstacle(X,Y2), Y2 is Y-1)));
(A = east, (Y=3; (obstacle(X,Y2), Y2 is Y+1))))
;
(agent(X2, Y, S), A = north, X > 0, X2 is X-1);
(agent(X2, Y, S), A = south, X < 3, X2 is X+1);
(agent(X, Y2, S), A = west, Y > 0, Y2 is Y-1);
(agent(X, Y2, S), A = east, Y < 3, Y2 is Y+1).
escaped(S):- agent(X,Y,S), teleportal(X,Y).
Когда я запускаю escape(S), он выдает следующую ошибку: Out of local stack