Доказать, что следующие функции вычислимы 3 страница
55.3. Существуют предметы, которые я никогда не вижу.
55.4. Я вижу каждую вещь в некоторый момент времени.
55.5. Если я вижу предмет, то я его тут же беру.
55.6. Если я вижу предмет, то я его беру спустя некоторое время.
55.7. Перед тем, как я беру предмет, я вижу его.
55.8. Если я беру предмет, не видя его до этого, то через некоторое время я вижу его, но не беру.
55.9. Не существует предметов, которые я никогда не беру.
55.10. Я никогда не беру того, что я всегда вижу.
55.11. Всегда существуют вещи, которые я не вижу и не беру.
55.12. Я беру всякую вещь, которую я никогда не вижу.
55.13. Я беру всякий предмет, который я еще не взял до этого.
55.14. Я всегда вижу либо все, либо ничего.
55.15. Если я беру некоторый предмет, который до этого уже видел, то я ранее видел предмет, который взял позднее.
55.16. Некоторые вещи, которые я видел ранее, я всегда вижу вновь спустя определенное время.
55.17. Если я когда-либо видел две вещи одновременно, то в будущем я также увижу их только одновременно.
55.18. Если я когда-либо видел и взял предмет одновременно, то впоследствии я либо делаю то и другое, либо не делаю ни того, ни другого.
ЛАБОРАТОРНАЯ РАБОТА № 6
ЛОГИЧЕСКИЙ ВЫВОД В ИСЧИСЛЕНИИ ПРЕДИКАТОВ
1. ЦЕЛЬ РАБОТЫ
Целью работы является ознакомление с основными формализованными методами доказательства правильности умозаключения в исчислении предикатов.
2. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
2.1. Метод семантических таблиц
В исчислении предикатов, так же, как и исчислении высказываний общезначимость формулы можно доказать, методом семантических таблиц. Основой для построения семантических таблиц является атомарная семантическая таблица (табл. 4). Докажем общезначимость формулы
|
|
|
|
|
Формула является общезначимой, так как соответствующая ей семантическая таблица, построенная в предположении ложности формулы, является противоречивой.
Таблица 1
Атомарная таблица
![]() | ![]() | ||
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
Построим семантическую таблицу для формулы .
|
|
|
|
Данная семантическая таблица не является противоречивой, поскольку функция истинна при каком-то одном значении
из области определения функции
и та же функция ложна при каком-то другом значении
. Для всех же значений
условие противоречивости не выполняется.
Далее приведена семантическиая таблица для общезначимой формулы.
|
|
|
|
|
|
|
| |
2.2. Принцип резолюции
2.2.1. Алгоритм унификации
Правило резолюций предполагает нахождение в дизъюнкте литерала, контрарного литералу в другом дизъюнкте. Если в логике высказываний нахождение контрарных пар не вызывает трудностей, то для логики предикатов сделать это гораздо сложнее, так как дизъюнкты могут содержать функции, переменные и константы. В этом случае следует использовать алгоритм унификации.
Действительно, если мы имеем дизъюнкты типа:
;
, то резольвента может быть получена только после применения к
подстановки
вместо
.
В этом случае имеем: ;
.
Резольвентой этих двух дизъюнктов будет дизъюнкт
.
А если взять два дизъюнкта
,
,
то никакая подстановка в контрарную пару неприменима и никакая резольвента не может быть образована.
Прежде чем переходить к рассмотрению вопроса об унификации, введем некоторые понятия.
Пусть задано множество дизъюнктов
.
В этом множестве дизъюнктов и
- составляющие дизъюнкты.
А выражения ;
;
- называются литералами.
Термы литерала могут быть переменными, постоянными или выражениями, состоящими из функциональных букв и термов. Например, для литерала имеем, что
- переменная,
- сложный терм,
- постоянная.
Подстановочный частный случай литерала получается при подстановке в литералы термов вместо переменных. Пусть имеем литерал . Его частными случаями будут:
;
;
;
- константный (фундаментальный) случай литерала или атом, так как нет переменных.
Подстановки, примененные в рассматриваемом примере, можно обозначать следующим образом:
, здесь
подставляется вместо
, а
вместо
;
;
А теперь переходим собственно к алгоритму унификации.
Пусть имеем дизъюнкты типа:
=
;
=
.
К этим дизъюнктам резольвента может быть получена только после применения к подстановки
вместо
и подстановки
вместо
. Для этого необходимо:
1. Проверить, можно ли применить резолюцию к и
2. Найти подходящую подстановку, допускающую резолюцию.
Такую проверку и вычисление подстановки осуществляет алгоритм унификации.
Прежде, чем перейти к формальному описанию алгоритма унификации, дадим некоторые определения.
Подстановкой называется конечное множество вида , где
- терм, а
- переменная, отличная от
(
).
Подстановка называется фундаментальной, если все (
) являются фундаментальными термами.
Пусть - подстановка, а
- литерал (выражение). Тогда
называется примером выражения
, полученного заменой всех вхождений в
переменной
(
) на вхождение терма
.
называется фундаментальным примером выражения
, если
- фундаментальная подстановка.
Рассмотрим применение алгоритма унификации к заданным дизъюнктам и
.
Шаг 1. Необходимо сравнивать соответствующие термы дизъюнктов слева направо, пока не встретятся первые термы с одинаковыми функциональными символами, которые различаются переменными или константами. Создается множество, состоящее из этих термов, называемое множеством рассогласования.
Для и
первым множеством рассогласования будет
.
Шаг 2. Для каждой переменной множества рассогласования проверяем, встречается ли она в каком-нибудь другом терме этого же множества.
Шаг 3. Если на предыдущем шаге получен положительный ответ, то дизъюнкты не унифицируемы, и применение алгоритма оканчивается неудачей. Если ответ отрицательный, осуществляем подстановку вместо переменной из множества рассогласования терма из этого множества. Для и
применяем подстановку
={x/g(c)}. В результате
и
принимают вид
=
;
.
Шаг 4. Продолжаем двигаться направо, снова выполняя пункты 1-3. Новым множеством рассогласования будет . Применение подстановки
дает
=
;
.
После этих преобразований можно применить резолюцию к дизъюнктам и
.
Прежде, чем переходить к формальному описанию алгоритма унификации, дадим более формализованные определения, характеризующие его работу.
Пусть - множество дизъюнктов. Множество
- первые слева термы, стоящие на соответствующих местах в дизъюнктах
, среди которых есть, по крайней мере, два различных} называется множеством рассогласования
.
Так, например, для для множества
первыми слева различными термами в и
являются
и
. Таким образом, первым множеством рассогласования будет
. После применения подстановки
возникает несоответствие между термами
и
. Следующее множество рассогласования
. В конце концов, алгоритм заканчивает свою работу, выдавая в качестве ответа множество подстановок, позволяющих унифицировать
и
, и затем применить к ним правило резолюции для исчисления высказываний. Это Множество подстановок называется общим унификатором (ОУ) дизъюнктов.
Например, для =
и
=
общим унификатором является множество
.
Если дизъюнкты не могут быть унифицируемы, алгоритм останавливается на шаге 2
Унификатор называется наиболее общим унификатором (НОУ), если для любого другого унификатора
существует подстановка
такая, что
.
Для множества термов или атомов наиболее общий унификатор определяется единственным способом.
Рассмотрим механизм нахождения НОУ на примере.
Пусть имеем исходное множество , где
- константа. Унификатором для
является подстановка
.
Если подстановку применить к множеству
, получатся следующие основные примеры:
;
Если теперь положить и
, то можно показать, что
.
Подстановка унифицирует рассматриваемые атомы. Следовательно,
является наиболее общим унификатором.
Алгоритм унификации в формальном описании выглядит так. Пусть - множество атомарных формул.
Шаг 0. (тождественная подстановка).
Шаг k. Мы уже построили подстановки .
Шаг (рекурсия).
1) Если =
= … =
,
алгоритм заканчивает работу, выдавая в качестве наиболее общего унификатора.
2). Если
для некоторых
, тогда
а) строим множество рассогласования
;
б) осуществляем проверку вхождений (ПВ) переменных, то есть, проверяем для каждой переменной , содержится ли она в каком–либо другом элементе
.
Если ПВ дает положительный результат, процесс останавливается и делается заключение, что множество не
унифицируемо. Если множество вообще не содержит переменных, ПВ также дает положительный ответ. Если
содержит переменную
и терм
, и ПВ дает отрицательный ответ, полагаем
, избавляясь таким образом от несоответствия между
в термах
и
.
Шаг . Повторяем шаги
,
для
.
Теорема(Теорема Дж. А. Робинсона) Применение алгоритма унификации к множеству атомов дает следующий результат:
Если унифицируемо, то алгоритм останавливается, выдавая в качестве ответа НОУ множества
;
Если не унифицируемо, то алгоритм останавливается, объявляя, что унификатора не существует.
Воспользуемся теоремами 1 и 2 для определения унифицируемости.
Пример 1. (Множество унифицируемо)
Пусть дано множество формул:
.
Определить, унифицируемо ли множество . Если да, найти НОУ.
Шаг 0: Полагаем .
Шаг 1: .
.
ПВ негативна.
Полагаем .
Шаг 2: .
.
ПВ негативна.
Полагаем .
Шаг 3: .
.
ПВ негативна.
Полагаем .
Шаг 4:
Ø.
Вывод: унифицируемо и его НОУ имеет вид