Математическая логика

Формальные системы и аксиоматики

1900. Париж. Давид Гильберт публикует 23 задачи для математики XX века. Вторая: доказать непротиворечивость арифметики. 1931: Курт Гёдель доказывает, что это невозможно изнутри самой системы. Программа Гильберта рухнула. Но из её руин выросло кое-что неожиданное: CompCert - компилятор C, доказанно корректный, который используется в авиации и ядерной промышленности. Формальные системы оказались мощнее, чем думал сам Гильберт.

  • **CompCert (Xavier Leroy, INRIA)**: формально верифицированный компилятор C - каждый шаг трансляции доказан в Coq. Используется в авиации и ядерной промышленности, где баг компилятора - катастрофа
  • **TLA+ в Amazon**: формальная спецификация распределённых систем S3, DynamoDB, EBS. До внедрения - один найденный баг в distributed consensus стоил бы миллиарды. После: 17 критических багов обнаружены до деплоя
  • **Z3 SMT solver (Microsoft Research)**: формальная верификация программ через автоматический поиск противоречий. Используется в слоях безопасности GitHub Copilot и AWS
  • **seL4**: операционная система с доказанной безопасностью через Isabelle/HOL. Используется в военных беспилотниках - первый OS-kernel с machine-checked correctness proof

Аксиомы и аксиоматический метод

Формальная система состоит из трёх компонентов: алфавита (символов), грамматики (правил построения формул) и аксиом с правилами вывода. Доказательство - конечная последовательность формул, где каждая либо является аксиомой, либо получена из предыдущих по правилам вывода. Ключевое слово: конечная. Доказательство должно быть проверяемым механически - именно это делают Coq, Lean4, Isabelle.

Важно различать синтаксис (формальная выводимость |-) и семантику (логическая следуемость |=). Теорема о полноте Гёделя утверждает их совпадение для логики первого порядка: |- ф тогда и только тогда, когда |= ф. Это содержательный результат - синтаксис и семантика - разные миры, и их совпадение требует доказательства.

Геометрия Евклида: 5 аксиом порождают всю школьную геометрию. Три аксиомы Колмогорова определяют всю теорию вероятностей. Аксиоматический метод - это игра: выбираем правила, дальше всё следует из них. CompCert (Xavier Leroy, INRIA) - компилятор C, доказанно корректный в Coq. Используется в авиации и ядерной промышленности, где баг компилятора равен катастрофе.

**TLA+ в Amazon:** формальная спецификация распределённых систем S3, DynamoDB, EBS. До внедрения - один найденный баг в distributed consensus стоил бы миллиарды. После: 17 критических багов обнаружены до деплоя. Формальная логика - это не академия. Это страховой полис на сотни миллиардов долларов инфраструктуры.

Что является доказательством в формальной системе?

Дедукция и теорема о дедукции

Дедукция - вывод следствий из посылок по правилам системы. Теорема о дедукции - мета-теорема, связывающая условный и безусловный вывод: гамма, ф |- пс тогда и только тогда, когда гамма |- ф -> пс. Это мощный инструмент: вместо доказательства «при гипотезе ф получаем пс» можно сразу доказывать импликацию «ф -> пс» как объект формальной системы.

Теорема о дедукции действует в большинстве пропозициональных и предикатных систем, но требует осторожности: в предикатной логике она не применяется к формулам, содержащим свободные переменные, связанные правилами обобщения. Это не баг - это фундаментальное ограничение, проявляющееся при работе с кванторами.

Теорема о дедукции - это мета-теорема: утверждение о формальной системе, а не внутри неё. Большинство таких мета-теорем доказывается индукцией по длине вывода - классическое применение математической индукции к синтаксическим объектам.

Теорема о дедукции утверждает: Гамма, ф |- пс равносильно...

Непротиворечивость и полнота

