Здравствуйте
Есть следующий пример из книги
Чень Ли Автоматическое доказательство теорем (стр. 124-125)
Дан набор дизъюнктов:
1.
2.
3.
4.
5.
Лок-вывод:
6.
лок-резольвента 1 и 5
7.
лок-резольвента 3 и 5
8.
лок-резольвента 6 и 7
9.
лок-резольвента 8 и 2
10.
лок-резольвента 8 и 4
11.
лок-резольвента 9 и 10
Я не пойму как получился вывод 6.
лок-резольвента 1 и 5
По правилу лок-резолюции сравниваются две литеры, имеющие наименьшие индексы, в данном случае
из набора (1) и \neg
из набора (5). Эти литеры имеют наименьшие индексы и контрарны. Теперь необходимо их унифицировать. Первое рассогласование это
f(y) из литеры
и
y из
. Получается подстановка
f(y)/y, но переменная
y содержится в терме
f(y), и значит по определению алгоритма унификации эти литеры не унифицруемы, однако в данном примере как то получена лок-резольвента. И вообще я получил, что этот набор дизъюнктов выполним, а в примере получен пустой дизъюнкт. Объясните, это опечатка в книге или я что то неправильно делаю
Второй вопрос хотел задать именно по алгоритму лок-резолюции. Нужно ли в нем реализовывать алгоритм поглощения, т.е проверять, является ли определенный дизъюнкт поддизъюнктом другого дизъюнкта. Например, в методе насыщения уровня, такая проверка нужна, чтобы не получать повторяющихся дизъюнктов. Или может сам метод лок-резолюции обеспечивает то, что появлющиеся лок-резольвенты не будут поглощаться никакими вышележащими дизъюнктами.
К примеру, даны два дизъюнкта: (
Чень Ли Автоматическое доказательство теорем (стр. 99-100))
C=D=Необходимо проверить, является ли
C поддизъюнктом
DПо алгоритму поглощения для
D находится подстановка
, далее
Теперь загоняем
в список
W, а
С в список
UТеперь с помощью обычного резолютивного вывода находим резольвенты, резольвируя каждый дизъюнкт из
W c
U.
Получается
. И снова резольвируя W c только что полученной U, будет найден пустой дизъюнкт, а это значит что C поглощается D.
Теперь, т.к все резольвенты находятся с помощью лок-резолюции, то я попытался применить ее к алгоритму поглощения.
Однако, если я буду делать то же самое, но вместо обычного вывода, использовать лок-резолюцию, то у меня получится при первом выводе
, т.е здесь отсутствует второй дизъюнкт. И в дальнейшем опять применяя вывод к новой U, я уже не получу пустого дизъюнкта, и это будет говорить о том, что C не будет поддизъюнктом D.
Конечно, если алгоритм поглощения можно не использовать, то вопрос отпадает сам собой.