2012-04-13 145 views
6

Soy nuevo en PROLOG y estoy al comienzo de los ejercicios en this page. Teniendo en cuenta la normativa de los padres (X, Y) y masculina (X), estoy tratando de definir una madre regla (X, Y) comoCómo negar en Prolog

mother(X, Y) :- 
    not(male(X)), 
    parent(X, Y). 

Sin embargo, en GNU Prolog me sale el siguiente error:

| ?- mother(lina, julia). 
uncaught exception: error(existence_error(procedure,not/1),mother/2) 
| ?- 

Respuesta

8

\+/1 es el predicado Prólogo de ISO para "negar". Tenga en cuenta que "negar" significa que aquí no se puede demostrar en ese punto.

puede hacer referencia a this excellent answer por @false para más información sobre el tema

3

La solución es realmente en el archivo del ejercicio en esa página:

female(X) :- \+ male(X). 

Como dijo @Mog, la negación es el unario \+ operador.