Алгоритм унификации термов с использованием стека

Теории первого порядка

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

Теории первого порядка возникли с целью формализации и строгого обоснования математики. В 1901 году Дедекинд предложил первое обоснование арифметики, известное теперь под названием системы аксиом Пеано. В 1908 году Цермело сформулировал аксиомы теории множеств. Так было установлено, что множество натуральных чисел и класс всех множеств тоже являются моделями теорий первого порядка. Это стимулировало развитие теории моделей, основные теоремы которой были доказаны Лёвенгеймом (1915 г.), Скулемом (1920 г.), Гёделем (1930 г.), Мальцевым (1936 г.).

Главное внимание в данной главе будет уделено доказательствам теоремы Мальцева о компактности, теорем Гёделя о непротиворечивости исчисления предикатов и о полноте теории первого порядка. Отметим теоремы Лёвенгейма-Скулема, из которых следует существование счётной модели теории множеств и несчётной модели теории натуральных чисел. Рассмотрим метод резолюций Робинсона (1965 г.) автоматического доказательства предложений исчисления предикатов.

Термы и предикаты

Термы и их унификация

Упрощённо можно сказать, что термы – это алгебраические выражения, определяющие функции, значения которых вычисляются с помощью операций. Например, в булевой алгебре А определены операции: Алгоритм унификации термов с использованием стека - student2.ru , Алгоритм унификации термов с использованием стека - student2.ru , Алгоритм унификации термов с использованием стека - student2.ru , и из этих операций можно составлять термы, например, Алгоритм унификации термов с использованием стека - student2.ru , Алгоритм унификации термов с использованием стека - student2.ru , Алгоритм унификации термов с использованием стека - student2.ru . Перейдём к точным определениям.

Пусть Алгоритм унификации термов с использованием стека - student2.ru – счётное множество, элементы которого будут называться переменными, F – произвольное множество, элементы которого будут называться функциональными символами, Алгоритм унификации термов с использованием стека - student2.ru – произвольная функция. Элементы f Î F, для которых Алгоритм унификации термов с использованием стека - student2.ru , называются n-арными операциями. Например, для булевой алгебры множество функциональных символов будет равно: F = {Ç, È, Ø}, значения функции # равны #(Ç) = 2, #(È) = 2, #(Ø) = 1, поэтому все элементы из F – операции. Символы c Î F, для которых #(с) = 0, называются символами констант. Термы определим по индукции:

1) переменные Алгоритм унификации термов с использованием стека - student2.ru и символы констант являются термами;

2) если Алгоритм унификации термов с использованием стека - student2.ru – термы и f – n-арная операция, то Алгоритм унификации термов с использованием стека - student2.ru – терм;

3) кроме построенных с помощью правил 1 – 2, других термов нет.

В определении терма участвует префиксная форма операции. Заметим, что бинарные операции записываются обычно в инфиксной форме. Например, вместо Алгоритм унификации термов с использованием стека - student2.ru применяется запись: Алгоритм унификации термов с использованием стека - student2.ru . Учитывая приоритеты операций, скобки часто опускают, в частности, приведённая запись равносильна выражению: Алгоритм унификации термов с использованием стека - student2.ru , ибо приоритет операции Ç выше приоритета È.

Согласно определению терма, множество всех термов T(F) содержит множество переменных X. Подстановкой называется отображение Алгоритм унификации термов с использованием стека - student2.ru такое, что для всех x Î X, за исключением элементов некоторого конечного подмножества из X, имеет место v(x) = x. Распространим подстановку v до некоторой функции Алгоритм унификации термов с использованием стека - student2.ru , полагая

1) если t Î X, то v¢(t) = v(t);

2) если t – символ константы, то v¢(t) = t;

3) если Алгоритм унификации термов с использованием стека - student2.ru для некоторой n-арной операции f и термов Алгоритм унификации термов с использованием стека - student2.ru , то Алгоритм унификации термов с использованием стека - student2.ru .

Терм v¢(t) называется результатом применения подстановки v к терму t. Например, результатом подстановки

Алгоритм унификации термов с использованием стека - student2.ru , Алгоритм унификации термов с использованием стека - student2.ru , Алгоритм унификации термов с использованием стека - student2.ru

в терм Алгоритм унификации термов с использованием стека - student2.ru будет терм: Алгоритм унификации термов с использованием стека - student2.ru . Если значения Алгоритм унификации термов с использованием стека - student2.ru не указаны, то по умолчанию Алгоритм унификации термов с использованием стека - student2.ru . Подстановку записывают как множество пар Алгоритм унификации термов с использованием стека - student2.ru , например: Алгоритм унификации термов с использованием стека - student2.ru .

