
- •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
Упражнение 5
Доказать,
что если R
W
W – рефлексивно, то
А
А – тавтология относительно шкалы (W,
R) для любой формулы А.
Формула
(А
В)
(
А
В)
является тавтологией относительно
класса всех шкал Крипке. Такие формулы
называют естественно
истинными.
Формула
А
А верна относительно некоторого класса
шкал. Такие формулы называются условно
истинными.
6.3. Алгоритмическая логика Хоара
Интуитивно программа понимается как набор операторов, переводящих машину из одних состояний в другие. Хоар предложил для отладки и верификации программ рассматривать формулы, описывающие состояния машины перед выполнением (предусловие) и после выполнения (постусловие) программы. Программе сопоставлялась запись: {А}{В}, означающая, что предусловие описывается формулой А, а постусловие формулой В. Пратт предложил запись: А []В – если перед выполнением программы состояние машины описывается формулой А, то после выполнения верна формула В. Это позволило описывать вычислительные процессы, состоящие из комплексов программ, с помощью модальной логики, рассматривая каждую программу как модальность.
Пропозициональная динамическая логика
Пусть 0 – произвольное множество. Его элементы называются базисными программами. Предположим, что 0 – такое множество слов, что вместе с любыми 1, 2 оно содержит:
-
1 2 (неопределённый выбор одной из программ 1 или 2);
-
1 ; 2 (выполнение 1 ,затем 2);
-
1* (выполнение 1 конечное, возможно нулевое, количество раз);
-
1 2 (одновременное выполнение программ 1 или 2).
Элементы из будем называть программами. Рассмотрим атомы из Р как простые высказывания о состояниях машины, в которую загружаются программы. Для каждой программы обозначим через [] соответствующую ей модальность. Определим формулы пропозициональной динамической логики PDL по индукции:
-
атомы р Р – формулы;
-
А & В, А, []А – формулы для любых формул А и В, и элемента ;
-
все формулы PDL составляются с помощью правил 1 – 2.
Введём обозначение: <>А как сокращение для []А.
Для каждой формулы А определим программу: А? , тестирующую, верна ли формула А. Эта программа заканчивает работу, если формула А верна, и зависает (аварийно завершает работу), если нет. Эта программа вводится с целью интерпретации оператора
if (A) then 1 else 2
как программы
(А?; 1) ((А)? ; 2) .
Семантика пропозициональной динамической логики
Пусть 0 – множество базисных программ, – множество всех программ, Р – атомные формулы, F(P) – все формулы, W – множество состояний машины, в которой могут работать программы . Для каждого определена модальность []. Стало быть, мы должны каждому поставить в соответствие некоторое отношение доступности R W W.
Шкала Крипке (или система переходов) будет состоять из пары: (W, (R)), где W – множество состояний, а R – отношения R W W.
Программу можно интерпретировать как множество пар (x, y) R таких, что после выполнения программы машина из состояния х перейдёт в состояние y. Каждому атому p P ставится в соответствие подмножество h(p) W состояний, при которых высказывание р верно.
Интерпретацией называется тройка M = (W, (R), h), состоящая из шкалы Крипке и оценки h : P P(W), удовлетворяющих соотношениям:
-
R = R R;
-
R ; = R R;
-
;
-
RA? = {(x, x) : x W и M, x |= A}.
Здесь R* – наименьшее рефлексивное транзитивное отношение, содержащее R. Расширим h на множество формул F(P), полагая t h(A), если и только если M, t |= A. Получим соотношения:
-
h(A B) = h(A) h(B);
-
h(A) = W \ h(A);
-
h(<>A) = {t W : (t, u) R для некоторого u h(A)}.
В некоторых случаях под семантикой логики PDL понимают шкалу с расширенной на F(P) оценкой, удовлетворяющие соотношениям 1 – 7.