Традиционная булева алгебра и исчисление высказываний [33] не всегда подходят для выражения логических рассуждений, проводимых людьми, более удобен для этого язык логики предикатов. Под исчислением предикатов понимается формальный язык для представления отношений в некоторой предметной области. Исчисление предикатов подробно обсуждается в ряде книг по теории ИИ [2], [7], [33]. Основное преимущество исчисления предикатов - хорошо понятный мощный механизм математического вывода, который может быть непосредственно запрограммирован. Дальнейшее изложение ведется с учетом того, что читатель знаком с основами булевой алгебры.
Предикатом называют предложение, принимающее только два значения: "истина" или "ложь". Для обозначения предикатов применяются логические связки между высказываниями: ¬ - не,
существования и квантор всеобщности
Таким образом, логика предикатов оперирует логическими связками между высказываниями, например, она решает вопросы: можно ли на основе высказывания A получить высказывание B и т.д.
Рассмотрим некоторые примеры. Высказывание "у каждого человека есть отец" можно записать:
Выражение "Джон владеет красной машиной" записывается, например, так:
Рассмотрим вывод, дающий заключение на основе двух предпосылок:
Предпосылка 1: Все люди смертны
Предпосылка 2: Сократ - человек
p(a)
Заключение: Сократ - смертен
Смертен(Сократ) q(a)
Если обозначить через f функцию одного аргумента, то логическая формула для этого высказывания будет иметь вид:
Алфавит логики предикатов состоит из элементов (символов):
x, y, z, u, v, w - переменные;
a, b, c, d, e - константы;
f, g, h - функциональные символы;
p, q, r, s, t - предикатные символы;
¬,
Запишем на языке исчисления предикатов некоторое выражение: