2012-04-13 20 views
6

Ich bin neu in PROLOG und bin am Anfang der Übungen auf this page. In Anbetracht der Regeln Eltern (X, Y) und männlichen (X), Ich versuche, eine Regel Mutter (X, Y) alsWie negieren in Prolog

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

jedoch zu definieren, in GNU Prolog bekomme ich folgende Fehlermeldung:

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

Antwort

8

\+/1 ist das ISO-Prolog-Prädikat "negieren". Beachten Sie, dass "Negieren" hier nicht beweisbar bedeutet.

Sie können über das Thema für mehr this excellent answer von @False siehe

3

Die Lösung ist eigentlich in der Trainingsdatei auf dieser Seite:

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

Wie @Mog sagte Negation ist der einstellige \+ Operator.