2012-04-13 28 views
6

Tôi mới đến PROLOG và sáng ở phần đầu của các bài tập trên this page. Căn cứ vào quy định cha mẹ (X, Y) và nam (X), tôi đang cố gắng để xác định một người mẹ cai trị (X, Y) làLàm thế nào để phủ nhận trong Prolog

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

Tuy nhiên, trong GNU Prolog tôi nhận được lỗi sau:

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

Trả lời

8

\+/1 là thuộc tính ISO Prolog để "từ chối". Lưu ý rằng "phủ nhận" có nghĩa là ở đây không thể chứng minh tại thời điểm đó.

Bạn có thể tham khảo this excellent answer bởi @false để biết thêm về chủ đề

3

Các giải pháp thực sự là trong file tập thể dục trên trang đó:

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

Như @Mog nói, phủ định là unary \+ nhà điều hành.

Các vấn đề liên quan