2012-04-13 15 views
6

Sono nuovo di PROLOG e sono all'inizio degli esercizi su this page. Data la regole genitore (X, Y) e maschile (X), sto cercando di definire una regola madre (X, Y) comeCome annullare in Prolog

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

Tuttavia, in GNU Prolog ottengo il seguente errore:

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

risposta

8

\+/1 è il predicato ISO Prolog per "negare". Nota che "negare" significa qui non dimostrabile a quel punto.

è possibile fare riferimento a this excellent answer da @false per più su questo argomento

3

La soluzione è in realtà nel file esercizio su quella pagina:

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

Come ha detto @Mog, negazione è il unaria \+ operatore.