2012-04-13 11 views
6

Jestem nowy w PROLOG i jestem na samym początku ćwiczeń na this page. Biorąc pod uwagę zasadami rodzic (X, Y) i mężczyzn (x), próbuję zdefiniować reguły matkę (X, Y), jakJak zanegować w Prologu

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

Jednak w GNU Prolog pojawia się następujący błąd:

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

Odpowiedz

8

\+/1 jest predykatem ISO Prolog do "negacji". Zauważ, że "zanegować" oznacza tutaj nie do udowodnienia w tym momencie.

Można odwołać się do this excellent answer przez @false więcej na temat

3

Rozwiązaniem jest faktycznie w pliku ćwiczeń na tej stronie:

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

Jak powiedział @Mog, negacja jest jednoskładnikowa \+ operator.