Система называется непротиворечивой, если в ней нельзя вывести одновременно ф и не-ф. Полной - если любая истинная формула доказуема. Эти два свойства были целью программы Гильберта. Гёдель в 1931 году показал: система, достаточно богатая чтобы выражать арифметику, либо противоречива, либо неполна. Выбора нет. Это не баг формальных систем - это фундаментальный предел.

Непротиворечивая теория обязательно полна

Гёдель показал: достаточно богатые теории (включающие арифметику) не могут быть одновременно непротиворечивыми и синтаксически полными.

Непротиворечивость - это отсутствие противоречий (слабое требование). Полнота - способность разрешать любое утверждение (сильное требование). Первая теорема Гёделя: в каждой непротиворечивой системе, достаточно богатой для арифметики, есть истинные утверждения, которые нельзя ни доказать, ни опровергнуть изнутри.

Синтаксическая непротиворечивость означает:

Система Гильберта и соответствие Карри-Говарда

Система Гильберта - это стиль формальных систем с минимальным набором правил вывода (обычно только modus ponens) и богатым набором аксиомных схем. Альтернативы: натуральный вывод Генцена (удобнее для рассуждений) и секвентное исчисление (мощнее для метатеории и автоматического доказательства). Именно секвентное исчисление лежит в основе Z3 SMT solver - того самого, что верифицирует программы в GitHub Copilot safety layer.

Соответствие Карри-Говарда - одно из глубочайших открытий XX века. Логика и теория типов - это одно и то же, описанное разными языками. Agda, Coq и Lean4 используют это для машинной верификации математических теорем. Когда Lean4 компилирует корректный тип - он верифицирует доказательство. seL4 - операционная система с доказанной безопасностью через Isabelle/HOL. Используется в военных беспилотниках - первый OS-kernel с machine-checked correctness proof.

Программа Гильберта потерпела поражение в 1931 году. Но провал породил неожиданный плод: осознание того, что формальные системы - не только математика. Это вычисления. Curry-Howard сделал это точным: доказательство есть программа, тип есть формула. Lean4 содержит более 100 000 машинно-верифицированных теорем. За каждой - вариант той же структуры, которую изучает этот урок.

Что утверждает соответствие Карри-Говарда?

Ключевые идеи

  • Формальная система = алфавит + грамматика + аксиомы + правила вывода. Доказательство - конечная последовательность формул, механически проверяемая
  • Непротиворечивость: нельзя вывести ф и не-ф одновременно. Иначе - explosion, и всё выводимо
  • Теорема о дедукции: Гамма, ф |- пс тогда и только тогда, когда Гамма |- ф -> пс
  • Первая теорема Гёделя: богатые непротиворечивые теории неполны - в них есть истинные, но недоказуемые утверждения
  • Соответствие Карри-Говарда: доказательство = программа, тип = формула. CompCert, seL4, Lean4 - это оно в действии

К теоремам Гёделя

Программа Гильберта потерпела поражение в 1931 году, когда Гёдель доказал два фундаментальных ограничения. Следующий урок посвящён теореме о полноте - положительному результату, который предшествовал крушению.

  • Теоремы Гёделя о неполноте — Прямое следствие анализа формальных систем - невозможность полноты для богатых теорий
  • Неразрешимость и полнота — Алгоритмические следствия теорем Гёделя - связь с проблемой остановки

Вопросы для размышления

  • Почему математики до XX века обходились без формальных систем? Что изменилось с открытием парадоксов теории множеств?
  • Если доказательство - это программа, то что такое «баг» с логической точки зрения?
  • Amazon использует TLA+ и находит баги в DynamoDB до деплоя. Это формальная верификация или просто тестирование? В чём разница?

Связанные уроки

  • ml-03 — Предикатная логика - язык, на котором строятся формальные системы
  • ml-05 — Теорема о полноте Гёделя - следующий результат после формальных систем
  • dm-04 — Методы доказательств - практика того, что формальные системы описывают в теории
  • dm-03 — Предикатная логика как живой пример аксиоматической системы
  • fl-18-turing-machine
Формальные системы и аксиоматики

0

1

Войти