Simulador basado en MariaGusta.pl y en las sesiones reales de SWI-Prolog de los apuntes.
gusta( maria, helado ). gusta( maria, leer ). gusta( maria, cine ). dar( juan, beso, maria ). recibe( X, beso ) :- dar( juan, beso, X ).
Elige una consulta y presiona «Ejecutar». Si tiene varias soluciones, usa «Siguiente solución ( ; )» para pedirle a Prolog más respuestas, tal como en la consola real.
Predicado con corte:
factorial( 0, 1 ) :- !. factorial( N, F ) :- N > 0, N1 is N - 1, factorial( N1, F1 ), F is N * F1.
Al resolver factorial(0, F), Prolog encuentra F = 1 con la primera cláusula. Si más adelante el programa falla y Prolog necesita retroceder (backtracking) hasta este punto, ¿vuelve a intentar la segunda cláusula?
Al retroceder, Prolog sí prueba N > 0 con N = 0. La condición falla, así que el resultado final es el mismo — pero Prolog perdió tiempo explorando una rama inútil.
El corte descarta de inmediato la segunda cláusula para esta llamada. Prolog nunca vuelve a intentarla, sin importar qué pase después en el programa.