8.1.2.
Исчисление предикатов
Исчисление
высказываний имеет определенные ограничения. Оно не позволяет оперировать с
обобщенными утверждениями вроде "Все люди смертны". Конечно, можно
обозначить такое утверждение некоторой пропозициональной константой р, а
другой константой q обозначить утверждение "Сократ — человек".
Но из (р л q) нельзя вывести утверждение "Сократ смертен".
Для этого
нужно анализировать пропозициональные символы в форме предикатов и аргументов,
кванторов и квантифщированных переменных. Логика предикатов предоставляет
нам набор синтаксических правил, позволяющих выполнить такой анализ, набор семантических
правил, с помощью которых интерпретируются эти выражения, и теорию доказательств,
которая позволяет вывести правильные формулы, используя синтаксические правила
дедукции. Предикатами обозначаются свойства, такие как "быть человеком",
и отношения, такие как быть "выше, чем".
Аргументы
могут быть отдельными константами, или составным выражением "функция-аргумент",
которое обозначает сущности некоторого мира интересующих нас объектов, или отдельными
квантифицируемыми переменными, которые определены в этом пространстве объектов.
Специальные операторы — кванторы — используются для связывания переменных
и ограничения области их интерпретации. Стандартными являются кванторы общности
(V) и существования (3). Первый интерпретируется как "все", а второй
— "кое-кто" (или "кое-что").
Ниже приведены
синтаксические правила исчисления предикатов первого порядка.
Любой символ
(константа или переменная) является термом. Если rk является символом
k-местной функции и а1 ..., <xk являются термами, то
Гk(a1..., ak) является термом.
(S 40
Если Tk является
символом k-местного предиката
и а1
..., ak являются термами,
то U(а1
..., ak) является правильно построенной формулой (ППФ).
(S. -) и (S.
v)
Правила заимствуются
из исчисления высказывании.
(S. V) Если
U является ППФ и % является переменной,
то (любой
Х) U является ППФ.
Для обозначения
используются следующие символы:
Действительные
имена, символы функций и предикатов являются элементами языка первого порядка.
Использование
квантора существования позволяет преобразовать термы с квантором общности в
соответствии с определением
(EX)U определено
как -(любой X)-U.
Выражение
(EХ)(ФИЛОСОФ(Х)) читается как "Кое-кто является философом",
а выражение (любой Х)(ФИЛОСОФ(Х)) читается как "Любой является
философом". Выражение ФИЛОСОФ(Х) представляет собой правильно построенную
формулу, но это не предложение, поскольку область интерпретации для переменной
X не определена каким-либо квантором. Формулы, в которых все упомянутые
переменные имеют определенные области интерпретации, называются замкнутыми
формулами.
Как и в исчислении
высказываний, в исчислении предикатов существует нормальная форма представления
выражений, но для построения такой нормальной формы используется расширенный
набор правил синтаксических преобразований. Ниже приведена последовательность
применения таких правил. Для приведения любого выражения к нормальной форме
следует выполнить следующие операции.
(1) Исключить
операторы эквивалентности, а затем импликации.
(2) Используя
правила Де Моргана и правила замещения (E X)U на -(любой X)-U (а следовательно,
и (любой X) U на -(E X)-U), выполнить приведение отрицания.
(3) Выполнить
приведение переменных. При этом следует учитывать особенности определения области
интерпретации переменных кванторами. Например, в выражении (E Х)(ФИЛОСОФ(Х))&(E
Х)(АТЛЕТ(Х)) переменные могут иметь разные интерпретации в одной и той же
области. Поэтому вынесение квантора за скобки — (E Х)(ФИЛОСОФ(Х))&.(АТЛЕТ(Х))—
даст выражение, которое не следует из исходной формулы.
(4) Исключить
кванторы существования. Кванторы существования, которые появляются вне области
интерпретации любого квантора общности, можно заменить произвольным именем (его
называют константой Сколема), в то время как экзистенциальные переменные, которые
могут существовать внутри области интерпретации одного или более кванторов общности,
могут быть заменены функциями Сколема. Функция Сколема— это функция с произвольным
именем, которая имеет следующий смысл: "значение данной переменной есть
некоторая функция от значений, присвоенных универсальным переменным, в области
интерпретации которых она лежит".
(5) Преобразование
в префиксную форму. На этом шаге все оставшиеся кванторы (останутся только кванторы
общности) переносятся "в голову" выражения и таким образом оказываются
слева в списке квантифицированных переменных. За ними следует матрица, в которой
отсутствуют кванторы.
(6) Разнести
операторы дизъюнкции и конъюнкции.
(7) Отбросить
кванторы общности. Теперь все свободные переменные являются неявно универсально
квантифицированными переменными. Экзистенциальные переменные станут либо константами,
либо функциями универсальных переменных.
(8) Как и
ранее, отбросить операторы конъюнкций, оставив множество фраз.
(9) Снова
переименовать переменные, чтобы одни и те же имена не встречались в разных фразах.
8.1.
Снова о роботах и комнатах
В
главе 3 мы уже упоминали об исчислении предикатов в упрощенном виде. Там выражение
вида
at(робот,
комнатаА)
означало,
что робот находится в комнате А. Термы робот и комнатаА в этом выражении представляли
собой константы, которые описывали определенные реальные объекты. Но что будет
означать выражение вида
at(X,
комнатаА) ,
в
котором х является переменной? Означает ли оно, что нечто находится в комнате
А? Если это так, то говорят, что переменная имеет экзистенциальную подстановку
(импорт). А может быть, выражение означает, что все объекты находятся в комнате
А? В таком случае переменная имеет универсальную подстановку. Таким образом,
отсутствие набора четких правил не позволяет однозначно интерпретировать приведенную
формулу.
Перечисленные
в этом разделе правила исчисления предикатов обеспечивают однозначную интерпретацию
выражений, содержащих переменные.
В
частности, фраза
at(X,
комнатаА )<—at (X, ящик1) интерпретируется как
"для
всех X X находится в комнате А, если X находится в ящике 1". В этой фразе
переменная имеет универсальную подстановку. Аналогично, фраза
at(X,
комнатаА) <-интерпретируется как "для всех X X находится в комнате А".
А вот фраза
<—
at(X, комнатаА) интерпретируется как "для всех XX не находится в комнате
А".
Иными
словами, это не тот случай, когда некоторый объект X находится в комнате А и,
следовательно, переменная имеет экзистенциальную подстановку.
Теперь можно
преобразовать фразовую форму, в которой позитивные литералы сгруппированы слева
от знака стрелки, а негативные — справа. Если фраза в форме
P1,
..., Рт <— q1,...qn содержит переменные х1,...,
хk, то правильная интерпретация имеет следующий вид:
для всех x1,
..., хk
p1
или ... или pm является истинным, если q1
и ... и qn являются истинными.
Если п
= 0, т.е. отсутствует хотя бы одно условие, то выражение будет интерпретироваться
следующим образом:
для всех x1,
..., xk
p1
или ... или рт является истинным.
Если т
= 0, т.е. отсутствуют термы заключения, то выражение будет интерпретироваться
следующим образом:
для всех x1,
..., xk
не имеет значения,
что q1 и ... и qn являются истинными.
Если же т = п = 0, то мы имеем дело с пустой фразой, которая всегда интерпретируется как ложная.