Пусть заданы два терма s и t, и пусть надо найти подстановку, делающую эти термы равными. Эта задача решается следующим образом.

Подстановка v называется унификатором термов s и t, если v¢ (s) = v¢ (t). Унификатор v называется наибольшим общим унификатором термов s и t и обозначается: m.g.u.(s, t) = v, если для любого другого унификатора w термов s и t существует такая подстановка a, что a¢ ° v¢ = w¢. Если для термов s и t существует хотя бы один унификатор, то среди унификаторов существует наибольший общий. Для его нахождения предлагается следующий алгоритм.

Алгоритм унификации термов с использованием стека

Вход: термы s, t.

Выход: подстановка h, записанная как список пар Алгоритм унификации термов с использованием стека - student2.ru , если t и s обладают наибольшим общим унификатором. Процедура возвращает отказ, если унификаторов нет.

Действия: h = Æ; запомнить пару (s = t) в стек;

Пока стек не пуст, выполнять цикл:

Тело цикла: Извлечь из стека пару термов (s = t) и произвести одно из следующих действий, в зависимости от выполнения одного из условий

I если s – переменная, t – терм, не содержащий вхождений s, то все вхождения переменной s в стеке заменяются на t и все вхождения s в h заменяются на t, затем подстановка s = t добавляется к списку подстановок в h;

II если t – переменная, а s – терм, то произвести действия, как в I, поменяв ролями s и t (к h добавляется пара t = s);

III если s и t – составные термы, Алгоритм унификации термов с использованием стека - student2.ru и Алгоритм унификации термов с использованием стека - student2.ru , то все пары Алгоритм унификации термов с использованием стека - student2.ru , 1 £ i £ n, запоминаются в стек;

IV если s и t – одинаковые символы констант или переменных, то ничего не делать;

V во всех остальных случаях производится выход из цикла и возвращается отказ.

Конец тела цикла.

Если выход из цикла произошёл не после выполнения условия V, то h содержит элементы Алгоритм унификации термов с использованием стека - student2.ru искомой подстановки.

Пример

s = (a Ç b) È ((a Ç b) Ç d), t = (a Ç b) È (c Ç (a Ç b)).

1) Устанавливаем h = Æ; запоминаем в стек пару (s = t);

2) извлекаем (s = t) из стека, имеет место случай III, запоминаем в стек пары Алгоритм унификации термов с использованием стека - student2.ru и ((a Ç b) Ç d = c Ç (a Ç b));

3) извлекаем из стека ((a Ç b) Ç d = c Ç (a Ç b)), имеет место случай III, запоминаем в стек (a Ç b = c) и (d = a Ç b);

4) извлекаем из стека (d = a Ç b), имеет место случай I, h = {(d = a Ç b)};

5) извлекаем из стека (a Ç b = c), имеет место случай II, Алгоритм унификации термов с использованием стека - student2.ru ;

6) извлекаем из стека Алгоритм унификации термов с использованием стека - student2.ru , изменений в h нет;

7) стек пуст, возвращаем Алгоритм унификации термов с использованием стека - student2.ru .

Система уравнений

Пусть задано несколько пар термов Алгоритм унификации термов с использованием стека - student2.ru Алгоритм унификации термов с использованием стека - student2.ru и необходимо найти подстановку w, которая превращает все пары термов Алгоритм унификации термов с использованием стека - student2.ru в равные Алгоритм унификации термов с использованием стека - student2.ru . Эта задача называется системой уравнений: Алгоритм унификации термов с использованием стека - student2.ru .

Унификатором системы уравнений называется подстановка v, которая является унификатором пар Алгоритм унификации термов с использованием стека - student2.ru для всех 1 £ i £ n. Система уравнений Алгоритм унификации термов с использованием стека - student2.ru , 1 £ i £ n, называется находящейся в разрешённой форме, если каждое из этих уравнений имеет вид: Алгоритм унификации термов с использованием стека - student2.ru для некоторого элемента Алгоритм унификации термов с использованием стека - student2.ru , причём переменная Алгоритм унификации термов с использованием стека - student2.ru не входит в терм Алгоритм унификации термов с использованием стека - student2.ru ни при каком i. Такая система имеет унификатором подстановку: Алгоритм унификации термов с использованием стека - student2.ru , которая будет наиболее общим унификатором этой системы. Редукцией термов называется замена уравнения Алгоритм унификации термов с использованием стека - student2.ru системой уравнений: Алгоритм унификации термов с использованием стека - student2.ru .

Наши рекомендации