Пролог, почему этот запрос возвращает этот конкретный результат и каков его эффект - PullRequest
0 голосов
/ 14 июля 2011
?- assert(p(a)),assert(p(b)),setof(X,p(X),R).
X = H142
R = [a, b] 
yes

Каков эффект этого запроса и почему он возвращает именно этот результат?

1 Ответ

2 голосов
/ 14 июля 2011

Причина результата yes состоит в том, что R, то есть множество, состоящее только из a и b, фактически является множеством всех X, которые удовлетворяют предикату p (x).

Если вы добавите элементы в R или удалите из него a или b, результат будет no.

p (a) и p (b) имеют значение true, поскольку предикаты assert добавили эти предложения в базу данных.

Точно так же, сохраняя R = [a, b], если вы добавите еще одно предложение, скажем, assert(p(c)), результат будет no (поскольку R будет отсутствовать c, чтобы иметь все X, которые удовлетворяют p (X)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...