Математическая логика
Модальная логика
1977: Амир Пнюэли публикует работу о темпоральной логике. Вопрос: как доказать, что программа НИКОГДА не зайдёт в дедлок? Классическая логика не справляется - в ней нет понятия "всегда" и "когда-нибудь". Классическая логика видит снимок: истинно или ложно сейчас. Темпоральная логика видит фильм: что происходит на каждом шаге бесконечного выполнения. За это Пнюэли получит премию Тьюринга в 1996 году.
- **Верификация протоколов:** NASA использует model checking (SPIN, LTL) для верификации бортового ПО - ошибки в протоколах связи стоят миссий, а не просто времени разработчика.
- **Аппаратная верификация:** После ошибки FDIV в Pentium (1994, $475 млн убытков) Intel перешёл на формальную верификацию процессорных блоков с помощью CTL model checking.
- **Эпистемическая логика в криптографии:** Протоколы безопасности (TLS, Kerberos) формально верифицируются через логику знания - что знает атакующий, что знает сервер, какие миры доступны каждому агенту.
Предварительные знания
- Пропозициональная логика - операторы AND, OR, NOT, импликация
- Предикатная логика - кванторы, формулы, интерпретации
- Теория моделей - понятие структуры, истинность формулы в модели (ml-11)
Оператор необходимости []
Классическая логика описывает, что **есть** - истинно или ложно. Модальная логика описывает, что **должно быть** или **могло бы быть**. Оператор **необходимости** [] (читается "box" или "квадрат"): []phi означает "phi истинно во всех возможных мирах, доступных из текущего". Если phi - закон природы, то []phi; если phi - случайный факт, то phi может быть истинно, но []phi - нет.
**Аксиома K** (минимальная система): [](p -> q) -> ([]p -> []q). Необходимость дистрибутивна по импликации: если необходимо, что p влечёт q, и необходимо p, то необходимо q. Все расширения модальной логики содержат K как базу.
В системе **S5** необходимость совпадает с истинностью во всех мирах без ограничений: []p <-> p истинно во всех мирах. Математические теоремы - необходимо истинны в S5: в любом возможном мире 2+2=4. Случайный факт "Наполеон проиграл при Ватерлоо" - истинен в нашем мире, но не в каждом возможном.
**История:** Модальная логика восходит к Аристотелю. C.I. Льюис ввёл первую современную систему строгой импликации в "A Survey of Symbolic Logic" (1918), а семейство S1-S5 формализовал вместе с Лангфордом в "Symbolic Logic" (1932). Современная семантика возможных миров дана Солом Крипке в 1959-1963 годах - см. следующий концепт.
В системе S5 формула []p означает:
Оператор возможности <> и двойственность
Оператор **возможности** <> (читается "diamond" или "ромб"): <>phi означает "phi истинно хотя бы в одном возможном мире, доступном из текущего". Формально: <>phi = -[]-phi. Возможность - это двойник необходимости, как существование - двойник всеобщности в логике предикатов.
**Двойственность Box и Diamond:** - []phi <-> -<>-phi (необходимость = невозможность отрицания) - <>phi <-> -[]-phi (возможность = не-необходимость отрицания) Аналогия: (для всех x) <-> (не существует x, что не), то есть всеобщность и существование - двойники.
**Эпистемическая логика** (Jaakko Hintikka, "Knowledge and Belief", 1962) - первое систематическое применение семантики возможных миров к знанию. []_i phi читается "агент i знает phi". Аксиома знания: []_i phi -> phi (нельзя знать ложь). Эта система оказалась фундаментом для теории игр, криптографии и верификации протоколов.
**Деонтическая логика** (логика обязательства): []phi = "phi обязательно", <>phi = "phi разрешено". Применяется в юридических системах и этике. Парадокс Росса (Ross 1941): из "отправь письмо" выводится "отправь письмо или сожги его" - проблема для стандартной деонтической логики, предмет активных исследований.
Как оператор <>phi (Diamond) связан с []phi (Box)?
Семантика Крипке и возможные миры
В 1959 году 18-летний Саул Крипке опубликовал статью с полной семантикой для модальной логики. **Крипке-структура** (или Крипке-фрейм) - это тройка (W, R, V), где W - непустое множество возможных миров, R ⊆ W x W - отношение доступности ("из мира w доступен мир v"), V: Prop x W -> {true, false} - функция оценки атомарных формул.
**Соответствие аксиом и свойств отношения R:** - Аксиома T: []p -> p <-> R рефлексивно (каждый мир доступен из себя) - Аксиома 4: []p -> [][]p <-> R транзитивно - Аксиома B: p -> []<>p <-> R симметрично - Аксиома 5: <>p -> []<>p <-> R евклидово (из wRv и wRu следует vRu) S5 = K + T + 4 + 5 <-> R является отношением эквивалентности (рефл. + симм. + транз.)
Это соответствие - главный результат Крипке: **теорема о полноте** для каждой стандартной системы. Например, формула phi общезначима в S4 (истинна в любом рефлексивном и транзитивном фрейме) тогда и только тогда, когда phi выводима в аксиоматике S4. Это связывает синтаксис (вывод) и семантику (истинность в структурах).
**Применения семантики Крипке:** логика доказуемости GL (Лёб, 1955; Крипке-семантика через конечные частичные порядки), интуиционистская логика (фреймы - частичные порядки, монотонная оценка), логики знания в многоагентных системах (каждый агент имеет своё отношение доступности R_i).
Какое свойство отношения доступности R соответствует системе S5?
Темпоральная логика: LTL и CTL
В 1977 году Амир Пнюэли предложил **линейную темпоральную логику (LTL)** для рассуждений о поведении реактивных систем во времени. LTL расширяет пропозициональную логику четырьмя операторами: **X** (next - на следующем шаге), **F** (finally/eventually - когда-нибудь), **G** (globally/always - всегда), **U** (until - до тех пор пока).
**CTL (Computation Tree Logic)** предложена Кларком и Эмерсоном в 1981 году. В отличие от LTL (линейное время - фиксированный путь), CTL работает с **деревом вычислений** - все возможные пути из текущего состояния. CTL добавляет кванторы по путям: **A** (all paths) и **E** (exists a path). Операторы пишутся парами: AG, AF, EG, EF, AX, EX, AU, EU.
**Премия Тьюринга 2007:** Эдмунд Кларк, Аллен Эмерсон и Жозеф Сифакис получили её за создание **model checking** - автоматической верификации конечных систем. Инструменты: SPIN (LTL, Bell Labs), NuSMV (CTL+LTL), PRISM (вероятностный MC). Intel использует model checking для верификации аппаратных протоколов с 1990-х - после ошибки в Pentium FDIV (1994), стоившей компании 475 млн долларов.
LTL и CTL - это одно и то же, просто разные обозначения темпоральной логики
LTL и CTL принципиально разные: LTL работает с линейными путями, CTL - с деревьями вычислений. Они несравнимы по выразительности: есть свойства, выразимые только в LTL (G F p), и свойства, выразимые только в CTL (AG EF restart).
Кажется, что оба языка говорят "о времени" - значит должны быть одинаковыми. Но способ квантификации по путям кардинально меняет смысл: LTL-формула проверяется на одном конкретном пути, CTL-формула - на всём дереве возможных вычислений сразу.
В чём принципиальная разница между LTL и CTL?
Ключевые идеи
- **Модальные операторы:** [] (необходимо - во всех доступных мирах) и <> (возможно - хотя бы в одном). Они двойственны: <>phi = -[]-phi. Разные аксиомы (K, T, 4, B, 5) дают системы K, T, S4, S5 с разными свойствами отношения доступности.
- **Семантика Крипке (1963):** Фрейм (W, R, V) - множество миров, отношение доступности, оценка атомов. Аксиомы соответствуют свойствам R: T <-> рефлексивность, 4 <-> транзитивность, S5 <-> R является отношением эквивалентности.
- **LTL vs CTL:** LTL рассуждает о поведении на линейных путях (G, F, X, U), CTL квантифицирует по путям в дереве вычислений (AG, EF, ...). Они несравнимы по выразительности. Model checking - автоматическая верификация: CTL за O(|S|*|phi|), LTL - PSPACE.
Связанные темы
Модальная логика пронизывает и математику, и computer science:
- Теория моделей и теорема полноты — Семантика Крипке - частный случай общей теории моделей; теорема полноты Крипке аналогична теореме Гёделя
- Алгоритмы и верификация — Model checking - алгоритмическая задача на графах: обход дерева состояний, проверка LTL/CTL свойств
Вопросы для размышления
- Если свобода воли принимается за истину, какая модальная система лучше её описывает - S4 (вложенная необходимость) или S5 (все миры равнодоступны)? Почему детерминизм соответствовал бы системе с пустым отношением доступности?
- Аксиома знания: []_i phi -> phi (нельзя знать ложь). Что случится с логикой, если заменить знание на веру (belief)? Какую аксиому придётся убрать, и как это меняет структуру фреймов?
- Свойство liveness в LTL: AF phi (рано или поздно phi). Почему его сложнее проверить, чем safety (AG -bad)? Как связана эта сложность с понятием справедливости (fairness) в планировании процессов?