Вопросы к зачёту по курсу «Математические модели вычислений», 2022 год, осенний семестр
- Методы верификации программ в целом. Рецензирование. Тестирование.
- Методы верификации программ в целом. Статический анализ и формальная верификация.
- Фундаментальные модели вычислений. Конечные автоматы, магазинные автоматы. Леммы о накачке (формулировки).
- Формальные языки и их связь с вычислениями. Иерархия Хомского. Леммы о накачке (формулировки).
- Фундаментальные модели вычислений. Понятие эквивалентности фундаментальных моделей вычислений. Машина Тьюринга. Машины с регистрами.
- Фундаментальные модели вычислений. Понятие эквивалентности фундаментальных моделей вычислений. Частично-рекурсивные функции (μ-рекурсивные функции Клини).
- Фундаментальные модели вычислений. Понятие эквивалентности фундаментальных моделей вычислений. Нормальные алгорифмы Маркова.
- Фундаментальные модели вычислений. Понятие эквивалентности фундаментальных моделей вычислений. λ-исчисление.
- Фундаментальные модели вычислений. Понятие эквивалентности фундаментальных моделей вычислений. Клеточные автоматы, комбинаторная логика.
- Понятие разрешимости. Теорема Райса о неразрешимости нетривиальных свойств. Схема доказательства.
- Понятие разрешимости. Проблема останова. Схема доказательства неразрешимости проблемы останова.
- Определение формальной системы. Пример формальной системы (исчисление предикатов или исчисление высказываний). Полнота, непротиворечивость и разрешимость формальных систем.
- Полнота, непротиворечивость и разрешимость формальных систем. Первая и вторая теоремы Гёделя о неполноте (формулировки, «физический смысл»). Схема доказательства первой теоремы Гёделя о неполноте.
- Метод Model checking. Основные принципы.
- Темпоральные логики LTL (Linear Time Logic), CTL (Computational Tree Logic).
- Метод SLAM (Software Model Checking via Counterexample Guided Abstraction Refinement). Основные принципы, схема метода.
- Нетипизированное λ-исчисление и λ-исчисление с простыми типами. Пример нетипизированного терма, редукция которого не завершается. Парадокс Карри.
- Определения методом естественной дедукции. Правила вывода λ-исчисления с простыми типами в терминах естественной дедукции. Пустой тип, тип из одного элемента и тип из двух элементов, определённые методом естественной дедукции.
- Определения методом естественной дедукции. Типы суммы и произведения, определённые методом естественной дедукции.
- Свойства систем редукции: конфлюэнтность, нормализация, сильная нормализация. Соответствие Карри-Говарда для просто типизированного λ-исчисления.
- Эквивалентность термов. α, β и η-эквивалентность.
- Постановки задач анализа термов в системах типов. Метапеременные и унификация.
- λ-куб Барендрегта. Расширения типизированного λ-исчисления. Полиморфное λ-исчисление (System F).
- λ-куб Барендрегта. Расширения типизированного λ-исчисления. Полиморфное λ-исчисление с конструкторами типов (System F_omega).
- Кодирование типов данных по термам удаления в полиморфном λ-исчислении.
- λ-куб Барендрегта. Расширения типизированного λ-исчисления. λ-исчисление с (простыми) зависимыми типами.
- Исчисление конструкций. Зависимые произведения. Соответствие Карри-Говарда для зависимых произведений.
- Расширенное исчисление конструкций. Зависимые суммы. Соответствие Карри-Говарда для зависимых сумм.
- Универсумы и уровни универсумов.
- Индуктивные типы. Примеры. Зависимое удаление индуктивных типов. Определение через набор конструкторов.
- Операторные схемы программ. Схемы Янова. Эквивалентность схем Янова (определения и формулировки теорем).
- Типы идентичности (равенства). Понятие о гомотопической теории типов. Функциональная экстензиональность. Аксиома унивалентности.
- Самоинтерпретация системы F_omega. Диагонализация универсального интерпретатора для функций на натуральных числах. Отличия для типизированного случая. Поверхностная (shallow) схема самоинтерпретации.
Литература
Дополнительные источники, в том числе ссылки на электронные ресурсы, приведены в презентациях.
- Б. Пирс. Типы в языках программирования. 2010
- Henk Barendregt, Wil Dekkers, Richard Statman. Lambda Calculus With Types. Cambridge University Press, 2010.
- М. Кривчиков. Формальные модели и верификация свойств программ с использованием промежуточного представления. Глава 1, раздел 2.1, подраздел 3.2.6.
- Васенин В. А., Кривчиков М. А. Формальные модели программ и языков программирования. Часть 1. Библиографический обзор 1930—1989 гг // Программная инженерия. — 2015. — № 5. — С. 10–19.
- Васенин В. А., Кривчиков М. А. Формальные модели программ и языков программирования. Часть 2. Современное состояние исследований // Программная инженерия. — 2015. — № 6. — С. 24–33.
- Пентус А. Е., Пентус М. Р. Теория формальных языков: Учебное пособие. — М.: Изд-во ЦПИ при механико-математическом ф-те МГУ, 2004. — 80 с.
- Homotopy Type Theory: Univalent Foundations of Mathematics. — Princeton: Institute for Advanced Study, 2013. — 603 p. https://homotopytypetheory.org/book/
- F. William Lawvere, Stephen H. Schanuel. Conceptual Mathematics: A First Introduction to Categories. Cambridge University Press — 1997. — 374 p.
- А. П. Ершов. Введение в теоретическое программирование: беседы о методе. М.: Наука, 1977. 288 С.
- А. А. Марков, Н. М. Нагорный. Теория алгорифмов. М.: Наука, 1984. 432 С.