Использование предиката not и

Квантификация переменных в подцели с предикатом not

Информация о фактах, которые не являются истинными и об отношениях, которые не соблюдаются, называется отрицательной информацией. Такая информация в явной форме в программе не хранится. Просто считается, что вся информация, которая отсутствует в программе, ложна.

Встроенный предикат not имеет один аргумент. Этим аргументом является подцель, значение истинности которой (после выполнения подцели) заменяется на противоположное.

Предикат not будет успешным, если не может быть доказана истинность данной подцели. Это приводит к предотвращению связывания внутри not несвязанных переменных.

Свободные переменные в предикате not не разрешены, потому что для связывания свободных переменных в подцели подцель должна унифицироваться с каким-либо предложением и выполниться, то есть, если вы используете внутри not переменную, то она должна быть означена до своего использования.

Квантификация переменных в подцели с предикатом not

? not(sister(ann,X)) если Ann не является сестрой X, то предикат sister –неуспешен, а not(sister…)- истина.

В подцели sister(ann,X) переменная X квантифицирована экзистенциально (существует ли некоторый X, для которого Ann является сестрой?)

Переменная X в подцели с отрицанием not(sister(…)) квантифицирована универсально (является ли Ann не сестрой X?То есть для любого X является ли Ann не сестрой X? Для проверки этого положения требуется отыскать только одно значение X, при котором подцель с отрицанием потерпит неудачу.

Квантификация переменных всегда изменяется на противоположную, если фраза подвергается отрицанию.

Рассмотрим задачу, в которой заданы пары европейских государств, часть из которых имеет общие границы. Необходимо определить названия пар государств, не имеющих общих границ.

Предположим, программа для решения этой задачи имеет вид:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: