Negación como falla (\+)
Definición
En Prolog, \+ G tiene éxito si Prolog no logra demostrar G con el programa actual (falla finita de G), y falla si G sí se puede demostrar. No es la negación lógica clásica: solo refleja lo que el programa puede o no derivar, no una verdad absoluta.
Ejemplo
a. b. c. d.
e :- fail.
y :- b, \+ e, a.e nunca se puede demostrar (su única regla siempre falla). Por eso \+ e tiene éxito, y la regla y se cumple porque también se cumplen b y a.
Riesgo: variables libres
Si G contiene variables sin instanciar, \+ G puede no significar lo que se espera, porque solo se comprueba si existe alguna manera de demostrar G; no enumera valores para la variable como sí lo hace una meta positiva.
Relaciones
- Se combina con hechos y reglas descritas en Prolog.
- Contrasta con la enumeración de soluciones vía backtracking:
\+ Gnunca liga variables, solo indica si G falla por completo.
Procedencia
- Clase: Hechos, unificación, backtracking y corte en Prolog.
- Fuente:
Proposiciones.pl.