Prólogo predicado - bucle infinito

Necesito crear un predicado Prolog para una potencia de 2, con los números naturales. Los números naturales son: 0, s (0), s (s (0)) y así sucesivamente ..

Por ejemplo

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

Este es mi código:

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

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

Y funciona perfectamente con el primer ejemplo, pero entra en un bucle infinito en el segundo ..
¿Cómo puedo arreglar esto

Respuestas a la pregunta(4)

Su respuesta a la pregunta