Предикат Пролог - бесконечный цикл

Мне нужно создать предикат Пролога для степени 2 с натуральными числами. Натуральные числа: 0, s (0), s (s (0)) и т. Д.

Например:

?- pow2(s(0),P).
P = s(s(0));
false.
?- pow2(P,s(s(0))).
P = s(0);
false.

Это мой код:

times2(X,Y) :-
  add(X,X,Y).

pow2(0,s(0)).
pow2(s(N),Y) :-
  pow2(N,Z),
  times2(Z,Y).

И это прекрасно работает с первым примером, но во втором бесконечный цикл.
Как я могу это исправить?

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

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