
- •6. Модальная и темпоральная логикИ
- •6.1. Синтаксис модальной логики
- •Дополнительные логические связки
- •Приоритеты операций
- •Смысловые значения модальностей
- •6.2. Семантика модальной логики
- •Модели Крипке
- •Упражнение 1
- •Упражнение 2
- •Семантика темпоральной логики
- •Упражнение 3
- •Тавтологии
- •Упражнение 4
- •Условные тавтологии
- •Упражнение 5
- •6.3. Алгоритмическая логика Хоара
- •Пропозициональная динамическая логика
- •Семантика пропозициональной динамической логики
- •Аксиомы pdl
- •Правила вывода
- •Логика Хоара
- •Корректность и полнота систем Гильберта
- •Свойства шкал Крипке
- •Алгоритм Салквиста
- •Пример 2
- •Пример 3
- •Пример 6
- •6.5. Темпоральная логика
- •Система Гильберта для темпоральной логики
- •Линейные потоки времени
- •Стандартный перевод
- •Завтра и вчера
- •Выбор операторов
- •7. Алгоритмы и рекурсивные функции
- •7.1. Частично рекурсивные функции
- •Простейшие функции
- •Пример 1
- •Оператор примитивной рекурсии
- •Пример 2
- •Пример 4
- •Пример 5
- •Пример 6
- •Оператор минимизации
- •Пример 7
- •7.2. Машины Тьюринга
- •Пример 1
- •Пример 2
- •Пример 3
- •Упражнение
- •7.3. Вычислительная сложность
- •Труднорешаемые и np-полные задачи
- •6. Модальная и темпоральная логикИ 49
- •7. Алгоритмы и рекурсивные функции 65
Алгоритм Салквиста
Вход: Формула А, где А – несвязная.
Выход: Свойство шкал, соответствующее А.
Действия:
-
Выделить негативные и строго позитивные части формулы А.
-
Нарисовать схему, показывающую, что означает выполнение А в мире t; включить имена миров (например, t1, t2, …), провести между ними рёбра отношения R и отметить миры, на которых верны строго позитивные формулы
…
р.
-
Определить ленивую оценку, делающую строго позитивные оценки истинными в их мирах.
-
Для перевода А в А*(t) сделать следующее:
-
поставить впереди формулы А*(t) кванторы s, где s пробегает имена миров, соответствующих ромбикам ;
-
найти строго позитивные подформулы и заменить их на 1;
-
заменить все оставшиеся предикаты р*(х), q*(y), …, соответствующие атомам;
-
произвести упрощения, если можно.
В результате работы алгоритма Салквиста получаем некоторую формулу (t), истинность которой означает, что формула А верна в шкале (W, R) в некотором мире t относительно некоторой оценки.
Значит, формула А будет тавтологией тогда и только тогда, когда (W, R) удовлетворяет формуле t(t) (как модель языка первого порядка, состоящего из единственного бинарного предикатного символа R).
Тем самым, теорема доказана.
Замечание.
Ленивая оценка определяет формулы р*(х)
следующим образом: Рассматриваем
подформулы р,
р,
р,
…, для которых существуют миры среди
t,
t1,
t2,
… . Пути к соответствующим мирам будут
давать формулы:
р*(х) = (x = t) R(t, x) x1(R(t, x1) & R(x1, x)) …
x1x2…xm(R(t, x1) & R(x1, x2) & … & R(xm, x)).
Пример 2
Найдём
формулу (t)
для формулы А
= (р
р). С этой целью представим А как
р
& р.
Делаем 1 шаг перевода А*(t) =
р*(t)
& р*(t).
Заменяем строго позитивную формулу
р*(t)
на 1, ибо ленивая оценка делает её
истинной. Поскольку
р*(t)
даёт ленивое определение р*(х) = R(t, x), то
А*()=1 & р*(t)=R(t,
t). Получаем: (t)
=
= R(t, t). Если А – тавтология, то (W, R) |=
t(t).
Следовательно, (W,R) |= tR(t,
t).
Пример 3
Пусть
А
= (р
р).
Легко видеть, что А =
р
&
р.
Отсюда А*(t) =
р*(t)
&
р*(t).
Оценка
р*(t)
= 1 даёт ленивое определение
р*(х)
= R(t, x). Ленивая оценка превращает формулу
р*(t)
в истинную:
x(R(t,
x)
р*(x))
= xy(R(t,
x)
(R(x, y)
р*(y))).
Следовательно, (t) = xy(R(t, x) & R(x, y) R(t, y)). Утверждение (W, R) |= (t) превращается в
(W, R) |= txy(R(t, x) & R(x, y) R(t, y)).
Пример 4
Рассмотрим
формулу р
р.
Она эквивалентна формуле (р
&
р).
Получаем формулу Салквиста ([р]
& [
p]).
Положим А = [р]
& [
p].
Стандартный перевод равен:
А*(t)
= p*(t)
& t1(R(t,
t1)
&
p*(t1)).
Переводим t1 в начало формулы:
А*(t)
= t1(p*(t)
& R(t, t1)
&
p*(t1)).
Из
условия истинности
p*(t1)
получаем ленивое определение: р*(х)
=R(t1,
x). Следовательно, А*(t) = t1(R(t1,
t) & R(t, t1)).
Формула А
будет тавтологией относительно (W, R)
тогда и только тогда, когда
(W, R) |= tt1(R(t1, t) & R(t, t1)).
Получаем, что отношение R симметрично:
tt1(R(t, t1) R(t1, t)).
Пример 5
Пусть
А – формула, рассмотренная при
доказательстве теоремы Салквиста.
Найдём А*(t) в случае, когда с =
p
q:
A
= (q
& ([(p
q)] & [
p]))
& [
p].
Мы получили формулу:
А*(t)
= R(t,
t1)
& R(t1,
t2)
& R(t1,
t3)
& R(t3,
t4)
& R(t,
t5)
& R(t5,
t6)
& q*(t2)
& c*(t3)
&
p*(t4)
&
p*(t6).
Ленивое
определение получаем из условия:
p*(t4)
&
p*(t6)
= 1. Мы установили, что
р*(х) = y(R(t4, y) & R(y, x)) R(t6, x);
q*(x) = (x = t2).
Поставив с*(t3)
=
p*(t3)
q*(t3) в формулу
для А*(t), получим:
А*(t) = R(t, t1) & R(t1,
t2) & R(t1, t3) & R(t3,
t4) & R(t, t5) & R(t5, t6)
& (p*(t3)
q*(t3));
(t) = x1x2x3x4x5x6(R(t, t1) & R(t1, t2) & R(t1, t3) & R(t3, t4) & R(t, t5) & R(t5, t6) & (x(R(t3, x) p*(x)) (t3 = t2)) = x1x2x3x4x5x6(R(t, t1) & R(t1, t2) & R(t1, t3) & R(t3, t4) & R(t, t5) & R(t5, t6) & (x(R(t3, x) y(R(t4, y) & R(y, x)) R(t6, x)) (t3 = t2))