
Лекции-презентации по математической логики / MLLect07
.pdf
Множество рассогласований
Рассмотрим сначала процедуру нахождения множества рассогласований D непустого множества
выражений W = fE1; : : : ; Ek g. 1 Пусть сначала D = ?.
2Найти первую слева позицию, на которой не для всех выражений из W стоит´ один и тот же символ.
3Для каждого Ei 2 W : добавить в D подвыражение из Ei , которое начинается с символа, занимающего найденную позицию.
Пример
Для W = |
P |
x; f (y; z); a ; |
P(x; a; y); P x; g |
h k(x) |
; f (a; x) |
|
первая |
|
|
|
|
|
|
|
позиция, на которой не все выражения состоят из одинаковых |
символов пятая.
n o
Находим множество рассогласований: D = f (y; z); a; g h k(x) .
51 / 101

Множество рассогласований
Рассмотрим сначала процедуру нахождения множества рассогласований D непустого множества
выражений W = fE1; : : : ; Ek g. 1 Пусть сначала D = ?.
2Найти первую слева позицию, на которой не для всех выражений из W стоит´ один и тот же символ.
3Для каждого Ei 2 W : добавить в D подвыражение из Ei , которое начинается с символа, занимающего найденную позицию.
Пример
Для W = |
P |
x; f (y; z); a ; |
P(x; a; y); P x; g |
h k(x) |
; f (a; x) |
|
первая |
|
|
|
|
|
|
|
позиция, на которой не все выражения состоят из одинаковых |
символов пятая.
n o
Находим множество рассогласований: D = f (y; z); a; g h k(x) .
52 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
53 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
54 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
55 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
56 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
57 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
58 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
59 / 101

Алгоритм унификации
Алгоритм унификации можно записать следующим образом:
1 |
Пусть сначала k = 0, |
Wk = W , svk = e. |
2 |
Если Wk единичный дизъюнкт, то выдать svk наиболее |
|
|
общий унификатор для W и остановиться. |
|
|
Иначе найти множество Dk рассогласований для Wk . |
|
3 |
Если существуют такие элементы (термы) vk ; tk 2 Dk , что |
|
|
vk переменная, не входящая в tk , то найти lk = ftk =vk g |
|
|
и перейти к шагу 4. |
|
|
Иначе выдать, что W неунифицируемо и остановиться. |
|
4 |
Пусть svk+1 = svk lk , |
Wk+1 = Wklk |
|
(Заметим, что Wk+1 = W svk+1 ). |
|
5 |
Присвоить k := k + 1 и перейти к шагу 2. |
60 / 101